When doing local import allow for importing all files within a directory.
This commit is contained in:
		@@ -1,9 +1,12 @@
 | 
			
		||||
from dircache import listdir
 | 
			
		||||
import logging
 | 
			
		||||
import os
 | 
			
		||||
import sys
 | 
			
		||||
import json
 | 
			
		||||
 | 
			
		||||
from hashlib import sha1
 | 
			
		||||
from urllib import urlencode, quote_plus
 | 
			
		||||
from os.path import isfile, join
 | 
			
		||||
from saml2.httpbase import HTTPBase
 | 
			
		||||
from saml2.extension.idpdisc import BINDING_DISCO
 | 
			
		||||
from saml2.extension.idpdisc import DiscoveryResponse
 | 
			
		||||
@@ -649,7 +652,18 @@ class MetadataStore(object):
 | 
			
		||||
    def load(self, typ, *args, **kwargs):
 | 
			
		||||
        if typ == "local":
 | 
			
		||||
            key = args[0]
 | 
			
		||||
            _md = MetaDataFile(self.onts, self.attrc, args[0])
 | 
			
		||||
            # if library read every file in the library
 | 
			
		||||
            if os.path.isdir(key):
 | 
			
		||||
                files = [f for f in listdir(key) if isfile(join(key, f))]
 | 
			
		||||
                for fil in files:
 | 
			
		||||
                    _md = MetaDataFile(self.onts, self.attrc, fil)
 | 
			
		||||
                    _md.load()
 | 
			
		||||
                    _key = join(key, fil)
 | 
			
		||||
                    self.metadata[_key] = _md
 | 
			
		||||
                return
 | 
			
		||||
            else:
 | 
			
		||||
                # else it's just a plain old file so read it
 | 
			
		||||
                _md = MetaDataFile(self.onts, self.attrc, key)
 | 
			
		||||
        elif typ == "inline":
 | 
			
		||||
            self.ii += 1
 | 
			
		||||
            key = self.ii
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										55
									
								
								tests/metadata/idp.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								tests/metadata/idp.xml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,55 @@
 | 
			
		||||
<?xml version='1.0' encoding='UTF-8'?>
 | 
			
		||||
