def test_template_attribute_overrides_existing_attribute(self): mapping = { "attributes": { "last_name": { "p1": ["sn"], }, "first_name": { "p1": ["givenName"], }, "name": { "p1": ["cn"] } }, "template_attributes": { "name": { "p1": ["${first_name[0]} ${last_name[0]}"] } } } converter = AttributeMapper(mapping) data = {"sn": ["Surname"], "givenName": ["Given"], "cn": ["Common Name"]} internal_repr = converter.to_internal("p1", data) external_repr = converter.from_internal("p1", internal_repr) assert len(internal_repr["name"]) == 1 assert internal_repr["name"][0] == "Given Surname" assert external_repr["cn"][0] == "Given Surname"
def test_simple_template_mapping(self): mapping = { "attributes": { "last_name": { "p1": ["sn"], "p2": ["sn"] }, "first_name": { "p1": ["givenName"], "p2": ["givenName"] }, "name": { "p2": ["cn"] } }, "template_attributes": { "name": { "p2": ["${first_name[0]} ${last_name[0]}"] } } } converter = AttributeMapper(mapping) internal_repr = converter.to_internal("p2", {"givenName": ["Valfrid"], "sn": ["Lindeman"]}) assert "name" in internal_repr assert len(internal_repr["name"]) == 1 assert internal_repr["name"][0] == "Valfrid Lindeman" external_repr = converter.from_internal("p2", internal_repr) assert external_repr["cn"][0] == "Valfrid Lindeman"
def test_from_internal_with_unknown_profile(self): mapping = { "attributes": { "mail": { "foo": ["email"], }, }, } converter = AttributeMapper(mapping) external_repr = converter.from_internal("bar", {"mail": "bob"}) assert external_repr == {}
def test_mapping_to_nested_attribute(self): mapping = { "attributes": { "address": { "openid": ["address.formatted"], "saml": ["postaladdress"] }, }, } data = { "postaladdress": ["100 Universal City Plaza, Hollywood CA 91608, USA"] } converter = AttributeMapper(mapping) internal_repr = converter.to_internal("saml", data) external_repr = converter.from_internal("openid", internal_repr) assert external_repr["address"]["formatted"] == data["postaladdress"]
def test_multiple_source_attribute_values(self): mapping = { "attributes": { "mail": { "saml": ["mail", "emailAddress", "email"] }, }, } data = { "mail": ["*****@*****.**"], "email": ["*****@*****.**"], "emailAddress": ["*****@*****.**"], } expected = Counter(["*****@*****.**", "*****@*****.**", "*****@*****.**"]) converter = AttributeMapper(mapping) internal_repr = converter.to_internal("saml", data) assert Counter(internal_repr["mail"]) == expected external_repr = converter.from_internal("saml", internal_repr) assert Counter(external_repr[mapping["attributes"]["mail"]["saml"][0]]) == expected