Skip to content

Commit 87bda2c

Browse files
author
Rebecka Gulliksson
committed
Make AttributeConverter.adjust more robust (by fixing attribute name typo).
1 parent a41ca68 commit 87bda2c

File tree

2 files changed

+40
-22
lines changed

2 files changed

+40
-22
lines changed

src/saml2/attribute_converter.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,7 @@ def adjust(self):
284284
if self._fro is None and self._to is not None:
285285
self._fro = dict(
286286
[(value.lower(), key) for key, value in self._to.items()])
287-
if self._to is None and self.fro is not None:
287+
if self._to is None and self._fro is not None:
288288
self._to = dict(
289289
[(value.lower(), key) for key, value in self._fro.items()])
290290

tests/test_19_attribute_converter.py

Lines changed: 39 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,15 @@
55
from attribute_statement_data import *
66

77
from pathutils import full_path
8-
from saml2.attribute_converter import AttributeConverterNOOP
8+
from saml2.attribute_converter import AttributeConverterNOOP, AttributeConverter
99
from saml2.attribute_converter import to_local
1010
from saml2.saml import attribute_from_string
1111

1212

13-
def _eq(l1,l2):
13+
def _eq(l1, l2):
1414
return set(l1) == set(l2)
1515

16+
1617
BASIC_NF = 'urn:oasis:names:tc:SAML:2.0:attrname-format:basic'
1718
URI_NF = 'urn:oasis:names:tc:SAML:2.0:attrname-format:uri'
1819
SAML1 = 'urn:mace:shibboleth:1.0:attributeNamespace:uri'
@@ -30,11 +31,11 @@ def setup_class(self):
3031
def test_setup(self):
3132
print(self.acs)
3233
assert len(self.acs) == 3
33-
assert _eq([a.name_format for a in self.acs],[BASIC_NF, URI_NF, SAML1] )
34+
assert _eq([a.name_format for a in self.acs], [BASIC_NF, URI_NF, SAML1])
3435

3536
def test_ava_fro_1(self):
3637
ats = saml.attribute_statement_from_string(STATEMENT1)
37-
#print(ats)
38+
# print(ats)
3839
ava = None
3940

4041
for ac in self.acs:
@@ -56,7 +57,7 @@ def test_ava_fro_1(self):
5657

5758
def test_ava_fro_2(self):
5859
ats = saml.attribute_statement_from_string(STATEMENT2)
59-
#print(ats)
60+
# print(ats)
6061
ava = {}
6162
for ac in self.acs:
6263
ava.update(ac.fro(ats))
@@ -66,7 +67,7 @@ def test_ava_fro_2(self):
6667
'uid', 'mail', 'givenName', 'sn'])
6768

6869
def test_to_attrstat_1(self):
69-
ava = { "givenName": "Roland", "sn": "Hedberg" }
70+
ava = {"givenName": "Roland", "sn": "Hedberg"}
7071

7172
statement = attribute_converter.from_local(self.acs, ava, BASIC_NF)
7273

@@ -90,7 +91,7 @@ def test_to_attrstat_1(self):
9091
assert False
9192

9293
def test_to_attrstat_2(self):
93-
ava = { "givenName": "Roland", "surname": "Hedberg" }
94+
ava = {"givenName": "Roland", "surname": "Hedberg"}
9495

9596
statement = attribute_converter.from_local(self.acs, ava, URI_NF)
9697

@@ -117,17 +118,17 @@ def test_to_local_name(self):
117118

118119
attr = [
119120
saml.Attribute(
120-
friendly_name="surName",
121-
name="urn:oid:2.5.4.4",
122-
name_format="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"),
121+
friendly_name="surName",
122+
name="urn:oid:2.5.4.4",
123+
name_format="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"),
123124
saml.Attribute(
124-
friendly_name="efternamn",
125-
name="urn:oid:2.5.4.42",
126-
name_format="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"),
125+
friendly_name="efternamn",
126+
name="urn:oid:2.5.4.42",
127+
name_format="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"),
127128
saml.Attribute(
128-
friendly_name="titel",
129-
name="urn:oid:2.5.4.12",
130-
name_format="urn:oasis:names:tc:SAML:2.0:attrname-format:uri")]
129+
friendly_name="titel",
130+
name="urn:oid:2.5.4.12",
131+
name_format="urn:oasis:names:tc:SAML:2.0:attrname-format:uri")]
131132

132133
lan = [attribute_converter.to_local_name(self.acs, a) for a in attr]
133134

@@ -153,16 +154,16 @@ def test_to_local_name(self):
153154
def test_to_local_name_from_basic(self):
154155
attr = [
155156
saml.Attribute(
156-
name="urn:mace:dir:attribute-def:eduPersonPrimaryOrgUnitDN",
157-
name_format="urn:oasis:names:tc:SAML:2.0:attrname-format:basic")
157+
name="urn:mace:dir:attribute-def:eduPersonPrimaryOrgUnitDN",
158+
name_format="urn:oasis:names:tc:SAML:2.0:attrname-format:basic")
158159
]
159160

160161
lan = [attribute_converter.to_local_name(self.acs, a) for a in attr]
161162

162163
assert _eq(lan, ['eduPersonPrimaryOrgUnitDN'])
163164

164165
def test_to_and_for(self):
165-
ava = { "givenName": "Roland", "surname": "Hedberg" }
166+
ava = {"givenName": "Roland", "surname": "Hedberg"}
166167

167168
basic_ac = [a for a in self.acs if a.name_format == BASIC_NF][0]
168169

@@ -192,9 +193,26 @@ def test_mixed_attributes_1(self):
192193
'uid': ['demouser'], 'urn:example:com:foo': ['Thing'],
193194
'user_id': ['bob']}
194195

196+
def test_adjust_with_only_from_defined(self):
197+
attr_conv = AttributeConverter()
198+
attr_conv._fro = {"id1": "name1", "id2": "name2"}
199+
attr_conv.adjust()
200+
assert attr_conv._to is not None
201+
202+
def test_adjust_with_only_to_defined(self):
203+
attr_conv = AttributeConverter()
204+
attr_conv._to = {"id1": "name1", "id2": "name2"}
205+
attr_conv.adjust()
206+
assert attr_conv._fro is not None
207+
208+
def test_adjust_with_no_mapping_defined(self):
209+
attr_conv = AttributeConverter()
210+
attr_conv.adjust()
211+
assert attr_conv._fro is None and attr_conv._to is None
212+
195213

196214
def test_noop_attribute_conversion():
197-
ava = {"urn:oid:2.5.4.4": "Roland", "urn:oid:2.5.4.42": "Hedberg" }
215+
ava = {"urn:oid:2.5.4.4": "Roland", "urn:oid:2.5.4.42": "Hedberg"}
198216
aconv = AttributeConverterNOOP(URI_NF)
199217
res = aconv.to_(ava)
200218

@@ -229,4 +247,4 @@ def test_schac():
229247
t = TestAC()
230248
t.setup_class()
231249
t.test_to_attrstat_1()
232-
#test_schac()
250+
# test_schac()

0 commit comments

Comments
 (0)