<ns0:EntitiesDescriptor xmlns:ns0="urn:oasis:names:tc:SAML:2.0:metadata">
 | 
			
		||||
    <ns0:EntityDescriptor entityID="urn:mace:example.com:saml:roland:idp">
 | 
			
		||||
        <ns0:IDPSSODescriptor WantAuthnRequestsSigned="true"
 | 
			
		||||
                              protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
 | 
			
		||||
            <ns0:KeyDescriptor>
 | 
			
		||||
                <ns1:KeyInfo xmlns:ns1="http://www.w3.org/2000/09/xmldsig#">
 | 
			
		||||
                    <ns1:X509Data>
 | 
			
		||||
                        <ns1:X509Certificate>
 | 
			
		||||
                            MIICsDCCAhmgAwIBAgIJAJrzqSSwmDY9MA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV
 | 
			
		||||
                            BAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBX
 | 
			
		||||
                            aWRnaXRzIFB0eSBMdGQwHhcNMDkxMDA2MTk0OTQxWhcNMDkxMTA1MTk0OTQxWjBF
 | 
			
		||||
                            MQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50
 | 
			
		||||
                            ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
 | 
			
		||||
                            gQDJg2cms7MqjniT8Fi/XkNHZNPbNVQyMUMXE9tXOdqwYCA1cc8vQdzkihscQMXy
 | 
			
		||||
                            3iPw2cMggBu6gjMTOSOxECkuvX5ZCclKr8pXAJM5cY6gVOaVO2PdTZcvDBKGbiaN
 | 
			
		||||
                            efiEw5hnoZomqZGp8wHNLAUkwtH9vjqqvxyS/vclc6k2ewIDAQABo4GnMIGkMB0G
 | 
			
		||||
                            A1UdDgQWBBRePsKHKYJsiojE78ZWXccK9K4aJTB1BgNVHSMEbjBsgBRePsKHKYJs
 | 
			
		||||
                            iojE78ZWXccK9K4aJaFJpEcwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgTClNvbWUt
 | 
			
		||||
                            U3RhdGUxITAfBgNVBAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZIIJAJrzqSSw
 | 
			
		||||
                            mDY9MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAJSrKOEzHO7TL5cy6
 | 
			
		||||
                            h3qh+3+JAk8HbGBW+cbX6KBCAw/mzU8flK25vnWwXS3dv2FF3Aod0/S7AWNfKib5
 | 
			
		||||
                            U/SA9nJaz/mWeF9S0farz9AQFc8/NSzAzaVq7YbM4F6f6N2FRl7GikdXRCed45j6
 | 
			
		||||
                            mrPzGzk3ECbupFnqyREH3+ZPSdk=
 | 
			
		||||
                        </ns1:X509Certificate>
 | 
			
		||||
                    </ns1:X509Data>
 | 
			
		||||
                </ns1:KeyInfo>
 | 
			
		||||
            </ns0:KeyDescriptor>
 | 
			
		||||
            <ns0:SingleLogoutService
 | 
			
		||||
                    Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
 | 
			
		||||
                    Location="http://localhost:8088/slo"/>
 | 
			
		||||
            <ns0:SingleSignOnService
 | 
			
		||||
                    Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
 | 
			
		||||
                    Location="http://localhost:8088/sso"/>
 | 
			
		||||
            <ns0:SingleSignOnService
 | 
			
		||||
                    Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP"
 | 
			
		||||
                    Location="http://localhost:8088/sso_soap"/>
 | 
			
		||||
        </ns0:IDPSSODescriptor>
 | 
			
		||||
        <ns0:Organization>
 | 
			
		||||
            <ns0:OrganizationName xml:lang="en">Exempel AB
 | 
			
		||||
            </ns0:OrganizationName>
 | 
			
		||||
            <ns0:OrganizationDisplayName xml:lang="se">Exempel AB
 | 
			
		||||
            </ns0:OrganizationDisplayName>
 | 
			
		||||
            <ns0:OrganizationDisplayName xml:lang="en">Example Co.
 | 
			
		||||
            </ns0:OrganizationDisplayName>
 | 
			
		||||
            <ns0:OrganizationURL xml:lang="en">http://www.example.com/roland
 | 
			
		||||
            </ns0:OrganizationURL>
 | 
			
		||||
        </ns0:Organization>
 | 
			
		||||
        <ns0:ContactPerson contactType="technical">
 | 
			
		||||
            <ns0:GivenName>John</ns0:GivenName>
 | 
			
		||||
            <ns0:SurName>Smith</ns0:SurName>
 | 
			
		||||
            <ns0:EmailAddress>john.smith@example.com</ns0:EmailAddress>
 | 
			
		||||
        </ns0:ContactPerson>
 | 
			
		||||
    </ns0:EntityDescriptor>
 | 
			
		||||
</ns0:EntitiesDescriptor>
 | 
			
		||||
							
								
								
									
										98
									
								
								tests/metadata/idp_2.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										98
									
								
								tests/metadata/idp_2.xml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,98 @@
 | 
			
		||||
<?xml version='1.0' encoding='UTF-8'?>
 | 
			
		||||
