from datetime import datetime from unittest.mock import Mock from unittest.mock import patch from saml2.config import config_factory from saml2.response import authn_response from saml2.sigver import SignatureError from dateutil import parser from pytest import raises from pathutils import dotname from pathutils import full_path XML_RESPONSE_XSW = full_path("saml2_response_xsw.xml") class TestAuthnResponse: def setup_class(self): self.conf = config_factory("sp", dotname("server_conf")) self.ar = authn_response(self.conf, "http://lingon.catalogix.se:8087/") @patch('saml2.response.validate_on_or_after', return_value=True) def test_verify_signed_xsw(self, mock_validate_on_or_after): self.ar.issue_instant_ok = Mock(return_value=True) with open(XML_RESPONSE_XSW) as fp: xml_response = fp.read() self.ar.outstanding_queries = {"id12": "http://localhost:8088/sso"} self.ar.timeslack = 10000 self.ar.loads(xml_response, decode=False) assert self.ar.came_from == 'http://localhost:8088/sso' assert self.ar.session_id() == "id12" assert self.ar.issuer() == 'urn:mace:example.com:saml:roland:idp' with raises(SignatureError): self.ar.verify() assert self.ar.ava is None assert self.ar.name_id is None