def testGetselfhost(self): """ Tests the get_self_host method of the OneLogin_Saml2_Utils """ request_data = {} with self.assertRaises(Exception) as context: OneLogin_Saml2_Utils.get_self_url_host(request_data) exception = context.exception self.assertIn("No hostname defined", str(exception)) request_data = { 'server_name': 'example.com' } self.assertEqual('example.com', OneLogin_Saml2_Utils.get_self_host(request_data)) request_data = { 'http_host': 'example.com' } self.assertEqual('example.com', OneLogin_Saml2_Utils.get_self_host(request_data)) request_data = { 'http_host': 'example.com:443' } self.assertEqual('example.com', OneLogin_Saml2_Utils.get_self_host(request_data)) request_data = { 'http_host': 'example.com:ok' } self.assertEqual('example.com:ok', OneLogin_Saml2_Utils.get_self_host(request_data))
def testGetselfhost(self): """ Tests the get_self_host method of the OneLogin_Saml2_Utils """ request_data = {} with self.assertRaises(Exception) as context: OneLogin_Saml2_Utils.get_self_url_host(request_data) exception = context.exception self.assertIn("No hostname defined", str(exception)) request_data = { 'server_name': 'example.com' } self.assertEqual('example.com', OneLogin_Saml2_Utils.get_self_host(request_data)) request_data = { 'http_host': 'example.com' } self.assertEqual('example.com', OneLogin_Saml2_Utils.get_self_host(request_data)) request_data = { 'http_host': 'example.com:443' } self.assertEqual('example.com', OneLogin_Saml2_Utils.get_self_host(request_data)) request_data = { 'http_host': 'example.com:ok' } self.assertEqual('example.com:ok', OneLogin_Saml2_Utils.get_self_host(request_data))
def testGetselfhost(self): """ Tests the get_self_host method of the OneLogin_Saml2_Utils """ request_data = {} self.assertRaisesRegexp(Exception, 'No hostname defined', OneLogin_Saml2_Utils.get_self_host, request_data) request_data = { 'server_name': 'example.com' } self.assertEqual('example.com', OneLogin_Saml2_Utils.get_self_host(request_data)) request_data = { 'http_host': 'example.com' } self.assertEqual('example.com', OneLogin_Saml2_Utils.get_self_host(request_data)) request_data = { 'http_host': 'example.com:443' } self.assertEqual('example.com', OneLogin_Saml2_Utils.get_self_host(request_data)) request_data = { 'http_host': 'example.com:ok' } self.assertEqual('example.com:ok', OneLogin_Saml2_Utils.get_self_host(request_data))
def testRedirect(self): """ Tests the redirect method of the OneLogin_Saml2_Utils """ request_data = { 'http_host': 'example.com' } # Check relative and absolute hostname = OneLogin_Saml2_Utils.get_self_host(request_data) url = 'http://%s/example' % hostname url2 = '/example' target_url = OneLogin_Saml2_Utils.redirect(url, {}, request_data) target_url2 = OneLogin_Saml2_Utils.redirect(url2, {}, request_data) self.assertEqual(target_url, target_url2) # Check that accept http/https and reject other protocols url3 = 'https://%s/example?test=true' % hostname url4 = 'ftp://%s/example' % hostname target_url3 = OneLogin_Saml2_Utils.redirect(url3, {}, request_data) self.assertIn('test=true', target_url3) try: target_url4 = OneLogin_Saml2_Utils.redirect(url4, {}, request_data) self.assertTrue(target_url4 == 42) except Exception as e: self.assertIn('Redirect to invalid URL', e.message) # Review parameter prefix parameters1 = { 'value1': 'a' } target_url5 = OneLogin_Saml2_Utils.redirect(url, parameters1, request_data) self.assertEqual('http://%s/example?value1=a' % hostname, target_url5) target_url6 = OneLogin_Saml2_Utils.redirect(url3, parameters1, request_data) self.assertEqual('https://%s/example?test=true&value1=a' % hostname, target_url6) # Review parameters parameters2 = { 'alphavalue': 'a', 'numvaluelist': ['1', '2'], 'testing': None } target_url7 = OneLogin_Saml2_Utils.redirect(url, parameters2, request_data) self.assertEqual('http://%s/example?numvaluelist[]=1&numvaluelist[]=2&testing&alphavalue=a' % hostname, target_url7) parameters3 = { 'alphavalue': 'a', 'emptynumvaluelist': [], 'numvaluelist': [''], } target_url8 = OneLogin_Saml2_Utils.redirect(url, parameters3, request_data) self.assertEqual('http://%s/example?numvaluelist[]=&alphavalue=a' % hostname, target_url8)
def testRedirect(self): """ Tests the redirect method of the OneLogin_Saml2_Utils """ request_data = { 'http_host': 'example.com' } # Check relative and absolute hostname = OneLogin_Saml2_Utils.get_self_host(request_data) url = 'http://%s/example' % hostname url2 = '/example' target_url = OneLogin_Saml2_Utils.redirect(url, {}, request_data) target_url2 = OneLogin_Saml2_Utils.redirect(url2, {}, request_data) self.assertEqual(target_url, target_url2) # Check that accept http/https and reject other protocols url3 = 'https://%s/example?test=true' % hostname url4 = 'ftp://%s/example' % hostname target_url3 = OneLogin_Saml2_Utils.redirect(url3, {}, request_data) self.assertIn('test=true', target_url3) self.assertRaisesRegexp(Exception, 'Redirect to invalid URL', OneLogin_Saml2_Utils.redirect, url4, {}, request_data) # Review parameter prefix parameters1 = { 'value1': 'a' } target_url5 = OneLogin_Saml2_Utils.redirect(url, parameters1, request_data) self.assertEqual('http://%s/example?value1=a' % hostname, target_url5) target_url6 = OneLogin_Saml2_Utils.redirect(url3, parameters1, request_data) self.assertEqual('https://%s/example?test=true&value1=a' % hostname, target_url6) # Review parameters parameters2 = { 'alphavalue': 'a', 'numvaluelist': ['1', '2'], 'testing': None } target_url7 = OneLogin_Saml2_Utils.redirect(url, parameters2, request_data) parameters2_decoded = {"alphavalue": "alphavalue=a", "numvaluelist": "numvaluelist[]=1&numvaluelist[]=2", "testing": "testing"} parameters2_str = "&".join(parameters2_decoded[x] for x in parameters2) self.assertEqual('http://%s/example?%s' % (hostname, parameters2_str), target_url7) parameters3 = { 'alphavalue': 'a', 'emptynumvaluelist': [], 'numvaluelist': [''], } parameters3_decoded = {"alphavalue": "alphavalue=a", "numvaluelist": "numvaluelist[]="} parameters3_str = "&".join((parameters3_decoded[x] for x in parameters3.keys() if x in parameters3_decoded)) target_url8 = OneLogin_Saml2_Utils.redirect(url, parameters3, request_data) self.assertEqual('http://%s/example?%s' % (hostname, parameters3_str), target_url8)
def testRedirect(self): """ Tests the redirect method of the OneLogin_Saml2_Utils """ request_data = { 'http_host': 'example.com' } # Check relative and absolute hostname = OneLogin_Saml2_Utils.get_self_host(request_data) url = 'http://%s/example' % hostname url2 = '/example' target_url = OneLogin_Saml2_Utils.redirect(url, {}, request_data) target_url2 = OneLogin_Saml2_Utils.redirect(url2, {}, request_data) self.assertEqual(target_url, target_url2) # Check that accept http/https and reject other protocols url3 = 'https://%s/example?test=true' % hostname url4 = 'ftp://%s/example' % hostname target_url3 = OneLogin_Saml2_Utils.redirect(url3, {}, request_data) self.assertIn('test=true', target_url3) try: target_url4 = OneLogin_Saml2_Utils.redirect(url4, {}, request_data) self.assertTrue(target_url4 == 42) except Exception as e: self.assertIn('Redirect to invalid URL', e.message) # Review parameter prefix parameters1 = { 'value1': 'a' } target_url5 = OneLogin_Saml2_Utils.redirect(url, parameters1, request_data) self.assertEqual('http://%s/example?value1=a' % hostname, target_url5) target_url6 = OneLogin_Saml2_Utils.redirect(url3, parameters1, request_data) self.assertEqual('https://%s/example?test=true&value1=a' % hostname, target_url6) # Review parameters parameters2 = { 'alphavalue': 'a', 'numvaluelist': ['1', '2'], 'testing': None } target_url7 = OneLogin_Saml2_Utils.redirect(url, parameters2, request_data) self.assertEqual('http://%s/example?numvaluelist[]=1&numvaluelist[]=2&testing&alphavalue=a' % hostname, target_url7) parameters3 = { 'alphavalue': 'a', 'emptynumvaluelist': [], 'numvaluelist': [''], } target_url8 = OneLogin_Saml2_Utils.redirect(url, parameters3, request_data) self.assertEqual('http://%s/example?numvaluelist[]=&alphavalue=a' % hostname, target_url8)
def testGetselfhost(self): """ Tests the get_self_host method of the OneLogin_Saml2_Utils """ request_data = {} try: OneLogin_Saml2_Utils.get_self_host(request_data) self.assertTrue(False) except Exception as e: self.assertEqual('No hostname defined', e.message) request_data = { 'server_name': 'example.com' } self.assertEqual('example.com', OneLogin_Saml2_Utils.get_self_host(request_data)) request_data = { 'http_host': 'example.com' } self.assertEqual('example.com', OneLogin_Saml2_Utils.get_self_host(request_data)) request_data = { 'http_host': 'example.com:443' } self.assertEqual('example.com', OneLogin_Saml2_Utils.get_self_host(request_data)) request_data = { 'http_host': 'example.com:ok' } self.assertEqual('example.com:ok', OneLogin_Saml2_Utils.get_self_host(request_data))
def testGetselfhost(self): """ Tests the get_self_host method of the OneLogin_Saml2_Utils """ request_data = {} try: OneLogin_Saml2_Utils.get_self_host(request_data) self.assertTrue(False) except Exception as e: self.assertEqual('No hostname defined', e.message) request_data = {'server_name': 'example.com'} self.assertEqual('example.com', OneLogin_Saml2_Utils.get_self_host(request_data)) request_data = {'http_host': 'example.com'} self.assertEqual('example.com', OneLogin_Saml2_Utils.get_self_host(request_data)) request_data = {'http_host': 'example.com:443'} self.assertEqual('example.com', OneLogin_Saml2_Utils.get_self_host(request_data)) request_data = {'http_host': 'example.com:ok'} self.assertEqual('example.com:ok', OneLogin_Saml2_Utils.get_self_host(request_data))
def testLoginWithUnicodeSettings(self): """ Tests the login method of the OneLogin_Saml2_Auth class Case Login with unicode settings. An AuthnRequest is built an redirect executed """ settings_info = self.loadSettingsJSON('settings6.json') request_data = self.get_request() auth = OneLogin_Saml2_Auth(request_data, old_settings=settings_info) target_url = auth.login() parsed_query = parse_qs(urlparse(target_url)[4]) hostname = OneLogin_Saml2_Utils.get_self_host(request_data) self.assertIn(u'http://%s/index.html' % hostname, parsed_query['RelayState'])
def testGetselfhost(self): """ Tests the get_self_host method of the OneLogin_Saml2_Utils """ request_data = {} self.assertRaisesRegexp(Exception, 'No hostname defined', OneLogin_Saml2_Utils.get_self_host, request_data) request_data = {'server_name': 'example.com'} self.assertEqual('example.com', OneLogin_Saml2_Utils.get_self_host(request_data)) request_data = {'http_host': 'example.com'} self.assertEqual('example.com', OneLogin_Saml2_Utils.get_self_host(request_data)) request_data = {'http_host': 'example.com:443'} self.assertEqual('example.com', OneLogin_Saml2_Utils.get_self_host(request_data)) request_data = {'http_host': 'example.com:ok'} self.assertEqual('example.com:ok', OneLogin_Saml2_Utils.get_self_host(request_data))
def testLogin(self): """ Tests the login method of the OneLogin_Saml2_Auth class Case Login with no parameters. An AuthnRequest is built an redirect executed """ settings_info = self.loadSettingsJSON() request_data = self.get_request() auth = OneLogin_Saml2_Auth(request_data, old_settings=settings_info) target_url = auth.login() parsed_query = parse_qs(urlparse(target_url)[4]) sso_url = settings_info['idp']['singleSignOnService']['url'] self.assertIn(sso_url, target_url) self.assertIn('SAMLRequest', parsed_query) self.assertIn('RelayState', parsed_query) hostname = OneLogin_Saml2_Utils.get_self_host(request_data) self.assertIn(u'http://%s/index.html' % hostname, parsed_query['RelayState'])
def testLogin(self): """ Tests the login method of the OneLogin_Saml2_Auth class Case Login with no parameters. An AuthnRequest is built an redirect executed """ settings_info = self.loadSettingsJSON() request_data = self.get_request() auth = OneLogin_Saml2_Auth(request_data, old_settings=settings_info) target_url = auth.login() parsed_query = parse_qs(urlparse(target_url)[4]) sso_url = settings_info['idp']['singleSignOnService']['url'] self.assertIn(sso_url, target_url) self.assertIn('SAMLRequest', parsed_query) self.assertIn('RelayState', parsed_query) hostname = OneLogin_Saml2_Utils.get_self_host(request_data) self.assertIn(u'http://%s/index.html' % hostname, parsed_query['RelayState'])
def testLogout(self): """ Tests the logout method of the OneLogin_Saml2_Auth class Case Logout with no parameters. A logout Request is built and redirect executed """ settings_info = self.loadSettingsJSON() request_data = self.get_request() auth = OneLogin_Saml2_Auth(request_data, old_settings=settings_info) target_url = auth.logout() parsed_query = parse_qs(urlparse(target_url)[4]) slo_url = settings_info["idp"]["singleLogoutService"]["url"] self.assertIn(slo_url, target_url) self.assertIn("SAMLRequest", parsed_query) self.assertIn("RelayState", parsed_query) hostname = OneLogin_Saml2_Utils.get_self_host(request_data) self.assertIn(u"http://%s/index.html" % hostname, parsed_query["RelayState"])
def testRedirect(self): """ Tests the redirect method of the OneLogin_Saml2_Utils """ request_data = {'http_host': 'example.com'} # Check relative and absolute hostname = OneLogin_Saml2_Utils.get_self_host(request_data) url = 'http://%s/example' % hostname url2 = '/example' target_url = OneLogin_Saml2_Utils.redirect(url, {}, request_data) target_url2 = OneLogin_Saml2_Utils.redirect(url2, {}, request_data) self.assertEqual(target_url, target_url2) # Check that accept http/https and reject other protocols url3 = 'https://%s/example?test=true' % hostname url4 = 'ftp://%s/example' % hostname target_url3 = OneLogin_Saml2_Utils.redirect(url3, {}, request_data) self.assertIn('test=true', target_url3) self.assertRaisesRegexp(Exception, 'Redirect to invalid URL', OneLogin_Saml2_Utils.redirect, url4, {}, request_data) # Review parameter prefix parameters1 = {'value1': 'a'} target_url5 = OneLogin_Saml2_Utils.redirect(url, parameters1, request_data) self.assertEqual('http://%s/example?value1=a' % hostname, target_url5) target_url6 = OneLogin_Saml2_Utils.redirect(url3, parameters1, request_data) self.assertEqual('https://%s/example?test=true&value1=a' % hostname, target_url6) # Review parameters parameters2 = { 'alphavalue': 'a', 'numvaluelist': ['1', '2'], 'testing': None } target_url7 = OneLogin_Saml2_Utils.redirect(url, parameters2, request_data) parameters2_decoded = { "alphavalue": "alphavalue=a", "numvaluelist": "numvaluelist[]=1&numvaluelist[]=2", "testing": "testing" } parameters2_str = "&".join(parameters2_decoded[x] for x in parameters2) self.assertEqual('http://%s/example?%s' % (hostname, parameters2_str), target_url7) parameters3 = { 'alphavalue': 'a', 'emptynumvaluelist': [], 'numvaluelist': [''], } parameters3_decoded = { "alphavalue": "alphavalue=a", "numvaluelist": "numvaluelist[]=" } parameters3_str = "&".join((parameters3_decoded[x] for x in parameters3.keys() if x in parameters3_decoded)) target_url8 = OneLogin_Saml2_Utils.redirect(url, parameters3, request_data) self.assertEqual('http://%s/example?%s' % (hostname, parameters3_str), target_url8)