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