Mercurial > p > roundup > code
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", |
