comparison test/test_liveserver.py @ 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 4cca0ae9f901
children f670446b5e50
comparison
equal deleted inserted replaced
7933:8bf56686f763 7934:6a13cf7bdca5
143 class BaseTestCases(WsgiSetup): 143 class BaseTestCases(WsgiSetup):
144 """Class with all tests to run against wsgi server. Is reused when 144 """Class with all tests to run against wsgi server. Is reused when
145 wsgi server is started with various feature flags 145 wsgi server is started with various feature flags
146 """ 146 """
147 147
148 def create_login_session(self, username="admin", password="sekrit",
149 return_response=True, expect_login_ok=True):
150 # Set up session to manage cookies <insert blue monster here>
151 session = requests.Session()
152 session.headers.update({'Origin': 'http://localhost:9001'})
153
154 # login using form to get cookie
155 login = {"__login_name": username, '__login_password': password,
156 "@action": "login"}
157 response = session.post(self.url_base()+'/', data=login)
158
159 if expect_login_ok:
160 # verify we have a cookie
161 self.assertIn('roundup_session_Roundupissuetracker',
162 session.cookies)
163
164 if not return_response:
165 return session
166 return session, response
167
148 def test_start_page(self): 168 def test_start_page(self):
149 """ simple test that verifies that the server can serve a start page. 169 """ simple test that verifies that the server can serve a start page.
150 """ 170 """
151 f = requests.get(self.url_base()) 171 f = requests.get(self.url_base())
152 self.assertEqual(f.status_code, 200) 172 self.assertEqual(f.status_code, 200)
1037 1057
1038 def test_missing_session_key(self): 1058 def test_missing_session_key(self):
1039 '''Test case where we have an outdated session cookie. Make 1059 '''Test case where we have an outdated session cookie. Make
1040 sure cookie is removed. 1060 sure cookie is removed.
1041 ''' 1061 '''
1042 session = requests.Session() 1062
1043 session.headers.update({'Origin': 'http://localhost:9001'}) 1063 session, f = self.create_login_session()
1044 1064
1045 # login using form to get cookie
1046 login = {"__login_name": 'admin', '__login_password': 'sekrit',
1047 "@action": "login"}
1048 f = session.post(self.url_base()+'/', data=login)
1049
1050 # verify cookie is present and we are logged in 1065 # verify cookie is present and we are logged in
1051 self.assertIn('<b>Hello, admin</b>', f.text) 1066 self.assertIn('<b>Hello, admin</b>', f.text)
1052 self.assertIn('roundup_session_Roundupissuetracker', 1067 self.assertIn('roundup_session_Roundupissuetracker',
1053 session.cookies) 1068 session.cookies)
1054 1069
1064 1079
1065 self.assertNotIn('<b>Hello, admin</b>', f.text) 1080 self.assertNotIn('<b>Hello, admin</b>', f.text)
1066 self.assertNotIn('roundup_session_Roundupissuetracker', session.cookies) 1081 self.assertNotIn('roundup_session_Roundupissuetracker', session.cookies)
1067 1082
1068 def test_login_fail_then_succeed(self): 1083 def test_login_fail_then_succeed(self):
1069 # Set up session to manage cookies <insert blue monster here> 1084
1070 session = requests.Session() 1085 session, f = self.create_login_session(password="bad_sekrit",
1071 session.headers.update({'Origin': 'http://localhost:9001'}) 1086 expect_login_ok=False)
1072 1087
1073 # login using form
1074 login = {"__login_name": 'admin', '__login_password': 'bad_sekrit',
1075 "@action": "login"}
1076 f = session.post(self.url_base()+'/', data=login)
1077 # verify error message and no hello message in sidebar. 1088 # verify error message and no hello message in sidebar.
1078 self.assertIn('class="error-message">Invalid login <br/ >', f.text) 1089 self.assertIn('class="error-message">Invalid login <br/ >', f.text)
1079 self.assertNotIn('<b>Hello, admin</b>', f.text) 1090 self.assertNotIn('<b>Hello, admin</b>', f.text)
1080 1091
1081 # login using form 1092 session, f = self.create_login_session(return_response=True)
1082 login = {"__login_name": 'admin', '__login_password': 'sekrit',
1083 "@action": "login"}
1084 f = session.post(self.url_base()+'/', data=login)
1085 # look for change in text in sidebar post login
1086 self.assertIn('<b>Hello, admin</b>', f.text) 1093 self.assertIn('<b>Hello, admin</b>', f.text)
1087 1094
1088 def test__generic_item_template_editok(self, user="admin"): 1095 def test__generic_item_template_editok(self, user="admin"):
1089 """Load /status1 object. Admin has edit rights so should see 1096 """Load /status7 object. Admin has edit rights so should see
1090 a submit button. fred doesn't have edit rights 1097 a submit button. fred doesn't have edit rights
1091 so should not have a submit button. 1098 so should not have a submit button.
1092 """ 1099 """
1093 # Set up session to manage cookies <insert blue monster here> 1100 session, f = self.create_login_session(username=user)
1094 session = requests.Session() 1101
1095 session.headers.update({'Origin': self.url_base()})
1096
1097 # login using form
1098 login = {"__login_name": user, '__login_password': 'sekrit',
1099 "@action": "login"}
1100 f = session.post(self.url_base()+'/', data=login)
1101 # look for change in text in sidebar post login 1102 # look for change in text in sidebar post login
1102 self.assertIn('Hello, %s'%user, f.text) 1103 self.assertIn('Hello, %s'%user, f.text)
1103 f = session.post(self.url_base()+'/status7', data=login) 1104 f = session.get(self.url_base()+'/status7')
1104 print(f.content) 1105 print(f.content)
1105 1106
1106 # status1's name is unread 1107 # status7's name is done-cbb
1107 self.assertIn(b'done-cbb', f.content) 1108 self.assertIn(b'done-cbb', f.content)
1108 1109
1109 if user == 'admin': 1110 if user == 'admin':
1110 self.assertIn(b'<input name="submit_button" type="submit" value="Submit Changes">', f.content) 1111 self.assertIn(b'<input name="submit_button" type="submit" value="Submit Changes">', f.content)
1111 else: 1112 else:
1118 @pytest.mark.xfail 1119 @pytest.mark.xfail
1119 def test__generic_item_template_editbad(self, user="fred"): 1120 def test__generic_item_template_editbad(self, user="fred"):
1120 self.test__generic_item_template_editok(user=user) 1121 self.test__generic_item_template_editok(user=user)
1121 1122
1122 def test_new_issue_with_file_upload(self): 1123 def test_new_issue_with_file_upload(self):
1123 # Set up session to manage cookies <insert blue monster here> 1124 session, f = self.create_login_session()
1124 session = requests.Session() 1125
1125 session.headers.update({'Origin': 'http://localhost:9001'})
1126
1127 # login using form
1128 login = {"__login_name": 'admin', '__login_password': 'sekrit',
1129 "@action": "login"}
1130 f = session.post(self.url_base()+'/', data=login)
1131 # look for change in text in sidebar post login 1126 # look for change in text in sidebar post login
1132 self.assertIn('Hello, admin', f.text) 1127 self.assertIn('Hello, admin', f.text)
1133 1128
1134 # create a new issue and upload a file 1129 # create a new issue and upload a file
1135 file_content = 'this is a test file\n' 1130 file_content = 'this is a test file\n'
1196 ) 1191 )
1197 self.assertEqual(r.status_code, 403) 1192 self.assertEqual(r.status_code, 403)
1198 1193
1199 # get session variable from web form login 1194 # get session variable from web form login
1200 # and use it to upload file 1195 # and use it to upload file
1201 # login using form 1196 session, f = self.create_login_session()
1202 login = {"__login_name": 'admin', '__login_password': 'sekrit',
1203 "@action": "login"}
1204 f = session.post(self.url_base()+'/', data=login,
1205 headers = {'Origin': "http://localhost:9001"}
1206 )
1207 # look for change in text in sidebar post login 1197 # look for change in text in sidebar post login
1208 self.assertIn('Hello, admin', f.text) 1198 self.assertIn('Hello, admin', f.text)
1209 1199
1210 r = session.post(url + 'file', files = c, data = d, 1200 r = session.post(url + 'file', files = c, data = d,
1211 headers = {'x-requested-with': "rest", 1201 headers = {'x-requested-with': "rest",

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