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