Mercurial > kallithea
annotate rhodecode/tests/api/api_base.py @ 3809:647fb653048e beta
make the password optional in API calls
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Mon, 06 May 2013 23:35:29 +0200 |
parents | 2feb58495f34 |
children | dc4644865e8b |
rev | line source |
---|---|
2529
40b3a54391f9
Added functional test create repo with a group
Marcin Kuzminski <marcin@python-works.com>
parents:
2526
diff
changeset
|
1 from __future__ import with_statement |
2526 | 2 import random |
3 import mock | |
4 | |
5 from rhodecode.tests import * | |
3647
8a86836fad64
more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents:
3502
diff
changeset
|
6 from rhodecode.tests.fixture import Fixture |
2526 | 7 from rhodecode.lib.compat import json |
8 from rhodecode.lib.auth import AuthUser | |
9 from rhodecode.model.user import UserModel | |
3417
fa6ba6727475
further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents:
3415
diff
changeset
|
10 from rhodecode.model.users_group import UserGroupModel |
2526 | 11 from rhodecode.model.repo import RepoModel |
2529
40b3a54391f9
Added functional test create repo with a group
Marcin Kuzminski <marcin@python-works.com>
parents:
2526
diff
changeset
|
12 from rhodecode.model.meta import Session |
2697
4565e655ea2a
API: Added option to rescann repositories via api call
Marcin Kuzminski <marcin@python-works.com>
parents:
2673
diff
changeset
|
13 from rhodecode.model.scm import ScmModel |
3803
e2ebd8808351
fixed broken API tests after excluding default user
Marcin Kuzminski <marcin@python-works.com>
parents:
3774
diff
changeset
|
14 from rhodecode.model.db import Repository, User |
3808
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3803
diff
changeset
|
15 from rhodecode.lib.utils2 import time_to_datetime |
2526 | 16 |
3647
8a86836fad64
more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents:
3502
diff
changeset
|
17 |
2526 | 18 API_URL = '/_admin/api' |
3647
8a86836fad64
more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents:
3502
diff
changeset
|
19 TEST_USER_GROUP = 'test_users_group' |
8a86836fad64
more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents:
3502
diff
changeset
|
20 |
8a86836fad64
more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents:
3502
diff
changeset
|
21 fixture = Fixture() |
2526 | 22 |
23 | |
24 def _build_data(apikey, method, **kw): | |
25 """ | |
26 Builds API data with given random ID | |
27 | |
28 :param random_id: | |
29 :type random_id: | |
30 """ | |
31 random_id = random.randrange(1, 9999) | |
32 return random_id, json.dumps({ | |
33 "id": random_id, | |
34 "api_key": apikey, | |
35 "method": method, | |
36 "args": kw | |
37 }) | |
38 | |
39 jsonify = lambda obj: json.loads(json.dumps(obj)) | |
40 | |
41 | |
42 def crash(*args, **kwargs): | |
43 raise Exception('Total Crash !') | |
44 | |
45 | |
2738 | 46 def api_call(test_obj, params): |
47 response = test_obj.app.post(API_URL, content_type='application/json', | |
48 params=params) | |
49 return response | |
50 | |
51 | |
3647
8a86836fad64
more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents:
3502
diff
changeset
|
52 ## helpers |
3417
fa6ba6727475
further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents:
3415
diff
changeset
|
53 def make_users_group(name=TEST_USER_GROUP): |
3714
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3647
diff
changeset
|
54 gr = fixture.create_user_group(name, cur_user=TEST_USER_ADMIN_LOGIN) |
3417
fa6ba6727475
further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents:
3415
diff
changeset
|
55 UserGroupModel().add_user_to_group(users_group=gr, |
3714
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3647
diff
changeset
|
56 user=TEST_USER_ADMIN_LOGIN) |
2526 | 57 Session().commit() |
58 return gr | |
59 | |
60 | |
3417
fa6ba6727475
further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents:
3415
diff
changeset
|
61 def destroy_users_group(name=TEST_USER_GROUP): |
fa6ba6727475
further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents:
3415
diff
changeset
|
62 UserGroupModel().delete(users_group=name, force=True) |
2526 | 63 Session().commit() |
64 | |
65 | |
66 class BaseTestApi(object): | |
67 REPO = None | |
68 REPO_TYPE = None | |
69 | |
70 @classmethod | |
71 def setUpClass(self): | |
72 self.usr = UserModel().get_by_username(TEST_USER_ADMIN_LOGIN) | |
73 self.apikey = self.usr.api_key | |
3163
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
74 self.test_user = UserModel().create_or_update( |
2526 | 75 username='test-api', |
76 password='test', | |
77 email='test@api.rhodecode.org', | |
78 firstname='first', | |
79 lastname='last' | |
80 ) | |
81 Session().commit() | |
3163
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
82 self.TEST_USER_LOGIN = self.test_user.username |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
83 self.apikey_regular = self.test_user.api_key |
2526 | 84 |
85 @classmethod | |
86 def teardownClass(self): | |
87 pass | |
88 | |
89 def setUp(self): | |
90 self.maxDiff = None | |
91 make_users_group() | |
92 | |
93 def tearDown(self): | |
94 destroy_users_group() | |
95 | |
96 def _compare_ok(self, id_, expected, given): | |
97 expected = jsonify({ | |
98 'id': id_, | |
99 'error': None, | |
100 'result': expected | |
101 }) | |
102 given = json.loads(given) | |
103 self.assertEqual(expected, given) | |
104 | |
105 def _compare_error(self, id_, expected, given): | |
106 expected = jsonify({ | |
107 'id': id_, | |
108 'error': expected, | |
109 'result': None | |
110 }) | |
111 given = json.loads(given) | |
112 self.assertEqual(expected, given) | |
113 | |
114 # def test_Optional(self): | |
115 # from rhodecode.controllers.api.api import Optional | |
116 # option1 = Optional(None) | |
117 # self.assertEqual('<Optional:%s>' % None, repr(option1)) | |
118 # | |
119 # self.assertEqual(1, Optional.extract(Optional(1))) | |
120 # self.assertEqual('trololo', Optional.extract('trololo')) | |
121 | |
122 def test_api_wrong_key(self): | |
123 id_, params = _build_data('trololo', 'get_user') | |
2738 | 124 response = api_call(self, params) |
2526 | 125 |
126 expected = 'Invalid API KEY' | |
127 self._compare_error(id_, expected, given=response.body) | |
128 | |
129 def test_api_missing_non_optional_param(self): | |
3163
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
130 id_, params = _build_data(self.apikey, 'get_repo') |
2738 | 131 response = api_call(self, params) |
2526 | 132 |
3163
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
133 expected = 'Missing non optional `repoid` arg in JSON DATA' |
2526 | 134 self._compare_error(id_, expected, given=response.body) |
135 | |
3165
e1baadec6217
fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents:
3163
diff
changeset
|
136 def test_api_missing_non_optional_param_args_null(self): |
e1baadec6217
fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents:
3163
diff
changeset
|
137 id_, params = _build_data(self.apikey, 'get_repo') |
e1baadec6217
fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents:
3163
diff
changeset
|
138 params = params.replace('"args": {}', '"args": null') |
e1baadec6217
fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents:
3163
diff
changeset
|
139 response = api_call(self, params) |
e1baadec6217
fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents:
3163
diff
changeset
|
140 |
e1baadec6217
fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents:
3163
diff
changeset
|
141 expected = 'Missing non optional `repoid` arg in JSON DATA' |
e1baadec6217
fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents:
3163
diff
changeset
|
142 self._compare_error(id_, expected, given=response.body) |
e1baadec6217
fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents:
3163
diff
changeset
|
143 |
e1baadec6217
fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents:
3163
diff
changeset
|
144 def test_api_missing_non_optional_param_args_bad(self): |
e1baadec6217
fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents:
3163
diff
changeset
|
145 id_, params = _build_data(self.apikey, 'get_repo') |
e1baadec6217
fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents:
3163
diff
changeset
|
146 params = params.replace('"args": {}', '"args": 1') |
e1baadec6217
fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents:
3163
diff
changeset
|
147 response = api_call(self, params) |
e1baadec6217
fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents:
3163
diff
changeset
|
148 |
e1baadec6217
fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents:
3163
diff
changeset
|
149 expected = 'Missing non optional `repoid` arg in JSON DATA' |
e1baadec6217
fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents:
3163
diff
changeset
|
150 self._compare_error(id_, expected, given=response.body) |
e1baadec6217
fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents:
3163
diff
changeset
|
151 |
e1baadec6217
fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents:
3163
diff
changeset
|
152 def test_api_args_is_null(self): |
e1baadec6217
fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents:
3163
diff
changeset
|
153 id_, params = _build_data(self.apikey, 'get_users',) |
e1baadec6217
fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents:
3163
diff
changeset
|
154 params = params.replace('"args": {}', '"args": null') |
e1baadec6217
fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents:
3163
diff
changeset
|
155 response = api_call(self, params) |
e1baadec6217
fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents:
3163
diff
changeset
|
156 self.assertEqual(response.status, '200 OK') |
e1baadec6217
fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents:
3163
diff
changeset
|
157 |
e1baadec6217
fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents:
3163
diff
changeset
|
158 def test_api_args_is_bad(self): |
e1baadec6217
fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents:
3163
diff
changeset
|
159 id_, params = _build_data(self.apikey, 'get_users',) |
e1baadec6217
fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents:
3163
diff
changeset
|
160 params = params.replace('"args": {}', '"args": 1') |
e1baadec6217
fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents:
3163
diff
changeset
|
161 response = api_call(self, params) |
e1baadec6217
fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents:
3163
diff
changeset
|
162 self.assertEqual(response.status, '200 OK') |
e1baadec6217
fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents:
3163
diff
changeset
|
163 |
2526 | 164 def test_api_get_users(self): |
165 id_, params = _build_data(self.apikey, 'get_users',) | |
2738 | 166 response = api_call(self, params) |
2526 | 167 ret_all = [] |
3803
e2ebd8808351
fixed broken API tests after excluding default user
Marcin Kuzminski <marcin@python-works.com>
parents:
3774
diff
changeset
|
168 _users = User.query().filter(User.username != User.DEFAULT_USER)\ |
e2ebd8808351
fixed broken API tests after excluding default user
Marcin Kuzminski <marcin@python-works.com>
parents:
3774
diff
changeset
|
169 .order_by(User.username).all() |
e2ebd8808351
fixed broken API tests after excluding default user
Marcin Kuzminski <marcin@python-works.com>
parents:
3774
diff
changeset
|
170 for usr in _users: |
2526 | 171 ret = usr.get_api_data() |
172 ret_all.append(jsonify(ret)) | |
173 expected = ret_all | |
174 self._compare_ok(id_, expected, given=response.body) | |
175 | |
176 def test_api_get_user(self): | |
177 id_, params = _build_data(self.apikey, 'get_user', | |
178 userid=TEST_USER_ADMIN_LOGIN) | |
2738 | 179 response = api_call(self, params) |
2526 | 180 |
181 usr = UserModel().get_by_username(TEST_USER_ADMIN_LOGIN) | |
182 ret = usr.get_api_data() | |
183 ret['permissions'] = AuthUser(usr.user_id).permissions | |
184 | |
185 expected = ret | |
186 self._compare_ok(id_, expected, given=response.body) | |
187 | |
188 def test_api_get_user_that_does_not_exist(self): | |
189 id_, params = _build_data(self.apikey, 'get_user', | |
190 userid='trololo') | |
2738 | 191 response = api_call(self, params) |
2526 | 192 |
193 expected = "user `%s` does not exist" % 'trololo' | |
194 self._compare_error(id_, expected, given=response.body) | |
195 | |
3163
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
196 def test_api_get_user_without_giving_userid(self): |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
197 id_, params = _build_data(self.apikey, 'get_user') |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
198 response = api_call(self, params) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
199 |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
200 usr = UserModel().get_by_username(TEST_USER_ADMIN_LOGIN) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
201 ret = usr.get_api_data() |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
202 ret['permissions'] = AuthUser(usr.user_id).permissions |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
203 |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
204 expected = ret |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
205 self._compare_ok(id_, expected, given=response.body) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
206 |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
207 def test_api_get_user_without_giving_userid_non_admin(self): |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
208 id_, params = _build_data(self.apikey_regular, 'get_user') |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
209 response = api_call(self, params) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
210 |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
211 usr = UserModel().get_by_username(self.TEST_USER_LOGIN) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
212 ret = usr.get_api_data() |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
213 ret['permissions'] = AuthUser(usr.user_id).permissions |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
214 |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
215 expected = ret |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
216 self._compare_ok(id_, expected, given=response.body) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
217 |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
218 def test_api_get_user_with_giving_userid_non_admin(self): |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
219 id_, params = _build_data(self.apikey_regular, 'get_user', |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
220 userid=self.TEST_USER_LOGIN) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
221 response = api_call(self, params) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
222 |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
223 expected = 'userid is not the same as your user' |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
224 self._compare_error(id_, expected, given=response.body) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
225 |
2526 | 226 def test_api_pull(self): |
227 #TODO: issues with rhodecode_extras here.. not sure why ! | |
228 pass | |
229 | |
230 # repo_name = 'test_pull' | |
3647
8a86836fad64
more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents:
3502
diff
changeset
|
231 # r = fixture.create_repo(repo_name, repo_type=self.REPO_TYPE) |
2526 | 232 # r.clone_uri = TEST_self.REPO |
233 # Session.add(r) | |
234 # Session.commit() | |
235 # | |
236 # id_, params = _build_data(self.apikey, 'pull', | |
237 # repoid=repo_name,) | |
238 # response = self.app.post(API_URL, content_type='application/json', | |
239 # params=params) | |
240 # | |
241 # expected = 'Pulled from `%s`' % repo_name | |
242 # self._compare_ok(id_, expected, given=response.body) | |
243 # | |
3647
8a86836fad64
more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents:
3502
diff
changeset
|
244 # fixture.destroy_repo(repo_name) |
2526 | 245 |
246 def test_api_pull_error(self): | |
247 id_, params = _build_data(self.apikey, 'pull', | |
248 repoid=self.REPO,) | |
2738 | 249 response = api_call(self, params) |
2526 | 250 |
251 expected = 'Unable to pull changes from `%s`' % self.REPO | |
252 self._compare_error(id_, expected, given=response.body) | |
253 | |
2697
4565e655ea2a
API: Added option to rescann repositories via api call
Marcin Kuzminski <marcin@python-works.com>
parents:
2673
diff
changeset
|
254 def test_api_rescan_repos(self): |
4565e655ea2a
API: Added option to rescann repositories via api call
Marcin Kuzminski <marcin@python-works.com>
parents:
2673
diff
changeset
|
255 id_, params = _build_data(self.apikey, 'rescan_repos') |
2738 | 256 response = api_call(self, params) |
2697
4565e655ea2a
API: Added option to rescann repositories via api call
Marcin Kuzminski <marcin@python-works.com>
parents:
2673
diff
changeset
|
257 |
4565e655ea2a
API: Added option to rescann repositories via api call
Marcin Kuzminski <marcin@python-works.com>
parents:
2673
diff
changeset
|
258 expected = {'added': [], 'removed': []} |
4565e655ea2a
API: Added option to rescann repositories via api call
Marcin Kuzminski <marcin@python-works.com>
parents:
2673
diff
changeset
|
259 self._compare_ok(id_, expected, given=response.body) |
4565e655ea2a
API: Added option to rescann repositories via api call
Marcin Kuzminski <marcin@python-works.com>
parents:
2673
diff
changeset
|
260 |
4565e655ea2a
API: Added option to rescann repositories via api call
Marcin Kuzminski <marcin@python-works.com>
parents:
2673
diff
changeset
|
261 @mock.patch.object(ScmModel, 'repo_scan', crash) |
4565e655ea2a
API: Added option to rescann repositories via api call
Marcin Kuzminski <marcin@python-works.com>
parents:
2673
diff
changeset
|
262 def test_api_rescann_error(self): |
4565e655ea2a
API: Added option to rescann repositories via api call
Marcin Kuzminski <marcin@python-works.com>
parents:
2673
diff
changeset
|
263 id_, params = _build_data(self.apikey, 'rescan_repos',) |
2738 | 264 response = api_call(self, params) |
2697
4565e655ea2a
API: Added option to rescann repositories via api call
Marcin Kuzminski <marcin@python-works.com>
parents:
2673
diff
changeset
|
265 |
2737
e21cb7b1a4a5
added API call for locking/unlocking repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
2697
diff
changeset
|
266 expected = 'Error occurred during rescan repositories action' |
e21cb7b1a4a5
added API call for locking/unlocking repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
2697
diff
changeset
|
267 self._compare_error(id_, expected, given=response.body) |
e21cb7b1a4a5
added API call for locking/unlocking repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
2697
diff
changeset
|
268 |
3235
d6029dacbcc4
API invalidate_cache function ref #733
Marcin Kuzminski <marcin@python-works.com>
parents:
3216
diff
changeset
|
269 def test_api_invalidate_cache(self): |
3774
60335b702a00
invalidation: don't create CacheInvalidation records on startup
Mads Kiilerich <madski@unity3d.com>
parents:
3759
diff
changeset
|
270 repo = RepoModel().get_by_repo_name(self.REPO) |
60335b702a00
invalidation: don't create CacheInvalidation records on startup
Mads Kiilerich <madski@unity3d.com>
parents:
3759
diff
changeset
|
271 repo.scm_instance_cached() # seed cache |
60335b702a00
invalidation: don't create CacheInvalidation records on startup
Mads Kiilerich <madski@unity3d.com>
parents:
3759
diff
changeset
|
272 |
3235
d6029dacbcc4
API invalidate_cache function ref #733
Marcin Kuzminski <marcin@python-works.com>
parents:
3216
diff
changeset
|
273 id_, params = _build_data(self.apikey, 'invalidate_cache', |
d6029dacbcc4
API invalidate_cache function ref #733
Marcin Kuzminski <marcin@python-works.com>
parents:
3216
diff
changeset
|
274 repoid=self.REPO) |
d6029dacbcc4
API invalidate_cache function ref #733
Marcin Kuzminski <marcin@python-works.com>
parents:
3216
diff
changeset
|
275 response = api_call(self, params) |
d6029dacbcc4
API invalidate_cache function ref #733
Marcin Kuzminski <marcin@python-works.com>
parents:
3216
diff
changeset
|
276 |
3759
12ca667b69b6
api: don't report invalidated cache_keys after invalidating a repo
Mads Kiilerich <madski@unity3d.com>
parents:
3714
diff
changeset
|
277 expected = ("Caches of repository `%s` was invalidated" % (self.REPO)) |
3235
d6029dacbcc4
API invalidate_cache function ref #733
Marcin Kuzminski <marcin@python-works.com>
parents:
3216
diff
changeset
|
278 self._compare_ok(id_, expected, given=response.body) |
d6029dacbcc4
API invalidate_cache function ref #733
Marcin Kuzminski <marcin@python-works.com>
parents:
3216
diff
changeset
|
279 |
d6029dacbcc4
API invalidate_cache function ref #733
Marcin Kuzminski <marcin@python-works.com>
parents:
3216
diff
changeset
|
280 @mock.patch.object(ScmModel, 'mark_for_invalidation', crash) |
d6029dacbcc4
API invalidate_cache function ref #733
Marcin Kuzminski <marcin@python-works.com>
parents:
3216
diff
changeset
|
281 def test_api_invalidate_cache_error(self): |
d6029dacbcc4
API invalidate_cache function ref #733
Marcin Kuzminski <marcin@python-works.com>
parents:
3216
diff
changeset
|
282 id_, params = _build_data(self.apikey, 'invalidate_cache', |
d6029dacbcc4
API invalidate_cache function ref #733
Marcin Kuzminski <marcin@python-works.com>
parents:
3216
diff
changeset
|
283 repoid=self.REPO) |
d6029dacbcc4
API invalidate_cache function ref #733
Marcin Kuzminski <marcin@python-works.com>
parents:
3216
diff
changeset
|
284 response = api_call(self, params) |
d6029dacbcc4
API invalidate_cache function ref #733
Marcin Kuzminski <marcin@python-works.com>
parents:
3216
diff
changeset
|
285 |
d6029dacbcc4
API invalidate_cache function ref #733
Marcin Kuzminski <marcin@python-works.com>
parents:
3216
diff
changeset
|
286 expected = 'Error occurred during cache invalidation action' |
d6029dacbcc4
API invalidate_cache function ref #733
Marcin Kuzminski <marcin@python-works.com>
parents:
3216
diff
changeset
|
287 self._compare_error(id_, expected, given=response.body) |
d6029dacbcc4
API invalidate_cache function ref #733
Marcin Kuzminski <marcin@python-works.com>
parents:
3216
diff
changeset
|
288 |
2737
e21cb7b1a4a5
added API call for locking/unlocking repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
2697
diff
changeset
|
289 def test_api_lock_repo_lock_aquire(self): |
e21cb7b1a4a5
added API call for locking/unlocking repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
2697
diff
changeset
|
290 id_, params = _build_data(self.apikey, 'lock', |
e21cb7b1a4a5
added API call for locking/unlocking repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
2697
diff
changeset
|
291 userid=TEST_USER_ADMIN_LOGIN, |
e21cb7b1a4a5
added API call for locking/unlocking repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
2697
diff
changeset
|
292 repoid=self.REPO, |
e21cb7b1a4a5
added API call for locking/unlocking repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
2697
diff
changeset
|
293 locked=True) |
2738 | 294 response = api_call(self, params) |
3808
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3803
diff
changeset
|
295 expected = { |
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3803
diff
changeset
|
296 'repo': self.REPO, |
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3803
diff
changeset
|
297 'locked': True, |
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3803
diff
changeset
|
298 'locked_since': None, |
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3803
diff
changeset
|
299 'locked_by': TEST_USER_ADMIN_LOGIN, |
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3803
diff
changeset
|
300 'msg': ('User `%s` set lock state for repo `%s` to `%s`' |
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3803
diff
changeset
|
301 % (TEST_USER_ADMIN_LOGIN, self.REPO, True)) |
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3803
diff
changeset
|
302 } |
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3803
diff
changeset
|
303 expected['locked_since'] = json.loads(response.body)['result']['locked_since'] |
2737
e21cb7b1a4a5
added API call for locking/unlocking repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
2697
diff
changeset
|
304 self._compare_ok(id_, expected, given=response.body) |
e21cb7b1a4a5
added API call for locking/unlocking repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
2697
diff
changeset
|
305 |
3163
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
306 def test_api_lock_repo_lock_aquire_by_non_admin(self): |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
307 repo_name = 'api_delete_me' |
3647
8a86836fad64
more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents:
3502
diff
changeset
|
308 fixture.create_repo(repo_name, repo_type=self.REPO_TYPE, |
8a86836fad64
more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents:
3502
diff
changeset
|
309 cur_user=self.TEST_USER_LOGIN) |
3163
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
310 try: |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
311 id_, params = _build_data(self.apikey_regular, 'lock', |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
312 repoid=repo_name, |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
313 locked=True) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
314 response = api_call(self, params) |
3808
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3803
diff
changeset
|
315 expected = { |
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3803
diff
changeset
|
316 'repo': repo_name, |
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3803
diff
changeset
|
317 'locked': True, |
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3803
diff
changeset
|
318 'locked_since': None, |
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3803
diff
changeset
|
319 'locked_by': self.TEST_USER_LOGIN, |
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3803
diff
changeset
|
320 'msg': ('User `%s` set lock state for repo `%s` to `%s`' |
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3803
diff
changeset
|
321 % (self.TEST_USER_LOGIN, repo_name, True)) |
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3803
diff
changeset
|
322 } |
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3803
diff
changeset
|
323 expected['locked_since'] = json.loads(response.body)['result']['locked_since'] |
3163
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
324 self._compare_ok(id_, expected, given=response.body) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
325 finally: |
3647
8a86836fad64
more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents:
3502
diff
changeset
|
326 fixture.destroy_repo(repo_name) |
3163
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
327 |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
328 def test_api_lock_repo_lock_aquire_non_admin_with_userid(self): |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
329 repo_name = 'api_delete_me' |
3647
8a86836fad64
more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents:
3502
diff
changeset
|
330 fixture.create_repo(repo_name, repo_type=self.REPO_TYPE, |
8a86836fad64
more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents:
3502
diff
changeset
|
331 cur_user=self.TEST_USER_LOGIN) |
3163
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
332 try: |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
333 id_, params = _build_data(self.apikey_regular, 'lock', |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
334 userid=TEST_USER_ADMIN_LOGIN, |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
335 repoid=repo_name, |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
336 locked=True) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
337 response = api_call(self, params) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
338 expected = 'userid is not the same as your user' |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
339 self._compare_error(id_, expected, given=response.body) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
340 finally: |
3647
8a86836fad64
more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents:
3502
diff
changeset
|
341 fixture.destroy_repo(repo_name) |
3163
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
342 |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
343 def test_api_lock_repo_lock_aquire_non_admin_not_his_repo(self): |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
344 id_, params = _build_data(self.apikey_regular, 'lock', |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
345 repoid=self.REPO, |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
346 locked=True) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
347 response = api_call(self, params) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
348 expected = 'repository `%s` does not exist' % (self.REPO) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
349 self._compare_error(id_, expected, given=response.body) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
350 |
2737
e21cb7b1a4a5
added API call for locking/unlocking repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
2697
diff
changeset
|
351 def test_api_lock_repo_lock_release(self): |
e21cb7b1a4a5
added API call for locking/unlocking repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
2697
diff
changeset
|
352 id_, params = _build_data(self.apikey, 'lock', |
e21cb7b1a4a5
added API call for locking/unlocking repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
2697
diff
changeset
|
353 userid=TEST_USER_ADMIN_LOGIN, |
e21cb7b1a4a5
added API call for locking/unlocking repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
2697
diff
changeset
|
354 repoid=self.REPO, |
e21cb7b1a4a5
added API call for locking/unlocking repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
2697
diff
changeset
|
355 locked=False) |
2738 | 356 response = api_call(self, params) |
3808
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3803
diff
changeset
|
357 expected = { |
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3803
diff
changeset
|
358 'repo': self.REPO, |
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3803
diff
changeset
|
359 'locked': False, |
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3803
diff
changeset
|
360 'locked_since': None, |
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3803
diff
changeset
|
361 'locked_by': TEST_USER_ADMIN_LOGIN, |
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3803
diff
changeset
|
362 'msg': ('User `%s` set lock state for repo `%s` to `%s`' |
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3803
diff
changeset
|
363 % (TEST_USER_ADMIN_LOGIN, self.REPO, False)) |
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3803
diff
changeset
|
364 } |
2737
e21cb7b1a4a5
added API call for locking/unlocking repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
2697
diff
changeset
|
365 self._compare_ok(id_, expected, given=response.body) |
e21cb7b1a4a5
added API call for locking/unlocking repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
2697
diff
changeset
|
366 |
3161
3563c47e52fd
Implemented API calls for non-admin users for locking/unlocking repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
3056
diff
changeset
|
367 def test_api_lock_repo_lock_aquire_optional_userid(self): |
3563c47e52fd
Implemented API calls for non-admin users for locking/unlocking repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
3056
diff
changeset
|
368 id_, params = _build_data(self.apikey, 'lock', |
3563c47e52fd
Implemented API calls for non-admin users for locking/unlocking repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
3056
diff
changeset
|
369 repoid=self.REPO, |
3563c47e52fd
Implemented API calls for non-admin users for locking/unlocking repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
3056
diff
changeset
|
370 locked=True) |
3563c47e52fd
Implemented API calls for non-admin users for locking/unlocking repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
3056
diff
changeset
|
371 response = api_call(self, params) |
3808
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3803
diff
changeset
|
372 expected = { |
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3803
diff
changeset
|
373 'repo': self.REPO, |
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3803
diff
changeset
|
374 'locked': True, |
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3803
diff
changeset
|
375 'locked_since': None, |
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3803
diff
changeset
|
376 'locked_by': TEST_USER_ADMIN_LOGIN, |
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3803
diff
changeset
|
377 'msg': ('User `%s` set lock state for repo `%s` to `%s`' |
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3803
diff
changeset
|
378 % (TEST_USER_ADMIN_LOGIN, self.REPO, True)) |
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3803
diff
changeset
|
379 } |
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3803
diff
changeset
|
380 expected['locked_since'] = json.loads(response.body)['result']['locked_since'] |
3161
3563c47e52fd
Implemented API calls for non-admin users for locking/unlocking repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
3056
diff
changeset
|
381 self._compare_ok(id_, expected, given=response.body) |
3563c47e52fd
Implemented API calls for non-admin users for locking/unlocking repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
3056
diff
changeset
|
382 |
3457
08e8115585bd
calling lock function without lock attribute, will return lock state
Marcin Kuzminski <marcin@python-works.com>
parents:
3417
diff
changeset
|
383 def test_api_lock_repo_lock_optional_locked(self): |
08e8115585bd
calling lock function without lock attribute, will return lock state
Marcin Kuzminski <marcin@python-works.com>
parents:
3417
diff
changeset
|
384 id_, params = _build_data(self.apikey, 'lock', |
08e8115585bd
calling lock function without lock attribute, will return lock state
Marcin Kuzminski <marcin@python-works.com>
parents:
3417
diff
changeset
|
385 repoid=self.REPO) |
08e8115585bd
calling lock function without lock attribute, will return lock state
Marcin Kuzminski <marcin@python-works.com>
parents:
3417
diff
changeset
|
386 response = api_call(self, params) |
3808
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3803
diff
changeset
|
387 time_ = json.loads(response.body)['result']['locked_since'] |
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3803
diff
changeset
|
388 expected = { |
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3803
diff
changeset
|
389 'repo': self.REPO, |
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3803
diff
changeset
|
390 'locked': True, |
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3803
diff
changeset
|
391 'locked_since': None, |
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3803
diff
changeset
|
392 'locked_by': TEST_USER_ADMIN_LOGIN, |
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3803
diff
changeset
|
393 'msg': ('Repo `%s` locked by `%s`. ' |
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3803
diff
changeset
|
394 % (self.REPO, |
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3803
diff
changeset
|
395 json.dumps(time_to_datetime(time_)))) |
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3803
diff
changeset
|
396 |
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3803
diff
changeset
|
397 } |
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3803
diff
changeset
|
398 expected['locked_since'] = time_ |
3457
08e8115585bd
calling lock function without lock attribute, will return lock state
Marcin Kuzminski <marcin@python-works.com>
parents:
3417
diff
changeset
|
399 self._compare_ok(id_, expected, given=response.body) |
08e8115585bd
calling lock function without lock attribute, will return lock state
Marcin Kuzminski <marcin@python-works.com>
parents:
3417
diff
changeset
|
400 |
2737
e21cb7b1a4a5
added API call for locking/unlocking repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
2697
diff
changeset
|
401 @mock.patch.object(Repository, 'lock', crash) |
e21cb7b1a4a5
added API call for locking/unlocking repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
2697
diff
changeset
|
402 def test_api_lock_error(self): |
e21cb7b1a4a5
added API call for locking/unlocking repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
2697
diff
changeset
|
403 id_, params = _build_data(self.apikey, 'lock', |
e21cb7b1a4a5
added API call for locking/unlocking repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
2697
diff
changeset
|
404 userid=TEST_USER_ADMIN_LOGIN, |
e21cb7b1a4a5
added API call for locking/unlocking repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
2697
diff
changeset
|
405 repoid=self.REPO, |
e21cb7b1a4a5
added API call for locking/unlocking repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
2697
diff
changeset
|
406 locked=True) |
2738 | 407 response = api_call(self, params) |
2737
e21cb7b1a4a5
added API call for locking/unlocking repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
2697
diff
changeset
|
408 |
e21cb7b1a4a5
added API call for locking/unlocking repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
2697
diff
changeset
|
409 expected = 'Error occurred locking repository `%s`' % self.REPO |
2697
4565e655ea2a
API: Added option to rescann repositories via api call
Marcin Kuzminski <marcin@python-works.com>
parents:
2673
diff
changeset
|
410 self._compare_error(id_, expected, given=response.body) |
4565e655ea2a
API: Added option to rescann repositories via api call
Marcin Kuzminski <marcin@python-works.com>
parents:
2673
diff
changeset
|
411 |
3502
7cde75eac0fe
get_locks API function draft
Marcin Kuzminski <marcin@python-works.com>
parents:
3457
diff
changeset
|
412 def test_api_get_locks_regular_user(self): |
7cde75eac0fe
get_locks API function draft
Marcin Kuzminski <marcin@python-works.com>
parents:
3457
diff
changeset
|
413 id_, params = _build_data(self.apikey_regular, 'get_locks') |
7cde75eac0fe
get_locks API function draft
Marcin Kuzminski <marcin@python-works.com>
parents:
3457
diff
changeset
|
414 response = api_call(self, params) |
7cde75eac0fe
get_locks API function draft
Marcin Kuzminski <marcin@python-works.com>
parents:
3457
diff
changeset
|
415 expected = [] |
7cde75eac0fe
get_locks API function draft
Marcin Kuzminski <marcin@python-works.com>
parents:
3457
diff
changeset
|
416 self._compare_ok(id_, expected, given=response.body) |
7cde75eac0fe
get_locks API function draft
Marcin Kuzminski <marcin@python-works.com>
parents:
3457
diff
changeset
|
417 |
7cde75eac0fe
get_locks API function draft
Marcin Kuzminski <marcin@python-works.com>
parents:
3457
diff
changeset
|
418 def test_api_get_locks_with_userid_regular_user(self): |
7cde75eac0fe
get_locks API function draft
Marcin Kuzminski <marcin@python-works.com>
parents:
3457
diff
changeset
|
419 id_, params = _build_data(self.apikey_regular, 'get_locks', |
7cde75eac0fe
get_locks API function draft
Marcin Kuzminski <marcin@python-works.com>
parents:
3457
diff
changeset
|
420 userid=TEST_USER_ADMIN_LOGIN) |
7cde75eac0fe
get_locks API function draft
Marcin Kuzminski <marcin@python-works.com>
parents:
3457
diff
changeset
|
421 response = api_call(self, params) |
7cde75eac0fe
get_locks API function draft
Marcin Kuzminski <marcin@python-works.com>
parents:
3457
diff
changeset
|
422 expected = 'userid is not the same as your user' |
7cde75eac0fe
get_locks API function draft
Marcin Kuzminski <marcin@python-works.com>
parents:
3457
diff
changeset
|
423 self._compare_error(id_, expected, given=response.body) |
7cde75eac0fe
get_locks API function draft
Marcin Kuzminski <marcin@python-works.com>
parents:
3457
diff
changeset
|
424 |
7cde75eac0fe
get_locks API function draft
Marcin Kuzminski <marcin@python-works.com>
parents:
3457
diff
changeset
|
425 def test_api_get_locks(self): |
7cde75eac0fe
get_locks API function draft
Marcin Kuzminski <marcin@python-works.com>
parents:
3457
diff
changeset
|
426 id_, params = _build_data(self.apikey, 'get_locks') |
7cde75eac0fe
get_locks API function draft
Marcin Kuzminski <marcin@python-works.com>
parents:
3457
diff
changeset
|
427 response = api_call(self, params) |
7cde75eac0fe
get_locks API function draft
Marcin Kuzminski <marcin@python-works.com>
parents:
3457
diff
changeset
|
428 expected = [] |
7cde75eac0fe
get_locks API function draft
Marcin Kuzminski <marcin@python-works.com>
parents:
3457
diff
changeset
|
429 self._compare_ok(id_, expected, given=response.body) |
7cde75eac0fe
get_locks API function draft
Marcin Kuzminski <marcin@python-works.com>
parents:
3457
diff
changeset
|
430 |
7cde75eac0fe
get_locks API function draft
Marcin Kuzminski <marcin@python-works.com>
parents:
3457
diff
changeset
|
431 def test_api_get_locks_with_userid(self): |
7cde75eac0fe
get_locks API function draft
Marcin Kuzminski <marcin@python-works.com>
parents:
3457
diff
changeset
|
432 id_, params = _build_data(self.apikey, 'get_locks', |
7cde75eac0fe
get_locks API function draft
Marcin Kuzminski <marcin@python-works.com>
parents:
3457
diff
changeset
|
433 userid=TEST_USER_REGULAR_LOGIN) |
7cde75eac0fe
get_locks API function draft
Marcin Kuzminski <marcin@python-works.com>
parents:
3457
diff
changeset
|
434 response = api_call(self, params) |
7cde75eac0fe
get_locks API function draft
Marcin Kuzminski <marcin@python-works.com>
parents:
3457
diff
changeset
|
435 expected = [] |
7cde75eac0fe
get_locks API function draft
Marcin Kuzminski <marcin@python-works.com>
parents:
3457
diff
changeset
|
436 self._compare_ok(id_, expected, given=response.body) |
7cde75eac0fe
get_locks API function draft
Marcin Kuzminski <marcin@python-works.com>
parents:
3457
diff
changeset
|
437 |
2526 | 438 def test_api_create_existing_user(self): |
439 id_, params = _build_data(self.apikey, 'create_user', | |
440 username=TEST_USER_ADMIN_LOGIN, | |
441 email='test@foo.com', | |
442 password='trololo') | |
2738 | 443 response = api_call(self, params) |
2526 | 444 |
445 expected = "user `%s` already exist" % TEST_USER_ADMIN_LOGIN | |
446 self._compare_error(id_, expected, given=response.body) | |
447 | |
448 def test_api_create_user_with_existing_email(self): | |
449 id_, params = _build_data(self.apikey, 'create_user', | |
450 username=TEST_USER_ADMIN_LOGIN + 'new', | |
451 email=TEST_USER_REGULAR_EMAIL, | |
452 password='trololo') | |
2738 | 453 response = api_call(self, params) |
2526 | 454 |
455 expected = "email `%s` already exist" % TEST_USER_REGULAR_EMAIL | |
456 self._compare_error(id_, expected, given=response.body) | |
457 | |
458 def test_api_create_user(self): | |
459 username = 'test_new_api_user' | |
460 email = username + "@foo.com" | |
461 | |
462 id_, params = _build_data(self.apikey, 'create_user', | |
463 username=username, | |
464 email=email, | |
465 password='trololo') | |
2738 | 466 response = api_call(self, params) |
2526 | 467 |
468 usr = UserModel().get_by_username(username) | |
469 ret = dict( | |
470 msg='created new user `%s`' % username, | |
471 user=jsonify(usr.get_api_data()) | |
472 ) | |
473 | |
474 expected = ret | |
475 self._compare_ok(id_, expected, given=response.body) | |
476 | |
477 UserModel().delete(usr.user_id) | |
2738 | 478 Session().commit() |
2526 | 479 |
3809
647fb653048e
make the password optional in API calls
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
480 def test_api_create_user_without_password(self): |
647fb653048e
make the password optional in API calls
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
481 username = 'test_new_api_user_passwordless' |
647fb653048e
make the password optional in API calls
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
482 email = username + "@foo.com" |
647fb653048e
make the password optional in API calls
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
483 |
647fb653048e
make the password optional in API calls
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
484 id_, params = _build_data(self.apikey, 'create_user', |
647fb653048e
make the password optional in API calls
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
485 username=username, |
647fb653048e
make the password optional in API calls
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
486 email=email) |
647fb653048e
make the password optional in API calls
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
487 response = api_call(self, params) |
647fb653048e
make the password optional in API calls
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
488 |
647fb653048e
make the password optional in API calls
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
489 usr = UserModel().get_by_username(username) |
647fb653048e
make the password optional in API calls
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
490 ret = dict( |
647fb653048e
make the password optional in API calls
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
491 msg='created new user `%s`' % username, |
647fb653048e
make the password optional in API calls
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
492 user=jsonify(usr.get_api_data()) |
647fb653048e
make the password optional in API calls
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
493 ) |
647fb653048e
make the password optional in API calls
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
494 |
647fb653048e
make the password optional in API calls
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
495 expected = ret |
647fb653048e
make the password optional in API calls
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
496 self._compare_ok(id_, expected, given=response.body) |
647fb653048e
make the password optional in API calls
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
497 |
647fb653048e
make the password optional in API calls
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
498 UserModel().delete(usr.user_id) |
647fb653048e
make the password optional in API calls
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
499 Session().commit() |
647fb653048e
make the password optional in API calls
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
500 |
2526 | 501 @mock.patch.object(UserModel, 'create_or_update', crash) |
502 def test_api_create_user_when_exception_happened(self): | |
503 | |
504 username = 'test_new_api_user' | |
505 email = username + "@foo.com" | |
506 | |
507 id_, params = _build_data(self.apikey, 'create_user', | |
508 username=username, | |
509 email=email, | |
510 password='trololo') | |
2738 | 511 response = api_call(self, params) |
2526 | 512 expected = 'failed to create user `%s`' % username |
513 self._compare_error(id_, expected, given=response.body) | |
514 | |
515 def test_api_delete_user(self): | |
516 usr = UserModel().create_or_update(username=u'test_user', | |
517 password=u'qweqwe', | |
518 email=u'u232@rhodecode.org', | |
519 firstname=u'u1', lastname=u'u1') | |
2738 | 520 Session().commit() |
2526 | 521 username = usr.username |
522 email = usr.email | |
523 usr_id = usr.user_id | |
524 ## DELETE THIS USER NOW | |
525 | |
526 id_, params = _build_data(self.apikey, 'delete_user', | |
527 userid=username,) | |
2738 | 528 response = api_call(self, params) |
2526 | 529 |
530 ret = {'msg': 'deleted user ID:%s %s' % (usr_id, username), | |
531 'user': None} | |
532 expected = ret | |
533 self._compare_ok(id_, expected, given=response.body) | |
534 | |
535 @mock.patch.object(UserModel, 'delete', crash) | |
536 def test_api_delete_user_when_exception_happened(self): | |
537 usr = UserModel().create_or_update(username=u'test_user', | |
538 password=u'qweqwe', | |
539 email=u'u232@rhodecode.org', | |
540 firstname=u'u1', lastname=u'u1') | |
2738 | 541 Session().commit() |
2526 | 542 username = usr.username |
543 | |
544 id_, params = _build_data(self.apikey, 'delete_user', | |
545 userid=username,) | |
2738 | 546 response = api_call(self, params) |
2526 | 547 ret = 'failed to delete ID:%s %s' % (usr.user_id, |
548 usr.username) | |
549 expected = ret | |
550 self._compare_error(id_, expected, given=response.body) | |
551 | |
552 @parameterized.expand([('firstname', 'new_username'), | |
553 ('lastname', 'new_username'), | |
554 ('email', 'new_username'), | |
555 ('admin', True), | |
556 ('admin', False), | |
557 ('ldap_dn', 'test'), | |
558 ('ldap_dn', None), | |
559 ('active', False), | |
560 ('active', True), | |
561 ('password', 'newpass') | |
562 ]) | |
563 def test_api_update_user(self, name, expected): | |
564 usr = UserModel().get_by_username(self.TEST_USER_LOGIN) | |
565 kw = {name: expected, | |
566 'userid': usr.user_id} | |
567 id_, params = _build_data(self.apikey, 'update_user', **kw) | |
2738 | 568 response = api_call(self, params) |
2526 | 569 |
570 ret = { | |
571 'msg': 'updated user ID:%s %s' % (usr.user_id, self.TEST_USER_LOGIN), | |
572 'user': jsonify(UserModel()\ | |
573 .get_by_username(self.TEST_USER_LOGIN)\ | |
574 .get_api_data()) | |
575 } | |
576 | |
577 expected = ret | |
578 self._compare_ok(id_, expected, given=response.body) | |
579 | |
580 def test_api_update_user_no_changed_params(self): | |
581 usr = UserModel().get_by_username(TEST_USER_ADMIN_LOGIN) | |
582 ret = jsonify(usr.get_api_data()) | |
583 id_, params = _build_data(self.apikey, 'update_user', | |
584 userid=TEST_USER_ADMIN_LOGIN) | |
585 | |
2738 | 586 response = api_call(self, params) |
2526 | 587 ret = { |
588 'msg': 'updated user ID:%s %s' % (usr.user_id, TEST_USER_ADMIN_LOGIN), | |
589 'user': ret | |
590 } | |
591 expected = ret | |
592 self._compare_ok(id_, expected, given=response.body) | |
593 | |
594 def test_api_update_user_by_user_id(self): | |
595 usr = UserModel().get_by_username(TEST_USER_ADMIN_LOGIN) | |
596 ret = jsonify(usr.get_api_data()) | |
597 id_, params = _build_data(self.apikey, 'update_user', | |
598 userid=usr.user_id) | |
599 | |
2738 | 600 response = api_call(self, params) |
2526 | 601 ret = { |
602 'msg': 'updated user ID:%s %s' % (usr.user_id, TEST_USER_ADMIN_LOGIN), | |
603 'user': ret | |
604 } | |
605 expected = ret | |
606 self._compare_ok(id_, expected, given=response.body) | |
607 | |
2657
001c7e2ae986
fixed api issue with changing username during update_user
Marcin Kuzminski <marcin@python-works.com>
parents:
2653
diff
changeset
|
608 @mock.patch.object(UserModel, 'update_user', crash) |
2526 | 609 def test_api_update_user_when_exception_happens(self): |
610 usr = UserModel().get_by_username(TEST_USER_ADMIN_LOGIN) | |
611 ret = jsonify(usr.get_api_data()) | |
612 id_, params = _build_data(self.apikey, 'update_user', | |
613 userid=usr.user_id) | |
614 | |
2738 | 615 response = api_call(self, params) |
2526 | 616 ret = 'failed to update user `%s`' % usr.user_id |
617 | |
618 expected = ret | |
619 self._compare_error(id_, expected, given=response.body) | |
620 | |
621 def test_api_get_repo(self): | |
622 new_group = 'some_new_group' | |
623 make_users_group(new_group) | |
624 RepoModel().grant_users_group_permission(repo=self.REPO, | |
625 group_name=new_group, | |
626 perm='repository.read') | |
2738 | 627 Session().commit() |
2526 | 628 id_, params = _build_data(self.apikey, 'get_repo', |
629 repoid=self.REPO) | |
2738 | 630 response = api_call(self, params) |
2526 | 631 |
632 repo = RepoModel().get_by_repo_name(self.REPO) | |
633 ret = repo.get_api_data() | |
634 | |
635 members = [] | |
3215 | 636 followers = [] |
2526 | 637 for user in repo.repo_to_perm: |
638 perm = user.permission.permission_name | |
639 user = user.user | |
640 user_data = user.get_api_data() | |
641 user_data['type'] = "user" | |
642 user_data['permission'] = perm | |
643 members.append(user_data) | |
644 | |
645 for users_group in repo.users_group_to_perm: | |
646 perm = users_group.permission.permission_name | |
647 users_group = users_group.users_group | |
648 users_group_data = users_group.get_api_data() | |
649 users_group_data['type'] = "users_group" | |
650 users_group_data['permission'] = perm | |
651 members.append(users_group_data) | |
652 | |
3215 | 653 for user in repo.followers: |
654 followers.append(user.user.get_api_data()) | |
655 | |
2526 | 656 ret['members'] = members |
3215 | 657 ret['followers'] = followers |
2526 | 658 |
659 expected = ret | |
660 self._compare_ok(id_, expected, given=response.body) | |
661 destroy_users_group(new_group) | |
662 | |
3163
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
663 def test_api_get_repo_by_non_admin(self): |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
664 id_, params = _build_data(self.apikey, 'get_repo', |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
665 repoid=self.REPO) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
666 response = api_call(self, params) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
667 |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
668 repo = RepoModel().get_by_repo_name(self.REPO) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
669 ret = repo.get_api_data() |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
670 |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
671 members = [] |
3215 | 672 followers = [] |
3163
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
673 for user in repo.repo_to_perm: |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
674 perm = user.permission.permission_name |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
675 user = user.user |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
676 user_data = user.get_api_data() |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
677 user_data['type'] = "user" |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
678 user_data['permission'] = perm |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
679 members.append(user_data) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
680 |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
681 for users_group in repo.users_group_to_perm: |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
682 perm = users_group.permission.permission_name |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
683 users_group = users_group.users_group |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
684 users_group_data = users_group.get_api_data() |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
685 users_group_data['type'] = "users_group" |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
686 users_group_data['permission'] = perm |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
687 members.append(users_group_data) |
3216
81bbb8086f03
whitespace cleanup
Marcin Kuzminski <marcin@python-works.com>
parents:
3215
diff
changeset
|
688 |
3215 | 689 for user in repo.followers: |
690 followers.append(user.user.get_api_data()) | |
3216
81bbb8086f03
whitespace cleanup
Marcin Kuzminski <marcin@python-works.com>
parents:
3215
diff
changeset
|
691 |
3163
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
692 ret['members'] = members |
3215 | 693 ret['followers'] = followers |
3163
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
694 |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
695 expected = ret |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
696 self._compare_ok(id_, expected, given=response.body) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
697 |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
698 def test_api_get_repo_by_non_admin_no_permission_to_repo(self): |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
699 RepoModel().grant_user_permission(repo=self.REPO, |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
700 user=self.TEST_USER_LOGIN, |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
701 perm='repository.none') |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
702 |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
703 id_, params = _build_data(self.apikey_regular, 'get_repo', |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
704 repoid=self.REPO) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
705 response = api_call(self, params) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
706 |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
707 expected = 'repository `%s` does not exist' % (self.REPO) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
708 self._compare_error(id_, expected, given=response.body) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
709 |
2526 | 710 def test_api_get_repo_that_doesn_not_exist(self): |
711 id_, params = _build_data(self.apikey, 'get_repo', | |
712 repoid='no-such-repo') | |
2738 | 713 response = api_call(self, params) |
2526 | 714 |
715 ret = 'repository `%s` does not exist' % 'no-such-repo' | |
716 expected = ret | |
717 self._compare_error(id_, expected, given=response.body) | |
718 | |
719 def test_api_get_repos(self): | |
720 id_, params = _build_data(self.apikey, 'get_repos') | |
2738 | 721 response = api_call(self, params) |
2526 | 722 |
723 result = [] | |
724 for repo in RepoModel().get_all(): | |
725 result.append(repo.get_api_data()) | |
726 ret = jsonify(result) | |
727 | |
728 expected = ret | |
729 self._compare_ok(id_, expected, given=response.body) | |
730 | |
3163
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
731 def test_api_get_repos_non_admin(self): |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
732 id_, params = _build_data(self.apikey_regular, 'get_repos') |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
733 response = api_call(self, params) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
734 |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
735 result = [] |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
736 for repo in RepoModel().get_all_user_repos(self.TEST_USER_LOGIN): |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
737 result.append(repo.get_api_data()) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
738 ret = jsonify(result) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
739 |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
740 expected = ret |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
741 self._compare_ok(id_, expected, given=response.body) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
742 |
2526 | 743 @parameterized.expand([('all', 'all'), |
744 ('dirs', 'dirs'), | |
745 ('files', 'files'), ]) | |
746 def test_api_get_repo_nodes(self, name, ret_type): | |
747 rev = 'tip' | |
748 path = '/' | |
749 id_, params = _build_data(self.apikey, 'get_repo_nodes', | |
750 repoid=self.REPO, revision=rev, | |
751 root_path=path, | |
752 ret_type=ret_type) | |
2738 | 753 response = api_call(self, params) |
2526 | 754 |
755 # we don't the actual return types here since it's tested somewhere | |
756 # else | |
757 expected = json.loads(response.body)['result'] | |
758 self._compare_ok(id_, expected, given=response.body) | |
759 | |
760 def test_api_get_repo_nodes_bad_revisions(self): | |
761 rev = 'i-dont-exist' | |
762 path = '/' | |
763 id_, params = _build_data(self.apikey, 'get_repo_nodes', | |
764 repoid=self.REPO, revision=rev, | |
765 root_path=path,) | |
2738 | 766 response = api_call(self, params) |
2526 | 767 |
768 expected = 'failed to get repo: `%s` nodes' % self.REPO | |
769 self._compare_error(id_, expected, given=response.body) | |
770 | |
771 def test_api_get_repo_nodes_bad_path(self): | |
772 rev = 'tip' | |
773 path = '/idontexits' | |
774 id_, params = _build_data(self.apikey, 'get_repo_nodes', | |
775 repoid=self.REPO, revision=rev, | |
776 root_path=path,) | |
2738 | 777 response = api_call(self, params) |
2526 | 778 |
779 expected = 'failed to get repo: `%s` nodes' % self.REPO | |
780 self._compare_error(id_, expected, given=response.body) | |
781 | |
782 def test_api_get_repo_nodes_bad_ret_type(self): | |
783 rev = 'tip' | |
784 path = '/' | |
785 ret_type = 'error' | |
786 id_, params = _build_data(self.apikey, 'get_repo_nodes', | |
787 repoid=self.REPO, revision=rev, | |
788 root_path=path, | |
789 ret_type=ret_type) | |
2738 | 790 response = api_call(self, params) |
2526 | 791 |
792 expected = 'ret_type must be one of %s' % (['files', 'dirs', 'all']) | |
793 self._compare_error(id_, expected, given=response.body) | |
794 | |
795 def test_api_create_repo(self): | |
796 repo_name = 'api-repo' | |
797 id_, params = _build_data(self.apikey, 'create_repo', | |
798 repo_name=repo_name, | |
799 owner=TEST_USER_ADMIN_LOGIN, | |
800 repo_type='hg', | |
801 ) | |
2738 | 802 response = api_call(self, params) |
2526 | 803 |
804 repo = RepoModel().get_by_repo_name(repo_name) | |
805 ret = { | |
806 'msg': 'Created new repository `%s`' % repo_name, | |
807 'repo': jsonify(repo.get_api_data()) | |
808 } | |
809 expected = ret | |
810 self._compare_ok(id_, expected, given=response.body) | |
3647
8a86836fad64
more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents:
3502
diff
changeset
|
811 fixture.destroy_repo(repo_name) |
2526 | 812 |
813 def test_api_create_repo_unknown_owner(self): | |
814 repo_name = 'api-repo' | |
815 owner = 'i-dont-exist' | |
816 id_, params = _build_data(self.apikey, 'create_repo', | |
817 repo_name=repo_name, | |
818 owner=owner, | |
819 repo_type='hg', | |
820 ) | |
2738 | 821 response = api_call(self, params) |
2526 | 822 expected = 'user `%s` does not exist' % owner |
823 self._compare_error(id_, expected, given=response.body) | |
824 | |
3163
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
825 def test_api_create_repo_dont_specify_owner(self): |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
826 repo_name = 'api-repo' |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
827 owner = 'i-dont-exist' |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
828 id_, params = _build_data(self.apikey, 'create_repo', |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
829 repo_name=repo_name, |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
830 repo_type='hg', |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
831 ) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
832 response = api_call(self, params) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
833 |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
834 repo = RepoModel().get_by_repo_name(repo_name) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
835 ret = { |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
836 'msg': 'Created new repository `%s`' % repo_name, |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
837 'repo': jsonify(repo.get_api_data()) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
838 } |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
839 expected = ret |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
840 self._compare_ok(id_, expected, given=response.body) |
3647
8a86836fad64
more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents:
3502
diff
changeset
|
841 fixture.destroy_repo(repo_name) |
3163
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
842 |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
843 def test_api_create_repo_by_non_admin(self): |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
844 repo_name = 'api-repo' |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
845 owner = 'i-dont-exist' |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
846 id_, params = _build_data(self.apikey_regular, 'create_repo', |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
847 repo_name=repo_name, |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
848 repo_type='hg', |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
849 ) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
850 response = api_call(self, params) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
851 |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
852 repo = RepoModel().get_by_repo_name(repo_name) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
853 ret = { |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
854 'msg': 'Created new repository `%s`' % repo_name, |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
855 'repo': jsonify(repo.get_api_data()) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
856 } |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
857 expected = ret |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
858 self._compare_ok(id_, expected, given=response.body) |
3647
8a86836fad64
more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents:
3502
diff
changeset
|
859 fixture.destroy_repo(repo_name) |
3163
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
860 |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
861 def test_api_create_repo_by_non_admin_specify_owner(self): |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
862 repo_name = 'api-repo' |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
863 owner = 'i-dont-exist' |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
864 id_, params = _build_data(self.apikey_regular, 'create_repo', |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
865 repo_name=repo_name, |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
866 repo_type='hg', |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
867 owner=owner |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
868 ) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
869 response = api_call(self, params) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
870 |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
871 expected = 'Only RhodeCode admin can specify `owner` param' |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
872 self._compare_error(id_, expected, given=response.body) |
3647
8a86836fad64
more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents:
3502
diff
changeset
|
873 fixture.destroy_repo(repo_name) |
3163
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
874 |
2526 | 875 def test_api_create_repo_exists(self): |
876 repo_name = self.REPO | |
877 id_, params = _build_data(self.apikey, 'create_repo', | |
878 repo_name=repo_name, | |
879 owner=TEST_USER_ADMIN_LOGIN, | |
880 repo_type='hg', | |
881 ) | |
2738 | 882 response = api_call(self, params) |
2526 | 883 expected = "repo `%s` already exist" % repo_name |
884 self._compare_error(id_, expected, given=response.body) | |
885 | |
886 @mock.patch.object(RepoModel, 'create_repo', crash) | |
887 def test_api_create_repo_exception_occurred(self): | |
888 repo_name = 'api-repo' | |
889 id_, params = _build_data(self.apikey, 'create_repo', | |
890 repo_name=repo_name, | |
891 owner=TEST_USER_ADMIN_LOGIN, | |
892 repo_type='hg', | |
893 ) | |
2738 | 894 response = api_call(self, params) |
2526 | 895 expected = 'failed to create repository `%s`' % repo_name |
896 self._compare_error(id_, expected, given=response.body) | |
897 | |
898 def test_api_delete_repo(self): | |
899 repo_name = 'api_delete_me' | |
3647
8a86836fad64
more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents:
3502
diff
changeset
|
900 fixture.create_repo(repo_name, repo_type=self.REPO_TYPE) |
2526 | 901 |
902 id_, params = _build_data(self.apikey, 'delete_repo', | |
903 repoid=repo_name,) | |
2738 | 904 response = api_call(self, params) |
2526 | 905 |
906 ret = { | |
907 'msg': 'Deleted repository `%s`' % repo_name, | |
908 'success': True | |
909 } | |
910 expected = ret | |
911 self._compare_ok(id_, expected, given=response.body) | |
912 | |
3163
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
913 def test_api_delete_repo_by_non_admin(self): |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
914 repo_name = 'api_delete_me' |
3647
8a86836fad64
more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents:
3502
diff
changeset
|
915 fixture.create_repo(repo_name, repo_type=self.REPO_TYPE, |
8a86836fad64
more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents:
3502
diff
changeset
|
916 cur_user=self.TEST_USER_LOGIN) |
3163
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
917 try: |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
918 id_, params = _build_data(self.apikey_regular, 'delete_repo', |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
919 repoid=repo_name,) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
920 response = api_call(self, params) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
921 |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
922 ret = { |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
923 'msg': 'Deleted repository `%s`' % repo_name, |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
924 'success': True |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
925 } |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
926 expected = ret |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
927 self._compare_ok(id_, expected, given=response.body) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
928 finally: |
3647
8a86836fad64
more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents:
3502
diff
changeset
|
929 fixture.destroy_repo(repo_name) |
3163
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
930 |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
931 def test_api_delete_repo_by_non_admin_no_permission(self): |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
932 repo_name = 'api_delete_me' |
3647
8a86836fad64
more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents:
3502
diff
changeset
|
933 fixture.create_repo(repo_name, repo_type=self.REPO_TYPE) |
3163
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
934 try: |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
935 id_, params = _build_data(self.apikey_regular, 'delete_repo', |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
936 repoid=repo_name,) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
937 response = api_call(self, params) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
938 expected = 'repository `%s` does not exist' % (repo_name) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
939 self._compare_error(id_, expected, given=response.body) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
940 finally: |
3647
8a86836fad64
more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents:
3502
diff
changeset
|
941 fixture.destroy_repo(repo_name) |
3163
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
942 |
2526 | 943 def test_api_delete_repo_exception_occurred(self): |
944 repo_name = 'api_delete_me' | |
3647
8a86836fad64
more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents:
3502
diff
changeset
|
945 fixture.create_repo(repo_name, repo_type=self.REPO_TYPE) |
2653
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
946 try: |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
947 with mock.patch.object(RepoModel, 'delete', crash): |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
948 id_, params = _build_data(self.apikey, 'delete_repo', |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
949 repoid=repo_name,) |
2738 | 950 response = api_call(self, params) |
2653
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
951 |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
952 expected = 'failed to delete repository `%s`' % repo_name |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
953 self._compare_error(id_, expected, given=response.body) |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
954 finally: |
3647
8a86836fad64
more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents:
3502
diff
changeset
|
955 fixture.destroy_repo(repo_name) |
2653
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
956 |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
957 def test_api_fork_repo(self): |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
958 fork_name = 'api-repo-fork' |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
959 id_, params = _build_data(self.apikey, 'fork_repo', |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
960 repoid=self.REPO, |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
961 fork_name=fork_name, |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
962 owner=TEST_USER_ADMIN_LOGIN, |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
963 ) |
2738 | 964 response = api_call(self, params) |
2653
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
965 |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
966 ret = { |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
967 'msg': 'Created fork of `%s` as `%s`' % (self.REPO, |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
968 fork_name), |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
969 'success': True |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
970 } |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
971 expected = ret |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
972 self._compare_ok(id_, expected, given=response.body) |
3647
8a86836fad64
more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents:
3502
diff
changeset
|
973 fixture.destroy_repo(fork_name) |
2653
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
974 |
3163
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
975 def test_api_fork_repo_non_admin(self): |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
976 fork_name = 'api-repo-fork' |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
977 id_, params = _build_data(self.apikey_regular, 'fork_repo', |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
978 repoid=self.REPO, |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
979 fork_name=fork_name, |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
980 ) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
981 response = api_call(self, params) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
982 |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
983 ret = { |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
984 'msg': 'Created fork of `%s` as `%s`' % (self.REPO, |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
985 fork_name), |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
986 'success': True |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
987 } |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
988 expected = ret |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
989 self._compare_ok(id_, expected, given=response.body) |
3647
8a86836fad64
more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents:
3502
diff
changeset
|
990 fixture.destroy_repo(fork_name) |
3163
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
991 |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
992 def test_api_fork_repo_non_admin_specify_owner(self): |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
993 fork_name = 'api-repo-fork' |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
994 id_, params = _build_data(self.apikey_regular, 'fork_repo', |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
995 repoid=self.REPO, |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
996 fork_name=fork_name, |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
997 owner=TEST_USER_ADMIN_LOGIN, |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
998 ) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
999 response = api_call(self, params) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
1000 expected = 'Only RhodeCode admin can specify `owner` param' |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
1001 self._compare_error(id_, expected, given=response.body) |
3647
8a86836fad64
more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents:
3502
diff
changeset
|
1002 fixture.destroy_repo(fork_name) |
3163
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
1003 |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
1004 def test_api_fork_repo_non_admin_no_permission_to_fork(self): |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
1005 RepoModel().grant_user_permission(repo=self.REPO, |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
1006 user=self.TEST_USER_LOGIN, |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
1007 perm='repository.none') |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
1008 fork_name = 'api-repo-fork' |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
1009 id_, params = _build_data(self.apikey_regular, 'fork_repo', |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
1010 repoid=self.REPO, |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
1011 fork_name=fork_name, |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
1012 ) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
1013 response = api_call(self, params) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
1014 expected = 'repository `%s` does not exist' % (self.REPO) |
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
1015 self._compare_error(id_, expected, given=response.body) |
3647
8a86836fad64
more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents:
3502
diff
changeset
|
1016 fixture.destroy_repo(fork_name) |
3163
28571535dd61
API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents:
3161
diff
changeset
|
1017 |
2653
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
1018 def test_api_fork_repo_unknown_owner(self): |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
1019 fork_name = 'api-repo-fork' |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
1020 owner = 'i-dont-exist' |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
1021 id_, params = _build_data(self.apikey, 'fork_repo', |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
1022 repoid=self.REPO, |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
1023 fork_name=fork_name, |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
1024 owner=owner, |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
1025 ) |
2738 | 1026 response = api_call(self, params) |
2653
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
1027 expected = 'user `%s` does not exist' % owner |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
1028 self._compare_error(id_, expected, given=response.body) |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
1029 |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
1030 def test_api_fork_repo_fork_exists(self): |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
1031 fork_name = 'api-repo-fork' |
3647
8a86836fad64
more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents:
3502
diff
changeset
|
1032 fixture.create_fork(self.REPO, fork_name) |
2653
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
1033 |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
1034 try: |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
1035 fork_name = 'api-repo-fork' |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
1036 |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
1037 id_, params = _build_data(self.apikey, 'fork_repo', |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
1038 repoid=self.REPO, |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
1039 fork_name=fork_name, |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
1040 owner=TEST_USER_ADMIN_LOGIN, |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
1041 ) |
2738 | 1042 response = api_call(self, params) |
2526 | 1043 |
2653
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
1044 expected = "fork `%s` already exist" % fork_name |
2526 | 1045 self._compare_error(id_, expected, given=response.body) |
2653
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
1046 finally: |
3647
8a86836fad64
more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents:
3502
diff
changeset
|
1047 fixture.destroy_repo(fork_name) |
2653
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
1048 |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
1049 def test_api_fork_repo_repo_exists(self): |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
1050 fork_name = self.REPO |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
1051 |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
1052 id_, params = _build_data(self.apikey, 'fork_repo', |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
1053 repoid=self.REPO, |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
1054 fork_name=fork_name, |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
1055 owner=TEST_USER_ADMIN_LOGIN, |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
1056 ) |
2738 | 1057 response = api_call(self, params) |
2526 | 1058 |
2653
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
1059 expected = "repo `%s` already exist" % fork_name |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
1060 self._compare_error(id_, expected, given=response.body) |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
1061 |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
1062 @mock.patch.object(RepoModel, 'create_fork', crash) |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
1063 def test_api_fork_repo_exception_occurred(self): |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
1064 fork_name = 'api-repo-fork' |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
1065 id_, params = _build_data(self.apikey, 'fork_repo', |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
1066 repoid=self.REPO, |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
1067 fork_name=fork_name, |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
1068 owner=TEST_USER_ADMIN_LOGIN, |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
1069 ) |
2738 | 1070 response = api_call(self, params) |
2653
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
1071 |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
1072 expected = 'failed to fork repository `%s` as `%s`' % (self.REPO, |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
1073 fork_name) |
8be70a4d72c7
Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
1074 self._compare_error(id_, expected, given=response.body) |
2526 | 1075 |
1076 def test_api_get_users_group(self): | |
1077 id_, params = _build_data(self.apikey, 'get_users_group', | |
3417
fa6ba6727475
further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents:
3415
diff
changeset
|
1078 usersgroupid=TEST_USER_GROUP) |
2738 | 1079 response = api_call(self, params) |
2526 | 1080 |
3417
fa6ba6727475
further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents:
3415
diff
changeset
|
1081 users_group = UserGroupModel().get_group(TEST_USER_GROUP) |
2526 | 1082 members = [] |
1083 for user in users_group.members: | |
1084 user = user.user | |
1085 members.append(user.get_api_data()) | |
1086 | |
1087 ret = users_group.get_api_data() | |
1088 ret['members'] = members | |
1089 expected = ret | |
1090 self._compare_ok(id_, expected, given=response.body) | |
1091 | |
1092 def test_api_get_users_groups(self): | |
1093 | |
1094 make_users_group('test_users_group2') | |
1095 | |
1096 id_, params = _build_data(self.apikey, 'get_users_groups',) | |
2738 | 1097 response = api_call(self, params) |
2526 | 1098 |
1099 expected = [] | |
3417
fa6ba6727475
further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents:
3415
diff
changeset
|
1100 for gr_name in [TEST_USER_GROUP, 'test_users_group2']: |
fa6ba6727475
further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents:
3415
diff
changeset
|
1101 users_group = UserGroupModel().get_group(gr_name) |
2526 | 1102 ret = users_group.get_api_data() |
1103 expected.append(ret) | |
1104 self._compare_ok(id_, expected, given=response.body) | |
1105 | |
3417
fa6ba6727475
further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents:
3415
diff
changeset
|
1106 UserGroupModel().delete(users_group='test_users_group2') |
2738 | 1107 Session().commit() |
2526 | 1108 |
1109 def test_api_create_users_group(self): | |
1110 group_name = 'some_new_group' | |
1111 id_, params = _build_data(self.apikey, 'create_users_group', | |
1112 group_name=group_name) | |
2738 | 1113 response = api_call(self, params) |
2526 | 1114 |
1115 ret = { | |
3415
b8f929bff7e3
fixed tests and missing replacements from 5f1850e4712a
Marcin Kuzminski <marcin@python-works.com>
parents:
3235
diff
changeset
|
1116 'msg': 'created new user group `%s`' % group_name, |
3417
fa6ba6727475
further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents:
3415
diff
changeset
|
1117 'users_group': jsonify(UserGroupModel()\ |
2526 | 1118 .get_by_name(group_name)\ |
1119 .get_api_data()) | |
1120 } | |
1121 expected = ret | |
1122 self._compare_ok(id_, expected, given=response.body) | |
1123 | |
1124 destroy_users_group(group_name) | |
1125 | |
1126 def test_api_get_users_group_that_exist(self): | |
1127 id_, params = _build_data(self.apikey, 'create_users_group', | |
3417
fa6ba6727475
further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents:
3415
diff
changeset
|
1128 group_name=TEST_USER_GROUP) |
2738 | 1129 response = api_call(self, params) |
2526 | 1130 |
3417
fa6ba6727475
further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents:
3415
diff
changeset
|
1131 expected = "user group `%s` already exist" % TEST_USER_GROUP |
2526 | 1132 self._compare_error(id_, expected, given=response.body) |
1133 | |
3417
fa6ba6727475
further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents:
3415
diff
changeset
|
1134 @mock.patch.object(UserGroupModel, 'create', crash) |
2526 | 1135 def test_api_get_users_group_exception_occurred(self): |
1136 group_name = 'exception_happens' | |
1137 id_, params = _build_data(self.apikey, 'create_users_group', | |
1138 group_name=group_name) | |
2738 | 1139 response = api_call(self, params) |
2526 | 1140 |
1141 expected = 'failed to create group `%s`' % group_name | |
1142 self._compare_error(id_, expected, given=response.body) | |
1143 | |
1144 def test_api_add_user_to_users_group(self): | |
1145 gr_name = 'test_group' | |
3714
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3647
diff
changeset
|
1146 fixture.create_user_group(gr_name) |
2526 | 1147 id_, params = _build_data(self.apikey, 'add_user_to_users_group', |
1148 usersgroupid=gr_name, | |
1149 userid=TEST_USER_ADMIN_LOGIN) | |
2738 | 1150 response = api_call(self, params) |
2526 | 1151 |
1152 expected = { | |
3415
b8f929bff7e3
fixed tests and missing replacements from 5f1850e4712a
Marcin Kuzminski <marcin@python-works.com>
parents:
3235
diff
changeset
|
1153 'msg': 'added member `%s` to user group `%s`' % ( |
2526 | 1154 TEST_USER_ADMIN_LOGIN, gr_name |
1155 ), | |
1156 'success': True} | |
1157 self._compare_ok(id_, expected, given=response.body) | |
1158 | |
3417
fa6ba6727475
further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents:
3415
diff
changeset
|
1159 UserGroupModel().delete(users_group=gr_name) |
2738 | 1160 Session().commit() |
2526 | 1161 |
1162 def test_api_add_user_to_users_group_that_doesnt_exist(self): | |
1163 id_, params = _build_data(self.apikey, 'add_user_to_users_group', | |
1164 usersgroupid='false-group', | |
1165 userid=TEST_USER_ADMIN_LOGIN) | |
2738 | 1166 response = api_call(self, params) |
2526 | 1167 |
3415
b8f929bff7e3
fixed tests and missing replacements from 5f1850e4712a
Marcin Kuzminski <marcin@python-works.com>
parents:
3235
diff
changeset
|
1168 expected = 'user group `%s` does not exist' % 'false-group' |
2526 | 1169 self._compare_error(id_, expected, given=response.body) |
1170 | |
3417
fa6ba6727475
further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents:
3415
diff
changeset
|
1171 @mock.patch.object(UserGroupModel, 'add_user_to_group', crash) |
2526 | 1172 def test_api_add_user_to_users_group_exception_occurred(self): |
1173 gr_name = 'test_group' | |
3714
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3647
diff
changeset
|
1174 fixture.create_user_group(gr_name) |
2526 | 1175 id_, params = _build_data(self.apikey, 'add_user_to_users_group', |
1176 usersgroupid=gr_name, | |
1177 userid=TEST_USER_ADMIN_LOGIN) | |
2738 | 1178 response = api_call(self, params) |
2526 | 1179 |
3415
b8f929bff7e3
fixed tests and missing replacements from 5f1850e4712a
Marcin Kuzminski <marcin@python-works.com>
parents:
3235
diff
changeset
|
1180 expected = 'failed to add member to user group `%s`' % gr_name |
2526 | 1181 self._compare_error(id_, expected, given=response.body) |
1182 | |
3417
fa6ba6727475
further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents:
3415
diff
changeset
|
1183 UserGroupModel().delete(users_group=gr_name) |
2738 | 1184 Session().commit() |
2526 | 1185 |
1186 def test_api_remove_user_from_users_group(self): | |
1187 gr_name = 'test_group_3' | |
3714
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3647
diff
changeset
|
1188 gr = fixture.create_user_group(gr_name) |
3417
fa6ba6727475
further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents:
3415
diff
changeset
|
1189 UserGroupModel().add_user_to_group(gr, user=TEST_USER_ADMIN_LOGIN) |
2738 | 1190 Session().commit() |
2526 | 1191 id_, params = _build_data(self.apikey, 'remove_user_from_users_group', |
1192 usersgroupid=gr_name, | |
1193 userid=TEST_USER_ADMIN_LOGIN) | |
2738 | 1194 response = api_call(self, params) |
2526 | 1195 |
1196 expected = { | |
3415
b8f929bff7e3
fixed tests and missing replacements from 5f1850e4712a
Marcin Kuzminski <marcin@python-works.com>
parents:
3235
diff
changeset
|
1197 'msg': 'removed member `%s` from user group `%s`' % ( |
2526 | 1198 TEST_USER_ADMIN_LOGIN, gr_name |
1199 ), | |
1200 'success': True} | |
1201 self._compare_ok(id_, expected, given=response.body) | |
1202 | |
3417
fa6ba6727475
further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents:
3415
diff
changeset
|
1203 UserGroupModel().delete(users_group=gr_name) |
2738 | 1204 Session().commit() |
2526 | 1205 |
3417
fa6ba6727475
further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents:
3415
diff
changeset
|
1206 @mock.patch.object(UserGroupModel, 'remove_user_from_group', crash) |
2526 | 1207 def test_api_remove_user_from_users_group_exception_occurred(self): |
1208 gr_name = 'test_group_3' | |
3714
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3647
diff
changeset
|
1209 gr = fixture.create_user_group(gr_name) |
3417
fa6ba6727475
further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents:
3415
diff
changeset
|
1210 UserGroupModel().add_user_to_group(gr, user=TEST_USER_ADMIN_LOGIN) |
2738 | 1211 Session().commit() |
2526 | 1212 id_, params = _build_data(self.apikey, 'remove_user_from_users_group', |
1213 usersgroupid=gr_name, | |
1214 userid=TEST_USER_ADMIN_LOGIN) | |
2738 | 1215 response = api_call(self, params) |
2526 | 1216 |
3415
b8f929bff7e3
fixed tests and missing replacements from 5f1850e4712a
Marcin Kuzminski <marcin@python-works.com>
parents:
3235
diff
changeset
|
1217 expected = 'failed to remove member from user group `%s`' % gr_name |
2526 | 1218 self._compare_error(id_, expected, given=response.body) |
1219 | |
3417
fa6ba6727475
further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents:
3415
diff
changeset
|
1220 UserGroupModel().delete(users_group=gr_name) |
2738 | 1221 Session().commit() |
2526 | 1222 |
1223 @parameterized.expand([('none', 'repository.none'), | |
1224 ('read', 'repository.read'), | |
1225 ('write', 'repository.write'), | |
1226 ('admin', 'repository.admin')]) | |
1227 def test_api_grant_user_permission(self, name, perm): | |
1228 id_, params = _build_data(self.apikey, 'grant_user_permission', | |
1229 repoid=self.REPO, | |
1230 userid=TEST_USER_ADMIN_LOGIN, | |
1231 perm=perm) | |
2738 | 1232 response = api_call(self, params) |
2526 | 1233 |
1234 ret = { | |
1235 'msg': 'Granted perm: `%s` for user: `%s` in repo: `%s`' % ( | |
1236 perm, TEST_USER_ADMIN_LOGIN, self.REPO | |
1237 ), | |
1238 'success': True | |
1239 } | |
1240 expected = ret | |
1241 self._compare_ok(id_, expected, given=response.body) | |
1242 | |
1243 def test_api_grant_user_permission_wrong_permission(self): | |
1244 perm = 'haha.no.permission' | |
1245 id_, params = _build_data(self.apikey, 'grant_user_permission', | |
1246 repoid=self.REPO, | |
1247 userid=TEST_USER_ADMIN_LOGIN, | |
1248 perm=perm) | |
2738 | 1249 response = api_call(self, params) |
2526 | 1250 |
1251 expected = 'permission `%s` does not exist' % perm | |
1252 self._compare_error(id_, expected, given=response.body) | |
1253 | |
1254 @mock.patch.object(RepoModel, 'grant_user_permission', crash) | |
1255 def test_api_grant_user_permission_exception_when_adding(self): | |
1256 perm = 'repository.read' | |
1257 id_, params = _build_data(self.apikey, 'grant_user_permission', | |
1258 repoid=self.REPO, | |
1259 userid=TEST_USER_ADMIN_LOGIN, | |
1260 perm=perm) | |
2738 | 1261 response = api_call(self, params) |
2526 | 1262 |
1263 expected = 'failed to edit permission for user: `%s` in repo: `%s`' % ( | |
1264 TEST_USER_ADMIN_LOGIN, self.REPO | |
1265 ) | |
1266 self._compare_error(id_, expected, given=response.body) | |
1267 | |
1268 def test_api_revoke_user_permission(self): | |
1269 id_, params = _build_data(self.apikey, 'revoke_user_permission', | |
1270 repoid=self.REPO, | |
1271 userid=TEST_USER_ADMIN_LOGIN,) | |
2738 | 1272 response = api_call(self, params) |
2526 | 1273 |
1274 expected = { | |
1275 'msg': 'Revoked perm for user: `%s` in repo: `%s`' % ( | |
1276 TEST_USER_ADMIN_LOGIN, self.REPO | |
1277 ), | |
1278 'success': True | |
1279 } | |
1280 self._compare_ok(id_, expected, given=response.body) | |
1281 | |
1282 @mock.patch.object(RepoModel, 'revoke_user_permission', crash) | |
1283 def test_api_revoke_user_permission_exception_when_adding(self): | |
1284 id_, params = _build_data(self.apikey, 'revoke_user_permission', | |
1285 repoid=self.REPO, | |
1286 userid=TEST_USER_ADMIN_LOGIN,) | |
2738 | 1287 response = api_call(self, params) |
2526 | 1288 |
1289 expected = 'failed to edit permission for user: `%s` in repo: `%s`' % ( | |
1290 TEST_USER_ADMIN_LOGIN, self.REPO | |
1291 ) | |
1292 self._compare_error(id_, expected, given=response.body) | |
1293 | |
1294 @parameterized.expand([('none', 'repository.none'), | |
1295 ('read', 'repository.read'), | |
1296 ('write', 'repository.write'), | |
1297 ('admin', 'repository.admin')]) | |
1298 def test_api_grant_users_group_permission(self, name, perm): | |
1299 id_, params = _build_data(self.apikey, 'grant_users_group_permission', | |
1300 repoid=self.REPO, | |
3417
fa6ba6727475
further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents:
3415
diff
changeset
|
1301 usersgroupid=TEST_USER_GROUP, |
2526 | 1302 perm=perm) |
2738 | 1303 response = api_call(self, params) |
2526 | 1304 |
1305 ret = { | |
3415
b8f929bff7e3
fixed tests and missing replacements from 5f1850e4712a
Marcin Kuzminski <marcin@python-works.com>
parents:
3235
diff
changeset
|
1306 'msg': 'Granted perm: `%s` for user group: `%s` in repo: `%s`' % ( |
3417
fa6ba6727475
further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents:
3415
diff
changeset
|
1307 perm, TEST_USER_GROUP, self.REPO |
2526 | 1308 ), |
1309 'success': True | |
1310 } | |
1311 expected = ret | |
1312 self._compare_ok(id_, expected, given=response.body) | |
1313 | |
1314 def test_api_grant_users_group_permission_wrong_permission(self): | |
1315 perm = 'haha.no.permission' | |
1316 id_, params = _build_data(self.apikey, 'grant_users_group_permission', | |
1317 repoid=self.REPO, | |
3417
fa6ba6727475
further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents:
3415
diff
changeset
|
1318 usersgroupid=TEST_USER_GROUP, |
2526 | 1319 perm=perm) |
2738 | 1320 response = api_call(self, params) |
2526 | 1321 |
1322 expected = 'permission `%s` does not exist' % perm | |
1323 self._compare_error(id_, expected, given=response.body) | |
1324 | |
1325 @mock.patch.object(RepoModel, 'grant_users_group_permission', crash) | |
1326 def test_api_grant_users_group_permission_exception_when_adding(self): | |
1327 perm = 'repository.read' | |
1328 id_, params = _build_data(self.apikey, 'grant_users_group_permission', | |
1329 repoid=self.REPO, | |
3417
fa6ba6727475
further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents:
3415
diff
changeset
|
1330 usersgroupid=TEST_USER_GROUP, |
2526 | 1331 perm=perm) |
2738 | 1332 response = api_call(self, params) |
2526 | 1333 |
3415
b8f929bff7e3
fixed tests and missing replacements from 5f1850e4712a
Marcin Kuzminski <marcin@python-works.com>
parents:
3235
diff
changeset
|
1334 expected = 'failed to edit permission for user group: `%s` in repo: `%s`' % ( |
3417
fa6ba6727475
further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents:
3415
diff
changeset
|
1335 TEST_USER_GROUP, self.REPO |
2526 | 1336 ) |
1337 self._compare_error(id_, expected, given=response.body) | |
1338 | |
1339 def test_api_revoke_users_group_permission(self): | |
1340 RepoModel().grant_users_group_permission(repo=self.REPO, | |
3417
fa6ba6727475
further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents:
3415
diff
changeset
|
1341 group_name=TEST_USER_GROUP, |
2526 | 1342 perm='repository.read') |
2738 | 1343 Session().commit() |
2526 | 1344 id_, params = _build_data(self.apikey, 'revoke_users_group_permission', |
1345 repoid=self.REPO, | |
3417
fa6ba6727475
further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents:
3415
diff
changeset
|
1346 usersgroupid=TEST_USER_GROUP,) |
2738 | 1347 response = api_call(self, params) |
2526 | 1348 |
1349 expected = { | |
3415
b8f929bff7e3
fixed tests and missing replacements from 5f1850e4712a
Marcin Kuzminski <marcin@python-works.com>
parents:
3235
diff
changeset
|
1350 'msg': 'Revoked perm for user group: `%s` in repo: `%s`' % ( |
3417
fa6ba6727475
further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents:
3415
diff
changeset
|
1351 TEST_USER_GROUP, self.REPO |
2526 | 1352 ), |
1353 'success': True | |
1354 } | |
1355 self._compare_ok(id_, expected, given=response.body) | |
1356 | |
1357 @mock.patch.object(RepoModel, 'revoke_users_group_permission', crash) | |
1358 def test_api_revoke_users_group_permission_exception_when_adding(self): | |
1359 | |
1360 id_, params = _build_data(self.apikey, 'revoke_users_group_permission', | |
1361 repoid=self.REPO, | |
3417
fa6ba6727475
further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents:
3415
diff
changeset
|
1362 usersgroupid=TEST_USER_GROUP,) |
2738 | 1363 response = api_call(self, params) |
2526 | 1364 |
3415
b8f929bff7e3
fixed tests and missing replacements from 5f1850e4712a
Marcin Kuzminski <marcin@python-works.com>
parents:
3235
diff
changeset
|
1365 expected = 'failed to edit permission for user group: `%s` in repo: `%s`' % ( |
3417
fa6ba6727475
further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents:
3415
diff
changeset
|
1366 TEST_USER_GROUP, self.REPO |
2526 | 1367 ) |
1368 self._compare_error(id_, expected, given=response.body) |