changeset 7934:6a13cf7bdca5

test: refactor tests to use create_login_session
author John Rouillard <rouilj@ieee.org>
date Sun, 05 May 2024 20:56:08 -0400
parents 8bf56686f763
children f670446b5e50
files test/test_liveserver.py
diffstat 1 files changed, 32 insertions(+), 42 deletions(-) [+]
line wrap: on
line diff
--- a/test/test_liveserver.py	Sun May 05 18:34:06 2024 -0400
+++ b/test/test_liveserver.py	Sun May 05 20:56:08 2024 -0400
@@ -145,6 +145,26 @@
        wsgi server is started with various feature flags
     """
 
+    def create_login_session(self, username="admin", password="sekrit",
+                             return_response=True, expect_login_ok=True):
+        # Set up session to manage cookies <insert blue monster here>
+        session = requests.Session()
+        session.headers.update({'Origin': 'http://localhost:9001'})
+
+        # login using form to get cookie
+        login = {"__login_name": username, '__login_password': password,
+                 "@action": "login"}
+        response = session.post(self.url_base()+'/', data=login)
+
+        if expect_login_ok:
+            # verify we have a cookie
+            self.assertIn('roundup_session_Roundupissuetracker',
+                          session.cookies)
+
+        if not return_response:
+            return session
+        return session, response
+
     def test_start_page(self):
         """ simple test that verifies that the server can serve a start page.
         """
@@ -1039,14 +1059,9 @@
         '''Test case where we have an outdated session cookie. Make
            sure cookie is removed.
         '''
-        session = requests.Session()
-        session.headers.update({'Origin': 'http://localhost:9001'})
 
-        # login using form to get cookie
-        login = {"__login_name": 'admin', '__login_password': 'sekrit',
-                 "@action": "login"}
-        f = session.post(self.url_base()+'/', data=login)
-        
+        session, f = self.create_login_session()
+
         # verify cookie is present and we are logged in
         self.assertIn('<b>Hello, admin</b>', f.text)
         self.assertIn('roundup_session_Roundupissuetracker',
@@ -1066,44 +1081,30 @@
         self.assertNotIn('roundup_session_Roundupissuetracker', session.cookies)
 
     def test_login_fail_then_succeed(self):
-        # Set up session to manage cookies <insert blue monster here>
-        session = requests.Session()
-        session.headers.update({'Origin': 'http://localhost:9001'})
 
-        # login using form
-        login = {"__login_name": 'admin', '__login_password': 'bad_sekrit', 
-                 "@action": "login"}
-        f = session.post(self.url_base()+'/', data=login)
+        session, f = self.create_login_session(password="bad_sekrit",
+                                               expect_login_ok=False)
+
         # verify error message and no hello message in sidebar.
         self.assertIn('class="error-message">Invalid login <br/ >', f.text)
         self.assertNotIn('<b>Hello, admin</b>', f.text)
 
-        # login using form
-        login = {"__login_name": 'admin', '__login_password': 'sekrit', 
-                 "@action": "login"}
-        f = session.post(self.url_base()+'/', data=login)
-        # look for change in text in sidebar post login
+        session, f = self.create_login_session(return_response=True)
         self.assertIn('<b>Hello, admin</b>', f.text)
 
     def test__generic_item_template_editok(self, user="admin"):
-        """Load /status1 object. Admin has edit rights so should see
+        """Load /status7 object. Admin has edit rights so should see
            a submit button. fred doesn't have edit rights
            so should not have a submit button.
         """
-        # Set up session to manage cookies <insert blue monster here>
-        session = requests.Session()
-        session.headers.update({'Origin': self.url_base()})
+        session, f = self.create_login_session(username=user)
 
-        # login using form
-        login = {"__login_name": user, '__login_password': 'sekrit', 
-                 "@action": "login"}
-        f = session.post(self.url_base()+'/', data=login)
         # look for change in text in sidebar post login
         self.assertIn('Hello, %s'%user, f.text)
-        f = session.post(self.url_base()+'/status7', data=login)
+        f = session.get(self.url_base()+'/status7')
         print(f.content)
 
-        # status1's name is unread
+        # status7's name is done-cbb
         self.assertIn(b'done-cbb', f.content)
 
         if user == 'admin':
@@ -1120,14 +1121,8 @@
         self.test__generic_item_template_editok(user=user)
 
     def test_new_issue_with_file_upload(self):
-        # Set up session to manage cookies <insert blue monster here>
-        session = requests.Session()
-        session.headers.update({'Origin': 'http://localhost:9001'})
+        session, f = self.create_login_session()
 
-        # login using form
-        login = {"__login_name": 'admin', '__login_password': 'sekrit', 
-                 "@action": "login"}
-        f = session.post(self.url_base()+'/', data=login)
         # look for change in text in sidebar post login
         self.assertIn('Hello, admin', f.text)
 
@@ -1198,12 +1193,7 @@
 
         # get session variable from web form login
         #   and use it to upload file
-        # login using form
-        login = {"__login_name": 'admin', '__login_password': 'sekrit', 
-                 "@action": "login"}
-        f = session.post(self.url_base()+'/', data=login,
-                          headers = {'Origin': "http://localhost:9001"}
-)
+        session, f = self.create_login_session()
         # look for change in text in sidebar post login
         self.assertIn('Hello, admin', f.text)
 

Roundup Issue Tracker: http://roundup-tracker.org/