Files
deb-python-pysaml2/tests/test_63_ecp.py
Roland Hedberg 1d7b2964d1 Initial add
2012-05-23 18:56:51 +02:00

69 lines
2.7 KiB
Python

__author__ = 'rolandh'
from saml2 import soap
from saml2 import samlp
from saml2 import config
from saml2 import ecp
from saml2.profile import ecp as ecp_prof
from saml2.profile import paos
from saml2.client import Saml2Client
def _eq(l1, l2):
if len(l1) == len(l2):
return set(l1) == set(l2)
else:
return len(l1) == len(l2)
def test_multiple_soap_headers():
xml_str = open("ecp_soap.xml").read()
res = soap.class_instances_from_soap_enveloped_saml_thingies(xml_str,
[ecp_prof,
paos,
samlp])
assert res["body"].c_tag == "AuthnRequest"
assert len(res["header"]) == 3
headers = ["{%s}%s" % (i.c_namespace, i.c_tag) for i in res["header"]]
print headers
assert _eq(headers,['{urn:liberty:paos:2003-08}Request',
'{urn:oasis:names:tc:SAML:2.0:profiles:SSO:ecp}Request',
'{urn:oasis:names:tc:SAML:2.0:profiles:SSO:ecp}RelayState'])
_relay_state = None
for item in res["header"]:
if item.c_tag == "RelayState" and item.c_namespace == ecp_prof.NAMESPACE:
_relay_state = item
assert _relay_state
assert _relay_state.actor == "http://schemas.xmlsoap.org/soap/actor/next"
class TestECPClient(object):
def setup_class(self):
conf = config.SPConfig()
conf.load_file("server_conf")
self.client = Saml2Client(conf)
def test_ecp_authn(self):
ssid, soap_req = ecp.ecp_auth_request(self.client,
"urn:mace:example.com:saml:roland:idp",
"id1")
print soap_req
response = soap.class_instances_from_soap_enveloped_saml_thingies(
soap_req,
[paos,
ecp_prof,
samlp])
print response
assert len(response["header"]) == 2
assert response["body"].c_tag == "AuthnRequest"
assert response["body"].c_namespace == samlp.NAMESPACE
headers = ["{%s}%s" % (i.c_namespace,
i.c_tag) for i in response["header"]]
print headers
assert _eq(headers,['{urn:liberty:paos:2003-08}Request',
#'{urn:oasis:names:tc:SAML:2.0:profiles:SSO:ecp}Request',
'{urn:oasis:names:tc:SAML:2.0:profiles:SSO:ecp}RelayState'])