From 1ac91803048f269120a8145e6a60e773a52be726 Mon Sep 17 00:00:00 2001 From: Aaron Louie Date: Fri, 21 Feb 2020 12:03:14 -0500 Subject: [PATCH] Updates tests to match changing sso_backdoor to query string params --- tests/test_authentication.py | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/tests/test_authentication.py b/tests/test_authentication.py index 65ca6474..0975a782 100644 --- a/tests/test_authentication.py +++ b/tests/test_authentication.py @@ -1,21 +1,25 @@ +import urllib.parse + from crc import db from crc.models.user import UserModel from tests.base_test import BaseTest class TestAuthentication(BaseTest): - test_uid = "dhf8r" def logged_in_headers(self, user=None): if user is None: uid = self.test_uid - headers = {'uid': self.test_uid, 'first_name': 'Daniel', 'last_name': 'Funk', 'email_address': 'dhf8r@virginia.edu'} + user_info = {'uid': self.test_uid, 'first_name': 'Daniel', 'last_name': 'Funk', + 'email_address': 'dhf8r@virginia.edu'} else: uid = user.uid - headers = {'uid': user.uid, 'first_name': user.first_name, 'last_name': user.last_name, 'email_address': user.email_address} + user_info = {'uid': user.uid, 'first_name': user.first_name, 'last_name': user.last_name, + 'email_address': user.email_address} - rv = self.app.get("/v1.0/sso_backdoor", headers=headers, follow_redirects=True, + query_string = self.user_info_to_query_string(user_info) + rv = self.app.get("/v1.0/sso_backdoor%s" % query_string, follow_redirects=True, content_type="application/json") user_model = UserModel.query.filter_by(uid=uid).first() self.assertIsNotNone(user_model.display_name) @@ -33,18 +37,20 @@ class TestAuthentication(BaseTest): user = db.session.query(UserModel).filter(UserModel.uid == self.test_uid).first() self.assertIsNone(user) - headers = {'uid': self.test_uid, 'first_name': 'Daniel', 'email_address': 'dhf8r@virginia.edu'} - rv_1 = self.app.get("/v1.0/sso_backdoor", headers=headers, follow_redirects=False) + user_info = {'uid': self.test_uid, 'first_name': 'Daniel', 'last_name': 'Funk', + 'email_address': 'dhf8r@virginia.edu'} + query_string = self.user_info_to_query_string(user_info) + url = '/v1.0/sso_backdoor%s' % query_string + rv_1 = self.app.get(url, follow_redirects=False) self.assertTrue(rv_1.status_code == 302) - user = db.session.query(UserModel).filter(UserModel.uid == self.test_uid).first() self.assertIsNotNone(user) self.assertIsNotNone(user.display_name) self.assertIsNotNone(user.email_address) # Hitting the same endpoint again with the same info should not cause an error - rv_2 = self.app.get("/v1.0/sso_backdoor", headers=headers, follow_redirects=False) + rv_2 = self.app.get(url, follow_redirects=False) self.assertTrue(rv_1.status_code == 302) def test_current_user_status(self): @@ -58,3 +64,13 @@ class TestAuthentication(BaseTest): user = UserModel(uid="ajl2j", first_name='Aaron', last_name='Louie', email_address='ajl2j@virginia.edu') rv = self.app.get('/v1.0/user', headers=self.logged_in_headers(user)) self.assert_success(rv) + + def user_info_to_query_string(self, user_info): + query_string_list = [] + items = user_info.items() + for key, value in items: + query_string_list.append('%s=%s' % (key, urllib.parse.quote(value))) + + return '?%s' % '&'.join(query_string_list) + +