def test_swami_1(): md = metadata.MetaData(attrconv=ATTRCONV) md.import_metadata(_read_file(SWAMI_METADATA), "-") print len(md.entity) assert len(md.entity) idps = dict([(id, ent["idpsso"]) for id, ent in md.entity.items() if "idpsso" in ent]) print idps assert idps.keys() idpsso = md.single_sign_on_service("https://idp.umu.se/saml2/idp/metadata.php") assert md.name("https://idp.umu.se/saml2/idp/metadata.php") == (u"Ume\xe5 University (SAML2)") assert len(idpsso) == 1 assert idpsso == ["https://idp.umu.se/saml2/idp/SSOService.php"] print md._loc_key["https://idp.umu.se/saml2/idp/SSOService.php"] ssocerts = md.certs("https://idp.umu.se/saml2/idp/SSOService.php", "signing") print ssocerts assert len(ssocerts) == 1 sps = dict([(id, ent["spsso"]) for id, ent in md.entity.items() if "spsso" in ent]) acs_sp = [] for nam, desc in sps.items(): if desc[0].attribute_consuming_service: acs_sp.append(nam) # print md.wants('https://www.diva-portal.org/shibboleth') wants = md.attribute_requirement("https://connect8.sunet.se/shibboleth") lnamn = [to_local_name(md.attrconv, attr) for attr in wants[1]] assert _eq(lnamn, ["mail", "givenName", "eduPersonPrincipalName", "sn", "eduPersonScopedAffiliation"]) wants = md.attribute_requirement("https://beta.lobber.se/shibboleth") assert wants[0] == [] lnamn = [to_local_name(md.attrconv, attr) for attr in wants[1]] assert _eq( lnamn, ["eduPersonScopedAffiliation", "eduPersonEntitlement", "eduPersonPrincipalName", "sn", "mail", "givenName"], )
def test_sp_metadata(): md = metadata.MetaData(attrconv=ATTRCONV) md.import_metadata(_fix_valid_until(_read_file(SP_METADATA)), "-") print md.entity assert len(md.entity) == 1 assert md.entity.keys() == ["urn:mace:umu.se:saml:roland:sp"] assert _eq( md.entity["urn:mace:umu.se:saml:roland:sp"].keys(), ["valid_until", "organization", "spsso", "contact_person"] ) print md.entity["urn:mace:umu.se:saml:roland:sp"]["spsso"][0].keyswv() (req, opt) = md.attribute_requirement("urn:mace:umu.se:saml:roland:sp") print req assert len(req) == 3 assert len(opt) == 1 assert opt[0].name == "urn:oid:2.5.4.12" assert opt[0].friendly_name == "title" assert _eq([n.name for n in req], ["urn:oid:2.5.4.4", "urn:oid:2.5.4.42", "urn:oid:0.9.2342.19200300.100.1.3"]) assert _eq([n.friendly_name for n in req], ["surName", "givenName", "mail"])
def attribute_requirement(self, entity_id, index=0): for md in self.metadata.values(): if entity_id in md: return md.attribute_requirement(entity_id, index)