1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
from datetime import datetime
try:
from unittest.mock import Mock
from unittest.mock import patch
except ImportError:
from mock import Mock
from 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
|