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