comparison rhodecode/tests/api/api_base.py @ 3808:2feb58495f34 beta

locking API returns objects instead of string messages. - it's now possible to easily parse the output of lock functions
author Marcin Kuzminski <marcin@python-works.com>
date Mon, 06 May 2013 16:34:02 +0200
parents e2ebd8808351
children 647fb653048e
comparison
equal deleted inserted replaced
3807:e9b4664c958d 3808:2feb58495f34
10 from rhodecode.model.users_group import UserGroupModel 10 from rhodecode.model.users_group import UserGroupModel
11 from rhodecode.model.repo import RepoModel 11 from rhodecode.model.repo import RepoModel
12 from rhodecode.model.meta import Session 12 from rhodecode.model.meta import Session
13 from rhodecode.model.scm import ScmModel 13 from rhodecode.model.scm import ScmModel
14 from rhodecode.model.db import Repository, User 14 from rhodecode.model.db import Repository, User
15 from rhodecode.lib.utils2 import time_to_datetime
15 16
16 17
17 API_URL = '/_admin/api' 18 API_URL = '/_admin/api'
18 TEST_USER_GROUP = 'test_users_group' 19 TEST_USER_GROUP = 'test_users_group'
19 20
289 id_, params = _build_data(self.apikey, 'lock', 290 id_, params = _build_data(self.apikey, 'lock',
290 userid=TEST_USER_ADMIN_LOGIN, 291 userid=TEST_USER_ADMIN_LOGIN,
291 repoid=self.REPO, 292 repoid=self.REPO,
292 locked=True) 293 locked=True)
293 response = api_call(self, params) 294 response = api_call(self, params)
294 expected = ('User `%s` set lock state for repo `%s` to `%s`' 295 expected = {
295 % (TEST_USER_ADMIN_LOGIN, self.REPO, True)) 296 'repo': self.REPO,
297 'locked': True,
298 'locked_since': None,
299 'locked_by': TEST_USER_ADMIN_LOGIN,
300 'msg': ('User `%s` set lock state for repo `%s` to `%s`'
301 % (TEST_USER_ADMIN_LOGIN, self.REPO, True))
302 }
303 expected['locked_since'] = json.loads(response.body)['result']['locked_since']
296 self._compare_ok(id_, expected, given=response.body) 304 self._compare_ok(id_, expected, given=response.body)
297 305
298 def test_api_lock_repo_lock_aquire_by_non_admin(self): 306 def test_api_lock_repo_lock_aquire_by_non_admin(self):
299 repo_name = 'api_delete_me' 307 repo_name = 'api_delete_me'
300 fixture.create_repo(repo_name, repo_type=self.REPO_TYPE, 308 fixture.create_repo(repo_name, repo_type=self.REPO_TYPE,
302 try: 310 try:
303 id_, params = _build_data(self.apikey_regular, 'lock', 311 id_, params = _build_data(self.apikey_regular, 'lock',
304 repoid=repo_name, 312 repoid=repo_name,
305 locked=True) 313 locked=True)
306 response = api_call(self, params) 314 response = api_call(self, params)
307 expected = ('User `%s` set lock state for repo `%s` to `%s`' 315 expected = {
308 % (self.TEST_USER_LOGIN, repo_name, True)) 316 'repo': repo_name,
317 'locked': True,
318 'locked_since': None,
319 'locked_by': self.TEST_USER_LOGIN,
320 'msg': ('User `%s` set lock state for repo `%s` to `%s`'
321 % (self.TEST_USER_LOGIN, repo_name, True))
322 }
323 expected['locked_since'] = json.loads(response.body)['result']['locked_since']
309 self._compare_ok(id_, expected, given=response.body) 324 self._compare_ok(id_, expected, given=response.body)
310 finally: 325 finally:
311 fixture.destroy_repo(repo_name) 326 fixture.destroy_repo(repo_name)
312 327
313 def test_api_lock_repo_lock_aquire_non_admin_with_userid(self): 328 def test_api_lock_repo_lock_aquire_non_admin_with_userid(self):
337 id_, params = _build_data(self.apikey, 'lock', 352 id_, params = _build_data(self.apikey, 'lock',
338 userid=TEST_USER_ADMIN_LOGIN, 353 userid=TEST_USER_ADMIN_LOGIN,
339 repoid=self.REPO, 354 repoid=self.REPO,
340 locked=False) 355 locked=False)
341 response = api_call(self, params) 356 response = api_call(self, params)
342 expected = ('User `%s` set lock state for repo `%s` to `%s`' 357 expected = {
343 % (TEST_USER_ADMIN_LOGIN, self.REPO, False)) 358 'repo': self.REPO,
359 'locked': False,
360 'locked_since': None,
361 'locked_by': TEST_USER_ADMIN_LOGIN,
362 'msg': ('User `%s` set lock state for repo `%s` to `%s`'
363 % (TEST_USER_ADMIN_LOGIN, self.REPO, False))
364 }
344 self._compare_ok(id_, expected, given=response.body) 365 self._compare_ok(id_, expected, given=response.body)
345 366
346 def test_api_lock_repo_lock_aquire_optional_userid(self): 367 def test_api_lock_repo_lock_aquire_optional_userid(self):
347 id_, params = _build_data(self.apikey, 'lock', 368 id_, params = _build_data(self.apikey, 'lock',
348 repoid=self.REPO, 369 repoid=self.REPO,
349 locked=True) 370 locked=True)
350 response = api_call(self, params) 371 response = api_call(self, params)
351 expected = ('User `%s` set lock state for repo `%s` to `%s`' 372 expected = {
352 % (TEST_USER_ADMIN_LOGIN, self.REPO, True)) 373 'repo': self.REPO,
374 'locked': True,
375 'locked_since': None,
376 'locked_by': TEST_USER_ADMIN_LOGIN,
377 'msg': ('User `%s` set lock state for repo `%s` to `%s`'
378 % (TEST_USER_ADMIN_LOGIN, self.REPO, True))
379 }
380 expected['locked_since'] = json.loads(response.body)['result']['locked_since']
353 self._compare_ok(id_, expected, given=response.body) 381 self._compare_ok(id_, expected, given=response.body)
354 382
355 def test_api_lock_repo_lock_optional_locked(self): 383 def test_api_lock_repo_lock_optional_locked(self):
356 from rhodecode.lib.utils2 import time_to_datetime
357 _locked_since = json.dumps(time_to_datetime(Repository\
358 .get_by_repo_name(self.REPO).locked[1]))
359 id_, params = _build_data(self.apikey, 'lock', 384 id_, params = _build_data(self.apikey, 'lock',
360 repoid=self.REPO) 385 repoid=self.REPO)
361 response = api_call(self, params) 386 response = api_call(self, params)
362 expected = ('Repo `%s` locked by `%s`. Locked=`True`. Locked since: `%s`' 387 time_ = json.loads(response.body)['result']['locked_since']
363 % (self.REPO, TEST_USER_ADMIN_LOGIN, _locked_since)) 388 expected = {
389 'repo': self.REPO,
390 'locked': True,
391 'locked_since': None,
392 'locked_by': TEST_USER_ADMIN_LOGIN,
393 'msg': ('Repo `%s` locked by `%s`. '
394 % (self.REPO,
395 json.dumps(time_to_datetime(time_))))
396
397 }
398 expected['locked_since'] = time_
364 self._compare_ok(id_, expected, given=response.body) 399 self._compare_ok(id_, expected, given=response.body)
365 400
366 @mock.patch.object(Repository, 'lock', crash) 401 @mock.patch.object(Repository, 'lock', crash)
367 def test_api_lock_error(self): 402 def test_api_lock_error(self):
368 id_, params = _build_data(self.apikey, 'lock', 403 id_, params = _build_data(self.apikey, 'lock',