changeset 7478:b49ea1926119

tests: make lock tests stable against running 'py.test -k user' Add some cleanup, and merge some tests to make sure they really have a well-known starting point.
author Mads Kiilerich <mads@kiilerich.com>
date Tue, 25 Dec 2018 20:31:12 +0100
parents 006d68c4d7b9
children be37a0b982e9
files kallithea/tests/api/api_base.py
diffstat 1 files changed, 44 insertions(+), 47 deletions(-) [+]
line wrap: on
line diff
--- a/kallithea/tests/api/api_base.py	Tue Dec 25 20:23:42 2018 +0100
+++ b/kallithea/tests/api/api_base.py	Tue Dec 25 20:31:12 2018 +0100
@@ -387,20 +387,24 @@
         self._compare_error(id_, expected, given=response.body)
 
     def test_api_lock_repo_lock_acquire(self):
-        id_, params = _build_data(self.apikey, 'lock',
-                                  userid=TEST_USER_ADMIN_LOGIN,
-                                  repoid=self.REPO,
-                                  locked=True)
-        response = api_call(self, params)
-        expected = {
-            'repo': self.REPO, 'locked': True,
-            'locked_since': response.json['result']['locked_since'],
-            'locked_by': TEST_USER_ADMIN_LOGIN,
-            'lock_state_changed': True,
-            'msg': ('User `%s` set lock state for repo `%s` to `%s`'
-                    % (TEST_USER_ADMIN_LOGIN, self.REPO, True))
-        }
-        self._compare_ok(id_, expected, given=response.body)
+        try:
+            id_, params = _build_data(self.apikey, 'lock',
+                                      userid=TEST_USER_ADMIN_LOGIN,
+                                      repoid=self.REPO,
+                                      locked=True)
+            response = api_call(self, params)
+            expected = {
+                'repo': self.REPO, 'locked': True,
+                'locked_since': response.json['result']['locked_since'],
+                'locked_by': TEST_USER_ADMIN_LOGIN,
+                'lock_state_changed': True,
+                'msg': ('User `%s` set lock state for repo `%s` to `%s`'
+                        % (TEST_USER_ADMIN_LOGIN, self.REPO, True))
+            }
+            self._compare_ok(id_, expected, given=response.body)
+        finally:
+            # cleanup
+            Repository.unlock(RepoModel().get_by_repo_name(self.REPO))
 
     def test_api_lock_repo_lock_acquire_by_non_admin(self):
         repo_name = u'api_delete_me'
@@ -464,27 +468,41 @@
         }
         self._compare_ok(id_, expected, given=response.body)
 
-    def test_api_lock_repo_lock_acquire_optional_userid(self):
+        # test_api_lock_repo_lock_optional_not_locked(self):
         id_, params = _build_data(self.apikey, 'lock',
-                                  repoid=self.REPO,
-                                  locked=True)
+                                  repoid=self.REPO)
         response = api_call(self, params)
-        time_ = response.json['result']['locked_since']
         expected = {
             'repo': self.REPO,
-            'locked': True,
-            'locked_since': time_,
-            'locked_by': TEST_USER_ADMIN_LOGIN,
-            'lock_state_changed': True,
-            'msg': ('User `%s` set lock state for repo `%s` to `%s`'
-                    % (TEST_USER_ADMIN_LOGIN, self.REPO, True))
+            'locked': False,
+            'locked_since': None,
+            'locked_by': None,
+            'lock_state_changed': False,
+            'msg': ('Repo `%s` not locked.' % (self.REPO,))
         }
-
         self._compare_ok(id_, expected, given=response.body)
 
-    def test_api_lock_repo_lock_optional_locked(self):
+    def test_api_lock_repo_lock_acquire_optional_userid(self):
         try:
             id_, params = _build_data(self.apikey, 'lock',
+                                      repoid=self.REPO,
+                                      locked=True)
+            response = api_call(self, params)
+            time_ = response.json['result']['locked_since']
+            expected = {
+                'repo': self.REPO,
+                'locked': True,
+                'locked_since': time_,
+                'locked_by': TEST_USER_ADMIN_LOGIN,
+                'lock_state_changed': True,
+                'msg': ('User `%s` set lock state for repo `%s` to `%s`'
+                        % (TEST_USER_ADMIN_LOGIN, self.REPO, True))
+            }
+
+            self._compare_ok(id_, expected, given=response.body)
+
+            # test_api_lock_repo_lock_optional_locked
+            id_, params = _build_data(self.apikey, 'lock',
                                       repoid=self.REPO)
             response = api_call(self, params)
             time_ = response.json['result']['locked_since']
@@ -503,27 +521,6 @@
             # cleanup
             Repository.unlock(RepoModel().get_by_repo_name(self.REPO))
 
-    def test_api_lock_repo_lock_optional_not_locked(self):
-        repo_name = u'api_not_locked'
-        repo = fixture.create_repo(repo_name, repo_type=self.REPO_TYPE,
-                            cur_user=self.TEST_USER_LOGIN)
-        assert repo.locked == [None, None]
-        try:
-            id_, params = _build_data(self.apikey, 'lock',
-                                      repoid=repo.repo_id)
-            response = api_call(self, params)
-            expected = {
-                'repo': repo_name,
-                'locked': False,
-                'locked_since': None,
-                'locked_by': None,
-                'lock_state_changed': False,
-                'msg': ('Repo `%s` not locked.' % (repo_name,))
-            }
-            self._compare_ok(id_, expected, given=response.body)
-        finally:
-            fixture.destroy_repo(repo_name)
-
     @mock.patch.object(Repository, 'lock', crash)
     def test_api_lock_error(self):
         id_, params = _build_data(self.apikey, 'lock',