<ns0:EntitiesDescriptor xmlns:ns0="urn:oasis:names:tc:SAML:2.0:metadata">
 | 
			
		||||
    <ns0:EntityDescriptor entityID="http://example.com/SAML/IDP">
 | 
			
		||||
        <ns0:IDPSSODescriptor WantAuthnRequestsSigned="true"
 | 
			
		||||
                              protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
 | 
			
		||||
            <ns0:KeyDescriptor>
 | 
			
		||||
                <ns1:KeyInfo xmlns:ns1="http://www.w3.org/2000/09/xmldsig#">
 | 
			
		||||
                    <ns1:X509Data>
 | 
			
		||||
                        <ns1:X509Certificate>
 | 
			
		||||
                            MIICsDCCAhmgAwIBAgIJAJrzqSSwmDY9MA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV
 | 
			
		||||
                            BAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBX
 | 
			
		||||
                            aWRnaXRzIFB0eSBMdGQwHhcNMDkxMDA2MTk0OTQxWhcNMDkxMTA1MTk0OTQxWjBF
 | 
			
		||||
                            MQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50
 | 
			
		||||
                            ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
 | 
			
		||||
                            gQDJg2cms7MqjniT8Fi/XkNHZNPbNVQyMUMXE9tXOdqwYCA1cc8vQdzkihscQMXy
 | 
			
		||||
                            3iPw2cMggBu6gjMTOSOxECkuvX5ZCclKr8pXAJM5cY6gVOaVO2PdTZcvDBKGbiaN
 | 
			
		||||
                            efiEw5hnoZomqZGp8wHNLAUkwtH9vjqqvxyS/vclc6k2ewIDAQABo4GnMIGkMB0G
 | 
			
		||||
                            A1UdDgQWBBRePsKHKYJsiojE78ZWXccK9K4aJTB1BgNVHSMEbjBsgBRePsKHKYJs
 | 
			
		||||
                            iojE78ZWXccK9K4aJaFJpEcwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgTClNvbWUt
 | 
			
		||||
                            U3RhdGUxITAfBgNVBAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZIIJAJrzqSSw
 | 
			
		||||
                            mDY9MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAJSrKOEzHO7TL5cy6
 | 
			
		||||
                            h3qh+3+JAk8HbGBW+cbX6KBCAw/mzU8flK25vnWwXS3dv2FF3Aod0/S7AWNfKib5
 | 
			
		||||
                            U/SA9nJaz/mWeF9S0farz9AQFc8/NSzAzaVq7YbM4F6f6N2FRl7GikdXRCed45j6
 | 
			
		||||
                            mrPzGzk3ECbupFnqyREH3+ZPSdk=
 | 
			
		||||
                        </ns1:X509Certificate>
 | 
			
		||||
                    </ns1:X509Data>
 | 
			
		||||
                </ns1:KeyInfo>
 | 
			
		||||
            </ns0:KeyDescriptor>
 | 
			
		||||
            <ns0:SingleLogoutService
 | 
			
		||||
                    Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
 | 
			
		||||
                    Location="http://localhost:8088/slo"/>
 | 
			
		||||
            <ns0:SingleSignOnService
 | 
			
		||||
                    Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
 | 
			
		||||
                    Location="http://localhost:8088/sso"/>
 | 
			
		||||
        </ns0:IDPSSODescriptor>
 | 
			
		||||
        <ns0:Organization>
 | 
			
		||||
            <ns0:OrganizationName xml:lang="en">Exempel AB
 | 
			
		||||
            </ns0:OrganizationName>
 | 
			
		||||
            <ns0:OrganizationDisplayName xml:lang="se">Exempel AB
 | 
			
		||||
            </ns0:OrganizationDisplayName>
 | 
			
		||||
            <ns0:OrganizationDisplayName xml:lang="en">Example Co.
 | 
			
		||||
            </ns0:OrganizationDisplayName>
 | 
			
		||||
            <ns0:OrganizationURL xml:lang="en">http://www.example.com/roland
 | 
			
		||||
            </ns0:OrganizationURL>
 | 
			
		||||
        </ns0:Organization>
 | 
			
		||||
        <ns0:ContactPerson contactType="technical">
 | 
			
		||||
            <ns0:GivenName>John</ns0:GivenName>
 | 
			
		||||
            <ns0:SurName>Smith</ns0:SurName>
 | 
			
		||||
            <ns0:EmailAddress>john.smith@example.com</ns0:EmailAddress>
 | 
			
		||||
        </ns0:ContactPerson>
 | 
			
		||||
    </ns0:EntityDescriptor>
 | 
			
		||||
    <ns0:EntityDescriptor entityID="http://example.com/SAML/AA">
 | 
			
		||||
        <ns0:AttributeAuthorityDescriptor
 | 
			
		||||
                protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
 | 
			
		||||
            <ns0:KeyDescriptor>
 | 
			
		||||
                <ns2:KeyInfo xmlns:ns2="http://www.w3.org/2000/09/xmldsig#">
 | 
			
		||||
                    <ns2:X509Data>
 | 
			
		||||
                        <ns2:X509Certificate>
 | 
			
		||||
                            MIICsDCCAhmgAwIBAgIJAJrzqSSwmDY9MA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV
 | 
			
		||||
                            BAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBX
 | 
			
		||||
                            aWRnaXRzIFB0eSBMdGQwHhcNMDkxMDA2MTk0OTQxWhcNMDkxMTA1MTk0OTQxWjBF
 | 
			
		||||
                            MQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50
 | 
			
		||||
                            ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
 | 
			
		||||
                            gQDJg2cms7MqjniT8Fi/XkNHZNPbNVQyMUMXE9tXOdqwYCA1cc8vQdzkihscQMXy
 | 
			
		||||
                            3iPw2cMggBu6gjMTOSOxECkuvX5ZCclKr8pXAJM5cY6gVOaVO2PdTZcvDBKGbiaN
 | 
			
		||||
                            efiEw5hnoZomqZGp8wHNLAUkwtH9vjqqvxyS/vclc6k2ewIDAQABo4GnMIGkMB0G
 | 
			
		||||
                            A1UdDgQWBBRePsKHKYJsiojE78ZWXccK9K4aJTB1BgNVHSMEbjBsgBRePsKHKYJs
 | 
			
		||||
                            iojE78ZWXccK9K4aJaFJpEcwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgTClNvbWUt
 | 
			
		||||
                            U3RhdGUxITAfBgNVBAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZIIJAJrzqSSw
 | 
			
		||||
                            mDY9MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAJSrKOEzHO7TL5cy6
 | 
			
		||||
                            h3qh+3+JAk8HbGBW+cbX6KBCAw/mzU8flK25vnWwXS3dv2FF3Aod0/S7AWNfKib5
 | 
			
		||||
                            U/SA9nJaz/mWeF9S0farz9AQFc8/NSzAzaVq7YbM4F6f6N2FRl7GikdXRCed45j6
 | 
			
		||||
                            mrPzGzk3ECbupFnqyREH3+ZPSdk=
 | 
			
		||||
                        </ns2:X509Certificate>
 | 
			
		||||
                    </ns2:X509Data>
 | 
			
		||||
                </ns2:KeyInfo>
 | 
			
		||||
            </ns0:KeyDescriptor>
 | 
			
		||||
            <ns0:AttributeService
 | 
			
		||||
                    Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP"
 | 
			
		||||
                    Location="http://localhost:8089/as"/>
 | 
			
		||||
        </ns0:AttributeAuthorityDescriptor>
 | 
			
		||||
        <ns0:Organization>
 | 
			
		||||
            <ns0:OrganizationName xml:lang="en">Exempel AB
 | 
			
		||||
            </ns0:OrganizationName>
 | 
			
		||||
            <ns0:OrganizationDisplayName xml:lang="se">Exempel AB
 | 
			
		||||
            </ns0:OrganizationDisplayName>
 | 
			
		||||
            <ns0:OrganizationDisplayName xml:lang="en">Example Co.
 | 
			
		||||
            </ns0:OrganizationDisplayName>
 | 
			
		||||
            <ns0:OrganizationURL xml:lang="en">http://www.example.com/roland
 | 
			
		||||
            </ns0:OrganizationURL>
 | 
			
		||||
        </ns0:Organization>
 | 
			
		||||
        <ns0:ContactPerson contactType="technical">
 | 
			
		||||
            <ns0:GivenName>John</ns0:GivenName>
 | 
			
		||||
            <ns0:SurName>Smith</ns0:SurName>
 | 
			
		||||
            <ns0:EmailAddress>john.smith@example.com</ns0:EmailAddress>
 | 
			
		||||
        </ns0:ContactPerson>
 | 
			
		||||
    </ns0:EntityDescriptor>
 | 
			
		||||
