def test_works_correctly_with_post(self): request = HttpRequest() request.method = 'POST' request.session = {} request.POST = { 'SAMLRequest': encode_saml(expected_result), 'RelayState': 'Test Relay State' } store_params_in_session(request) expected_session = { 'Binding': BINDING_HTTP_POST, 'SAMLRequest': encode_saml(expected_result), 'RelayState': 'Test Relay State' } assert all(item in request.session.items() for item in expected_session.items())
def test_works_correctly_with_get(self): store_params_in_session(sample_get_request) expected_session = { 'Binding': BINDING_HTTP_REDIRECT, 'SAMLRequest': encode_saml(expected_result), 'RelayState': 'Test Relay State' } assert all(item in sample_get_request.session.items() for item in expected_session.items())
def get_saml_logout_request(id="Request ID", format=saml.NAMEID_FORMAT_UNSPECIFIED, name_id="user1"): xml_template = """<samlp:LogoutRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" ID="{}" Version="2.0" IssueInstant="{}" Destination="{}"><saml:Issuer>{}</saml:Issuer><saml:NameID SPNameQualifier="{}metadata.php" Format="{}">{}</saml:NameID></samlp:LogoutRequest>""".format( id, timezone.now().strftime("%Y-%m-%dT%H:%M:%SZ"), "http://localhost:9000/idp/slo/redirect", "test_generic_sp", "test_generic_sp", format, name_id) return encode_saml(xml_template, use_zlib=True)
def sample_get_request(saml_request_minimal) -> HttpRequest: request = HttpRequest() request.method = 'GET' request.session = {} request.GET = { 'SAMLRequest': encode_saml(saml_request_minimal), 'RelayState': 'Test Relay State' } return request
def test_with_internal_saml_response_zlib(self, saml_request_minimal): assert repr_saml( encode_saml(saml_request_minimal, use_zlib=True)) == self.prettify(saml_request_minimal)
def test_with_minimal_saml_request_b64(self, saml_request_minimal): assert repr_saml(encode_saml(saml_request_minimal), b64=True) == self.prettify(saml_request_minimal)
expected_result_file = open(FILE_PREFIX + "xml/min/request/sample_saml_request_minimal.xml") expected_result = expected_result_file.readline() expected_result_pretty = xml.dom.minidom.parseString( expected_result).toprettyxml() expected_result_file.close() with open(FILE_PREFIX + "xml/metadata/sp_metadata.xml") as sp_metadata_xml_file: sp_metadata_xml = ''.join(sp_metadata_xml_file.readlines()) sample_get_request = HttpRequest() sample_get_request.method = 'GET' sample_get_request.session = {} sample_get_request.GET = { 'SAMLRequest': encode_saml(expected_result), 'RelayState': 'Test Relay State' } def get_logged_in_request(): request = HttpRequest() request.session = SessionStore() username = "******" password = "******" User.objects.create_user(username=username, password=password) user = authenticate(username=username, password=password) if user is not None: login(request, user) request.method = 'GET' request.user = user
def test_with_internal_saml_response_zlib(self): assert repr_saml(encode_saml(expected_result, use_zlib=True)) == expected_result_pretty
def test_with_minimal_saml_request_b64(self): assert repr_saml(encode_saml(expected_result), b64=True) == expected_result_pretty