Skip to content

Commit 94b94b6

Browse files
committed
✅ [#2263] Add tests for setup config for DigiD SAML
https://taiga.maykinmedia.nl/project/open-inwoner/task/2263
1 parent dcbfce1 commit 94b94b6

File tree

2 files changed

+240
-0
lines changed

2 files changed

+240
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" ID="_8aeffce5e70efe56f47d80f1f0322e9a5dbf6bf0" entityID="https://was-preprod1.digid.nl/saml/idp/metadata"><ds:Signature><ds:SignedInfo><ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/><ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/><ds:Reference URI="#_8aeffce5e70efe56f47d80f1f0322e9a5dbf6bf0"><ds:Transforms><ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/><ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"><ec:InclusiveNamespaces PrefixList="ds saml samlp xs"/></ds:Transform></ds:Transforms><ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/><ds:DigestValue>NoOIwQlJT+i8sPfoZAqpxlGTh7hqWVGeVHcu9vhQ+xA=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>ixScWp/yrGs4LRQHqnF9Zr/Jn1MOIS5TwiWwiUc3d5sv+jMbVFGSw4fHE0Yu6yp5kOajK3wCY8TbfcIb++na5XWlHDfMD3MhiNBTdr2vIw6tdqetSCng02r5BQN1wug1qH1RY8FRH39X0opOVbs/V9HsCoquRvVRxjidz9L5Q3PNx/VPGHWkW4iclJKsJT4UPqTR6ZQww3Krd7XzUA3pnTx97WxJegfwmg70H/WQiasV1eI4tWm3PFHhhS2TuVshxoWxa2Qzz6HHYsOX+jWVnL9M3YF/RXuoMdt3cOtde7/EX6Cw2r50hAODnClQgRoxuPMBhdTXAyq6NirmPR9dKg==</ds:SignatureValue><ds:KeyInfo><ds:KeyName>7593b799e735055fcd479caa35d44d455576cefc</ds:KeyName></ds:KeyInfo></ds:Signature><md:IDPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol"><md:KeyDescriptor use="signing"><ds:KeyInfo><ds:KeyName>7593b799e735055fcd479caa35d44d455576cefc</ds:KeyName><ds:X509Data><ds:X509Certificate>MIIG+zCCBOOgAwIBAgIUJmQio80TiqOX3LMrbzeG1dh0ngEwDQYJKoZIhvcN
3+
AQELBQAwgYAxCzAJBgNVBAYTAk5MMSAwHgYDVQQKDBdRdW9WYWRpcyBUcnVz
4+
dGxpbmsgQi5WLjEXMBUGA1UEYQwOTlRSTkwtMzAyMzc0NTkxNjA0BgNVBAMM
5+
LVF1b1ZhZGlzIFBLSW92ZXJoZWlkIFByaXZhdGUgU2VydmljZXMgQ0EgLSBH
6+
MTAeFw0yMzA5MjExOTEyNTlaFw0yNjA5MjExOTA3MDBaMF4xCzAJBgNVBAYT
7+
Ak5MMQ8wDQYDVQQKDAZMb2dpdXMxHTAbBgNVBAUTFDAwMDAwMDA0MTY2OTA5
8+
OTEzMDAwMR8wHQYDVQQDDBZzYW1sLXNpZ24ucHAxLmRpZ2lkLm5sMIIBIjAN
9+
BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5r8GtcRfX3UN3f7I8Iobhy/N
10+
U0Y+MV6DEXTmDRvRDZjwjr6ammB/cd1fsDz7D5CU+eax205aDRH69mMZk11x
11+
cIKDjISvtBFLQVxwWXgTGpUSBogFHfp70/yfvcC7vq8gE7zjRN9gNzZCC0Ak
12+
D7ZwAfFBbwI9nBSiMby9MY41MjS/W10uik1I6s5Ok2u/WfUe6FjcnaoU1O7O
13+
tpJGAkW/yDC5HWypqeTG1fSPee/0GjvU8FH+Bu73fAFHa86KSO15eaCUR6Ea
14+
7qCjpLsfPizweP9Adehlal1blfxsfJdFunq/jnO8NhYnQ7DC0aBd6ET8Wo/O
15+
1ZacGsYmJWq9dqeleQIDAQABo4ICjDCCAogwHwYDVR0jBBgwFoAUuWymE7q7
16+
LzRjgzEu+X5JHd8A9WMwfQYIKwYBBQUHAQEEcTBvMD4GCCsGAQUFBzAChjJo
17+
dHRwOi8vdHJ1c3QucXVvdmFkaXNnbG9iYWwuY29tL3BraW9wcml2c2Vydmcx
18+
LmNydDAtBggrBgEFBQcwAYYhaHR0cDovL3NsLm9jc3AucXVvdmFkaXNnbG9i
19+
YWwuY29tMCEGA1UdEQQaMBiCFnNhbWwtc2lnbi5wcDEuZGlnaWQubmwwggEw
20+
BgNVHSAEggEnMIIBIzCCAR8GCmCEEAGHawECCAYwggEPMDQGCCsGAQUFBwIB
21+
FihodHRwOi8vd3d3LnF1b3ZhZGlzZ2xvYmFsLmNvbS9yZXBvc2l0b3J5MIHW
22+
BggrBgEFBQcCAjCByQyBxlJlbGlhbmNlIG9uIHRoaXMgY2VydGlmaWNhdGUg
23+
YnkgYW55IHBhcnR5IGFzc3VtZXMgYWNjZXB0YW5jZSBvZiB0aGUgcmVsZXZh
24+
bnQgUXVvVmFkaXMgQ2VydGlmaWNhdGlvbiBQcmFjdGljZSBTdGF0ZW1lbnQg
25+
YW5kIG90aGVyIGRvY3VtZW50cyBpbiB0aGUgUXVvVmFkaXMgcmVwb3NpdG9y
26+
eSAoaHR0cDovL3d3dy5xdW92YWRpc2dsb2JhbC5jb20pLjAdBgNVHSUEFjAU
27+
BggrBgEFBQcDAgYIKwYBBQUHAwEwQQYDVR0fBDowODA2oDSgMoYwaHR0cDov
28+
L2NybC5xdW92YWRpc2dsb2JhbC5jb20vcGtpb3ByaXZzZXJ2ZzEuY3JsMB0G
29+
A1UdDgQWBBRZAjjqOD74qry7CXrnZUyjOI33CzAOBgNVHQ8BAf8EBAMCBaAw
30+
DQYJKoZIhvcNAQELBQADggIBABiPLzZxV8YAFV0OIvK35Qh11zDZYPEp09RN
31+
9NDsb+kOvShIBQirgejYA1SVZ73vMzFUmVNW/LyKoflH/N3ziU5NoMHK/31G
32+
yP3W5Ffeezo42wLqqv1Ttfod3Tg56LC/jZb0a7R4LoosfFuEvHwWM8vJO8oy
33+
IFuNSclSXOR0UArdeUl6fXsYExFOkdKgsrjcDBH+DOs/LlDPwL9qL3aK6vOG
34+
WMXlfaFfRVhmcqs1ZVXLc+ylyT2DKf96oQSXE/pIB/yCcl3MuG3Xb0mp4MEq
35+
AcAvEa4bIW0c1ULmlmxfw7F8rR2pVWN3wl8fqsxYxg6SNp3+ZKjOvX5GVGz+
36+
2nGWC+W2szqpRL/uvNWquSZaFHRiFkbJLtZNMy9HF7F0P62ler7BuZ4resb1
37+
l5d+rRRUocPwBv6GrBv6WE6QXpKkYZyuElkl7u3W+/L5UGaz+rAaMYJ1DdQL
38+
XgAdq4KIuh9VR/YsFpttXUz2ieRBm1s2t0otk/sr0zFT23mt22lVVSaHmfCB
39+
X8xCL9z8Y+XlbhPWhoXf8hvKI9KLcpf+e9OiS84+MYq4xJxoESNoq31oYirM
40+
I1g9TNGKXAKrXIv9laeinsIJnn7zhSFu0LWz8XuvjuxPXtPzi9mOh98wIp6H
41+
+AbyNMBwYTQKpOAd8jsD6+2d1gK5WHtwce5cWxgVdo1czCvY
42+
</ds:X509Certificate></ds:X509Data></ds:KeyInfo></md:KeyDescriptor><md:KeyDescriptor use="encryption"><ds:KeyInfo><ds:KeyName>7593b799e735055fcd479caa35d44d455576cefc</ds:KeyName><ds:X509Data><ds:X509Certificate>MIIG+zCCBOOgAwIBAgIUJmQio80TiqOX3LMrbzeG1dh0ngEwDQYJKoZIhvcN
43+
AQELBQAwgYAxCzAJBgNVBAYTAk5MMSAwHgYDVQQKDBdRdW9WYWRpcyBUcnVz
44+
dGxpbmsgQi5WLjEXMBUGA1UEYQwOTlRSTkwtMzAyMzc0NTkxNjA0BgNVBAMM
45+
LVF1b1ZhZGlzIFBLSW92ZXJoZWlkIFByaXZhdGUgU2VydmljZXMgQ0EgLSBH
46+
MTAeFw0yMzA5MjExOTEyNTlaFw0yNjA5MjExOTA3MDBaMF4xCzAJBgNVBAYT
47+
Ak5MMQ8wDQYDVQQKDAZMb2dpdXMxHTAbBgNVBAUTFDAwMDAwMDA0MTY2OTA5
48+
OTEzMDAwMR8wHQYDVQQDDBZzYW1sLXNpZ24ucHAxLmRpZ2lkLm5sMIIBIjAN
49+
BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5r8GtcRfX3UN3f7I8Iobhy/N
50+
U0Y+MV6DEXTmDRvRDZjwjr6ammB/cd1fsDz7D5CU+eax205aDRH69mMZk11x
51+
cIKDjISvtBFLQVxwWXgTGpUSBogFHfp70/yfvcC7vq8gE7zjRN9gNzZCC0Ak
52+
D7ZwAfFBbwI9nBSiMby9MY41MjS/W10uik1I6s5Ok2u/WfUe6FjcnaoU1O7O
53+
tpJGAkW/yDC5HWypqeTG1fSPee/0GjvU8FH+Bu73fAFHa86KSO15eaCUR6Ea
54+
7qCjpLsfPizweP9Adehlal1blfxsfJdFunq/jnO8NhYnQ7DC0aBd6ET8Wo/O
55+
1ZacGsYmJWq9dqeleQIDAQABo4ICjDCCAogwHwYDVR0jBBgwFoAUuWymE7q7
56+
LzRjgzEu+X5JHd8A9WMwfQYIKwYBBQUHAQEEcTBvMD4GCCsGAQUFBzAChjJo
57+
dHRwOi8vdHJ1c3QucXVvdmFkaXNnbG9iYWwuY29tL3BraW9wcml2c2Vydmcx
58+
LmNydDAtBggrBgEFBQcwAYYhaHR0cDovL3NsLm9jc3AucXVvdmFkaXNnbG9i
59+
YWwuY29tMCEGA1UdEQQaMBiCFnNhbWwtc2lnbi5wcDEuZGlnaWQubmwwggEw
60+
BgNVHSAEggEnMIIBIzCCAR8GCmCEEAGHawECCAYwggEPMDQGCCsGAQUFBwIB
61+
FihodHRwOi8vd3d3LnF1b3ZhZGlzZ2xvYmFsLmNvbS9yZXBvc2l0b3J5MIHW
62+
BggrBgEFBQcCAjCByQyBxlJlbGlhbmNlIG9uIHRoaXMgY2VydGlmaWNhdGUg
63+
YnkgYW55IHBhcnR5IGFzc3VtZXMgYWNjZXB0YW5jZSBvZiB0aGUgcmVsZXZh
64+
bnQgUXVvVmFkaXMgQ2VydGlmaWNhdGlvbiBQcmFjdGljZSBTdGF0ZW1lbnQg
65+
YW5kIG90aGVyIGRvY3VtZW50cyBpbiB0aGUgUXVvVmFkaXMgcmVwb3NpdG9y
66+
eSAoaHR0cDovL3d3dy5xdW92YWRpc2dsb2JhbC5jb20pLjAdBgNVHSUEFjAU
67+
BggrBgEFBQcDAgYIKwYBBQUHAwEwQQYDVR0fBDowODA2oDSgMoYwaHR0cDov
68+
L2NybC5xdW92YWRpc2dsb2JhbC5jb20vcGtpb3ByaXZzZXJ2ZzEuY3JsMB0G
69+
A1UdDgQWBBRZAjjqOD74qry7CXrnZUyjOI33CzAOBgNVHQ8BAf8EBAMCBaAw
70+
DQYJKoZIhvcNAQELBQADggIBABiPLzZxV8YAFV0OIvK35Qh11zDZYPEp09RN
71+
9NDsb+kOvShIBQirgejYA1SVZ73vMzFUmVNW/LyKoflH/N3ziU5NoMHK/31G
72+
yP3W5Ffeezo42wLqqv1Ttfod3Tg56LC/jZb0a7R4LoosfFuEvHwWM8vJO8oy
73+
IFuNSclSXOR0UArdeUl6fXsYExFOkdKgsrjcDBH+DOs/LlDPwL9qL3aK6vOG
74+
WMXlfaFfRVhmcqs1ZVXLc+ylyT2DKf96oQSXE/pIB/yCcl3MuG3Xb0mp4MEq
75+
AcAvEa4bIW0c1ULmlmxfw7F8rR2pVWN3wl8fqsxYxg6SNp3+ZKjOvX5GVGz+
76+
2nGWC+W2szqpRL/uvNWquSZaFHRiFkbJLtZNMy9HF7F0P62ler7BuZ4resb1
77+
l5d+rRRUocPwBv6GrBv6WE6QXpKkYZyuElkl7u3W+/L5UGaz+rAaMYJ1DdQL
78+
XgAdq4KIuh9VR/YsFpttXUz2ieRBm1s2t0otk/sr0zFT23mt22lVVSaHmfCB
79+
X8xCL9z8Y+XlbhPWhoXf8hvKI9KLcpf+e9OiS84+MYq4xJxoESNoq31oYirM
80+
I1g9TNGKXAKrXIv9laeinsIJnn7zhSFu0LWz8XuvjuxPXtPzi9mOh98wIp6H
81+
+AbyNMBwYTQKpOAd8jsD6+2d1gK5WHtwce5cWxgVdo1czCvY
82+
</ds:X509Certificate></ds:X509Data></ds:KeyInfo></md:KeyDescriptor><md:ArtifactResolutionService Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP" Location="https://was-preprod1.digid.nl/saml/idp/resolve_artifact" index="0"/><md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://preprod1.digid.nl/saml/idp/request_logout"/><md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://preprod1.digid.nl/saml/idp/request_authentication"/><md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://preprod1.digid.nl/saml/idp/request_authentication"/></md:IDPSSODescriptor></md:EntityDescriptor>

src/open_inwoner/configurations/tests/bootstrap/test_setup_auth_config.py

+158
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,23 @@
1+
import urllib.error
12
from unittest import skip
3+
from unittest.mock import patch
24

35
from django.test import TestCase, override_settings
46

57
import requests
68
import requests_mock
9+
from digid_eherkenning.choices import (
10+
DigestAlgorithms,
11+
SignatureAlgorithms,
12+
XMLContentTypes,
13+
)
14+
from digid_eherkenning.models import DigidConfiguration
715
from django_setup_configuration.exceptions import ConfigurationRunFailed
816
from mozilla_django_oidc_db.models import (
917
OpenIDConnectConfig,
1018
UserInformationClaimsSources,
1119
)
20+
from simple_certmanager.constants import CertificateTypes
1221

1322
from digid_eherkenning_oidc_generics.models import (
1423
OpenIDConnectDigiDConfig,
@@ -17,6 +26,7 @@
1726

1827
from ...bootstrap.auth import (
1928
AdminOIDCConfigurationStep,
29+
DigiDConfigurationStep,
2030
DigiDOIDCConfigurationStep,
2131
eHerkenningOIDCConfigurationStep,
2232
)
@@ -33,6 +43,10 @@
3343
"jwks_uri": f"{IDENTITY_PROVIDER}protocol/openid-connect/certs",
3444
}
3545

46+
DIGID_XML_METADATA_PATH = (
47+
"src/open_inwoner/configurations/tests/bootstrap/files/digid-metadata.xml"
48+
)
49+
3650

3751
@override_settings(
3852
DIGID_OIDC_OIDC_RP_CLIENT_ID="client-id",
@@ -656,3 +670,147 @@ def test_is_configured(self):
656670
config.configure()
657671

658672
self.assertTrue(config.is_configured())
673+
674+
675+
@override_settings(
676+
DIGID_CERTIFICATE_LABEL="DigiD certificate",
677+
DIGID_CERTIFICATE_TYPE=CertificateTypes.key_pair,
678+
DIGID_CERTIFICATE_PUBLIC_CERTIFICATE="/tmp/certificate.crt",
679+
DIGID_CERTIFICATE_PRIVATE_KEY="/tmp/key.key",
680+
DIGID_METADATA_FILE_SOURCE="http://metadata.local/file.xml",
681+
DIGID_ENTITY_ID="1234",
682+
DIGID_BASE_URL="http://digid.local",
683+
DIGID_SERVICE_NAME="OIP",
684+
DIGID_SERVICE_DESCRIPTION="Open Inwoner",
685+
DIGID_WANT_ASSERTIONS_SIGNED=False,
686+
DIGID_WANT_ASSERTIONS_ENCRYPTED=True,
687+
DIGID_ARTIFACT_RESOLVE_CONTENT_TYPE=XMLContentTypes.text_xml,
688+
DIGID_KEY_PASSPHRASE="foo",
689+
DIGID_SIGNATURE_ALGORITHM=SignatureAlgorithms.dsa_sha1,
690+
DIGID_DIGEST_ALGORITHM=DigestAlgorithms.sha512,
691+
DIGID_TECHNICAL_CONTACT_PERSON_TELEPHONE="0612345678",
692+
DIGID_TECHNICAL_CONTACT_PERSON_EMAIL="[email protected]",
693+
DIGID_ORGANIZATION_URL="http://open-inwoner.local",
694+
DIGID_ORGANIZATION_NAME="Open Inwoner",
695+
DIGID_ATTRIBUTE_CONSUMING_SERVICE_INDEX="2",
696+
DIGID_REQUESTED_ATTRIBUTES=[
697+
{"name": "bsn", "required": True},
698+
{"name": "email", "required": False},
699+
],
700+
DIGID_SLO=False,
701+
)
702+
class DigiDConfigurationTests(TestCase):
703+
def test_configure(self):
704+
with open(DIGID_XML_METADATA_PATH) as f:
705+
with patch(
706+
"onelogin.saml2.idp_metadata_parser.urllib2.urlopen", return_value=f
707+
):
708+
DigiDConfigurationStep().configure()
709+
710+
config = DigidConfiguration.get_solo()
711+
712+
self.assertEqual(config.certificate.label, "DigiD certificate")
713+
self.assertEqual(config.certificate.type, CertificateTypes.key_pair)
714+
self.assertEqual(config.certificate.public_certificate, "/tmp/certificate.crt")
715+
self.assertEqual(config.certificate.private_key, "/tmp/key.key")
716+
self.assertEqual(config.key_passphrase, "foo")
717+
self.assertEqual(config.metadata_file_source, "http://metadata.local/file.xml")
718+
self.assertEqual(
719+
config.idp_service_entity_id,
720+
"https://was-preprod1.digid.nl/saml/idp/metadata",
721+
)
722+
self.assertTrue(config.idp_metadata_file.path.endswith(".xml"))
723+
self.assertEqual(config.entity_id, "1234")
724+
self.assertEqual(config.base_url, "http://digid.local")
725+
self.assertEqual(config.service_name, "OIP")
726+
self.assertEqual(config.service_description, "Open Inwoner")
727+
self.assertEqual(config.want_assertions_signed, False)
728+
self.assertEqual(config.want_assertions_encrypted, True)
729+
self.assertEqual(config.artifact_resolve_content_type, XMLContentTypes.text_xml)
730+
self.assertEqual(config.signature_algorithm, SignatureAlgorithms.dsa_sha1)
731+
self.assertEqual(config.digest_algorithm, DigestAlgorithms.sha512)
732+
self.assertEqual(config.technical_contact_person_telephone, "0612345678")
733+
self.assertEqual(config.technical_contact_person_email, "[email protected]")
734+
self.assertEqual(config.organization_url, "http://open-inwoner.local")
735+
self.assertEqual(config.organization_name, "Open Inwoner")
736+
self.assertEqual(config.attribute_consuming_service_index, "2")
737+
self.assertEqual(
738+
config.requested_attributes,
739+
[{"name": "bsn", "required": True}, {"name": "email", "required": False}],
740+
)
741+
self.assertEqual(config.slo, False)
742+
743+
# TODO asserts
744+
745+
@override_settings(
746+
DIGID_WANT_ASSERTIONS_SIGNED=None,
747+
DIGID_WANT_ASSERTIONS_ENCRYPTED=None,
748+
DIGID_ARTIFACT_RESOLVE_CONTENT_TYPE=None,
749+
DIGID_KEY_PASSPHRASE=None,
750+
DIGID_SIGNATURE_ALGORITHM=None,
751+
DIGID_DIGEST_ALGORITHM=None,
752+
DIGID_ATTRIBUTE_CONSUMING_SERVICE_INDEX=None,
753+
DIGID_REQUESTED_ATTRIBUTES=None,
754+
DIGID_SLO=None,
755+
)
756+
def test_configure_use_defaults(self):
757+
with open(DIGID_XML_METADATA_PATH) as f:
758+
with patch(
759+
"onelogin.saml2.idp_metadata_parser.urllib2.urlopen", return_value=f
760+
):
761+
DigiDConfigurationStep().configure()
762+
763+
config = DigidConfiguration.get_solo()
764+
765+
self.assertEqual(config.key_passphrase, "")
766+
self.assertEqual(config.want_assertions_signed, True)
767+
self.assertEqual(config.want_assertions_encrypted, False)
768+
self.assertEqual(config.artifact_resolve_content_type, XMLContentTypes.soap_xml)
769+
self.assertEqual(config.signature_algorithm, SignatureAlgorithms.rsa_sha1)
770+
self.assertEqual(config.digest_algorithm, DigestAlgorithms.sha1)
771+
self.assertEqual(config.attribute_consuming_service_index, "1")
772+
self.assertEqual(
773+
config.requested_attributes,
774+
[{"name": "bsn", "required": True}],
775+
)
776+
self.assertEqual(config.slo, True)
777+
778+
# TODO asserts
779+
780+
def test_configure_failure(self):
781+
exceptions = (urllib.error.HTTPError, urllib.error.URLError)
782+
for exception in exceptions:
783+
with self.subTest(exception=exception):
784+
with patch(
785+
"onelogin.saml2.idp_metadata_parser.urllib2.urlopen",
786+
side_effect=exception,
787+
):
788+
with self.assertRaises(ConfigurationRunFailed):
789+
DigiDConfigurationStep().configure()
790+
791+
config = DigidConfiguration.get_solo()
792+
793+
self.assertFalse(config.certificate, None)
794+
795+
@skip("Testing config for DigiD OIDC is not implemented yet")
796+
@requests_mock.Mocker()
797+
def test_configuration_check_ok(self, m):
798+
raise NotImplementedError
799+
800+
@skip("Testing config for DigiD OIDC is not implemented yet")
801+
@requests_mock.Mocker()
802+
def test_configuration_check_failures(self, m):
803+
raise NotImplementedError
804+
805+
def test_is_configured(self):
806+
config = DigiDConfigurationStep()
807+
808+
self.assertFalse(config.is_configured())
809+
810+
with open(DIGID_XML_METADATA_PATH) as f:
811+
with patch(
812+
"onelogin.saml2.idp_metadata_parser.urllib2.urlopen", return_value=f
813+
):
814+
config.configure()
815+
816+
self.assertTrue(config.is_configured())

0 commit comments

Comments
 (0)