</ns0:EntitiesDescriptor>
 | 
			
		||||
							
								
								
									
										17
									
								
								tests/metadata/idp_uiinfo.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								tests/metadata/idp_uiinfo.xml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,17 @@
 | 
			
		||||
<?xml version='1.0' encoding='UTF-8'?>
 | 
			
		||||
<ns0:EntitiesDescriptor xmlns:ns0="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:ns1="urn:mace:shibboleth:metadata:1.0" xmlns:ns2="urn:oasis:names:tc:SAML:metadata:ui" xmlns:ns3="http://www.w3.org/2000/09/xmldsig#"><ns0:EntityDescriptor entityID="http://example.com/saml2/idp.xml"><ns0:IDPSSODescriptor WantAuthnRequestsSigned="false" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol"><ns0:Extensions><ns1:Scope regexp="false">example.org</ns1:Scope><ns2:UIInfo><ns2:Keywords xml:lang="en">foo bar</ns2:Keywords><ns2:Logo height="40" width="30">http://example.com/logo.jpg</ns2:Logo><ns2:InformationURL>http://example.com/saml2/info.html</ns2:InformationURL><ns2:DisplayName>Example Co.</ns2:DisplayName><ns2:Description xml:lang="se">Exempel bolag</ns2:Description><ns2:PrivacyStatementURL>http://example.com/saml2/privacyStatement.html</ns2:PrivacyStatementURL></ns2:UIInfo></ns0:Extensions><ns0:KeyDescriptor><ns3:KeyInfo><ns3:X509Data><ns3:X509Certificate>MIICsDCCAhmgAwIBAgIJAJrzqSSwmDY9MA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV
 | 
			
		||||
BAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBX
 | 
			
		||||
aWRnaXRzIFB0eSBMdGQwHhcNMDkxMDA2MTk0OTQxWhcNMDkxMTA1MTk0OTQxWjBF
 | 
			
		||||
MQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50
 | 
			
		||||
ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
 | 
			
		||||
gQDJg2cms7MqjniT8Fi/XkNHZNPbNVQyMUMXE9tXOdqwYCA1cc8vQdzkihscQMXy
 | 
			
		||||
3iPw2cMggBu6gjMTOSOxECkuvX5ZCclKr8pXAJM5cY6gVOaVO2PdTZcvDBKGbiaN
 | 
			
		||||
efiEw5hnoZomqZGp8wHNLAUkwtH9vjqqvxyS/vclc6k2ewIDAQABo4GnMIGkMB0G
 | 
			
		||||
A1UdDgQWBBRePsKHKYJsiojE78ZWXccK9K4aJTB1BgNVHSMEbjBsgBRePsKHKYJs
 | 
			
		||||
iojE78ZWXccK9K4aJaFJpEcwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgTClNvbWUt
 | 
			
		||||
U3RhdGUxITAfBgNVBAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZIIJAJrzqSSw
 | 
			
		||||
mDY9MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAJSrKOEzHO7TL5cy6
 | 
			
		||||
h3qh+3+JAk8HbGBW+cbX6KBCAw/mzU8flK25vnWwXS3dv2FF3Aod0/S7AWNfKib5
 | 
			
		||||
U/SA9nJaz/mWeF9S0farz9AQFc8/NSzAzaVq7YbM4F6f6N2FRl7GikdXRCed45j6
 | 
			
		||||
mrPzGzk3ECbupFnqyREH3+ZPSdk=
 | 
			
		||||
</ns3:X509Certificate></ns3:X509Data></ns3:KeyInfo></ns0:KeyDescriptor><ns0:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="http://example.com/saml2/" /></ns0:IDPSSODescriptor></ns0:EntityDescriptor></ns0:EntitiesDescriptor>
 | 
			
		||||
@@ -73,6 +73,9 @@ METADATACONF = {
 | 
			
		||||
    },
 | 
			
		||||
    "8": {
 | 
			
		||||
        "mdfile": [full_path("swamid.md")]
 | 
			
		||||
    },
 | 
			
		||||
    "9": {
 | 
			
		||||
        "local": [full_path("metadata")]
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -252,5 +255,16 @@ def test_mdx_certs():
 | 
			
		||||
 | 
			
		||||
    assert len(foo) == 1
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_load_local_dir():
 | 
			
		||||
    sec_config.xmlsec_binary = sigver.get_xmlsec_binary(["/opt/local/bin"])
 | 
			
		||||
    mds = MetadataStore(ONTS.values(), ATTRCONV, sec_config,
 | 
			
		||||
                        disable_ssl_certificate_validation=True)
 | 
			
		||||
 | 
			
		||||
    mds.imp(METADATACONF["9"])
 | 
			
		||||
    print mds
 | 
			
		||||
    assert len(mds) == 3  # Three sources
 | 
			
		||||
    assert len(mds.keys()) == 4  # number of idps
 | 
			
		||||
 | 
			
		||||
if __name__ == "__main__":
 | 
			
		||||
    test_mdx_certs()
 | 
			
		||||
    test_load_local_dir()
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user