comparison rhodecode/tests/api/api_base.py @ 2653:8be70a4d72c7 beta

Implemented #354 added forking option to API
author Marcin Kuzminski <marcin@python-works.com>
date Sun, 22 Jul 2012 01:16:36 +0200
parents 40b3a54391f9
children 001c7e2ae986
comparison
equal deleted inserted replaced
2652:532ee86cf9b1 2653:8be70a4d72c7
62 repo_type=repo_type, 62 repo_type=repo_type,
63 clone_uri=None, 63 clone_uri=None,
64 landing_rev='tip') 64 landing_rev='tip')
65 cur_user = UserModel().get_by_username(TEST_USER_ADMIN_LOGIN) 65 cur_user = UserModel().get_by_username(TEST_USER_ADMIN_LOGIN)
66 r = RepoModel().create(form_data, cur_user) 66 r = RepoModel().create(form_data, cur_user)
67 Session().commit()
68 return r
69
70
71 def create_fork(fork_name, fork_type, fork_of):
72 fork = RepoModel(Session())._get_repo(fork_of)
73 r = create_repo(fork_name, fork_type)
74 r.fork = fork
75 Session().add(r)
67 Session().commit() 76 Session().commit()
68 return r 77 return r
69 78
70 79
71 def destroy_repo(repo_name): 80 def destroy_repo(repo_name):
569 self._compare_ok(id_, expected, given=response.body) 578 self._compare_ok(id_, expected, given=response.body)
570 579
571 def test_api_delete_repo_exception_occurred(self): 580 def test_api_delete_repo_exception_occurred(self):
572 repo_name = 'api_delete_me' 581 repo_name = 'api_delete_me'
573 create_repo(repo_name, self.REPO_TYPE) 582 create_repo(repo_name, self.REPO_TYPE)
574 with mock.patch.object(RepoModel, 'delete', crash): 583 try:
575 id_, params = _build_data(self.apikey, 'delete_repo', 584 with mock.patch.object(RepoModel, 'delete', crash):
576 repoid=repo_name,) 585 id_, params = _build_data(self.apikey, 'delete_repo',
586 repoid=repo_name,)
587 response = self.app.post(API_URL, content_type='application/json',
588 params=params)
589
590 expected = 'failed to delete repository `%s`' % repo_name
591 self._compare_error(id_, expected, given=response.body)
592 finally:
593 destroy_repo(repo_name)
594
595 def test_api_fork_repo(self):
596 fork_name = 'api-repo-fork'
597 id_, params = _build_data(self.apikey, 'fork_repo',
598 repoid=self.REPO,
599 fork_name=fork_name,
600 owner=TEST_USER_ADMIN_LOGIN,
601 )
602 response = self.app.post(API_URL, content_type='application/json',
603 params=params)
604
605 ret = {
606 'msg': 'Created fork of `%s` as `%s`' % (self.REPO,
607 fork_name),
608 'success': True
609 }
610 expected = ret
611 self._compare_ok(id_, expected, given=response.body)
612 destroy_repo(fork_name)
613
614 def test_api_fork_repo_unknown_owner(self):
615 fork_name = 'api-repo-fork'
616 owner = 'i-dont-exist'
617 id_, params = _build_data(self.apikey, 'fork_repo',
618 repoid=self.REPO,
619 fork_name=fork_name,
620 owner=owner,
621 )
622 response = self.app.post(API_URL, content_type='application/json',
623 params=params)
624 expected = 'user `%s` does not exist' % owner
625 self._compare_error(id_, expected, given=response.body)
626
627 def test_api_fork_repo_fork_exists(self):
628 fork_name = 'api-repo-fork'
629 create_fork(fork_name, self.REPO_TYPE, self.REPO)
630
631 try:
632 fork_name = 'api-repo-fork'
633
634 id_, params = _build_data(self.apikey, 'fork_repo',
635 repoid=self.REPO,
636 fork_name=fork_name,
637 owner=TEST_USER_ADMIN_LOGIN,
638 )
577 response = self.app.post(API_URL, content_type='application/json', 639 response = self.app.post(API_URL, content_type='application/json',
578 params=params) 640 params=params)
579 641
580 expected = 'failed to delete repository `%s`' % repo_name 642 expected = "fork `%s` already exist" % fork_name
581 self._compare_error(id_, expected, given=response.body) 643 self._compare_error(id_, expected, given=response.body)
582 destroy_repo(repo_name) 644 finally:
583 645 destroy_repo(fork_name)
584 def test_api_fork_repo(self): 646
585 self.failIf(False, 'TODO:') 647 def test_api_fork_repo_repo_exists(self):
648 fork_name = self.REPO
649
650 id_, params = _build_data(self.apikey, 'fork_repo',
651 repoid=self.REPO,
652 fork_name=fork_name,
653 owner=TEST_USER_ADMIN_LOGIN,
654 )
655 response = self.app.post(API_URL, content_type='application/json',
656 params=params)
657
658 expected = "repo `%s` already exist" % fork_name
659 self._compare_error(id_, expected, given=response.body)
660
661 @mock.patch.object(RepoModel, 'create_fork', crash)
662 def test_api_fork_repo_exception_occurred(self):
663 fork_name = 'api-repo-fork'
664 id_, params = _build_data(self.apikey, 'fork_repo',
665 repoid=self.REPO,
666 fork_name=fork_name,
667 owner=TEST_USER_ADMIN_LOGIN,
668 )
669 response = self.app.post(API_URL, content_type='application/json',
670 params=params)
671
672 expected = 'failed to fork repository `%s` as `%s`' % (self.REPO,
673 fork_name)
674 self._compare_error(id_, expected, given=response.body)
586 675
587 def test_api_get_users_group(self): 676 def test_api_get_users_group(self):
588 id_, params = _build_data(self.apikey, 'get_users_group', 677 id_, params = _build_data(self.apikey, 'get_users_group',
589 usersgroupid=TEST_USERS_GROUP) 678 usersgroupid=TEST_USERS_GROUP)
590 response = self.app.post(API_URL, content_type='application/json', 679 response = self.app.post(API_URL, content_type='application/json',