Skip to content

Commit c8d2705

Browse files
author
Rebecka Gulliksson
committed
Fix bug in MetadataStore.extension().
Continue with the next metadata source if the entity id or the expected type (SP or IDP) SSO descriptor is not found in the current metadata source instead of prematurely returning.
1 parent fd7a4f6 commit c8d2705

File tree

2 files changed

+15
-4
lines changed

2 files changed

+15
-4
lines changed

src/saml2/mdstore.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -992,10 +992,7 @@ def extension(self, entity_id, typ, service):
992992
try:
993993
srvs = _md[entity_id][typ]
994994
except KeyError:
995-
return None
996-
997-
if not srvs:
998-
return srvs
995+
continue
999996

1000997
res = []
1001998
for srv in srvs:
@@ -1005,6 +1002,8 @@ def extension(self, entity_id, typ, service):
10051002
res.append(elem)
10061003
return res
10071004

1005+
return None
1006+
10081007
def ext_service(self, entity_id, typ, service, binding=None):
10091008
known_entity = False
10101009
for key, _md in self.metadata.items():

tests/test_30_mdstore.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
# -*- coding: utf-8 -*-
33
import datetime
44
import re
5+
from collections import OrderedDict
56

67
from future.backports.urllib.parse import quote_plus
78

@@ -455,5 +456,16 @@ def test_metadata_extension_algsupport():
455456
mdf = mds.metadata[full_path("uu.xml")]
456457
assert mds
457458

459+
460+
def test_extension():
461+
mds = MetadataStore(ATTRCONV, None)
462+
# use ordered dict to force expected entity to be last
463+
metadata = OrderedDict()
464+
metadata["1"] = {"entity1": {}}
465+
metadata["2"] = {"entity2": {"idpsso_descriptor": [{"extensions": {"extension_elements": [{"__class__": "test"}]}}]}}
466+
mds.metadata = metadata
467+
assert mds.extension("entity2", "idpsso_descriptor", "test")
468+
469+
458470
if __name__ == "__main__":
459471
test_metadata_extension_algsupport()

0 commit comments

Comments
 (0)