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