annotate rhodecode/tests/api/api_base.py @ 3774:60335b702a00 beta

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