From d072121b1725616dda8328d0997b64c9012c1174 Mon Sep 17 00:00:00 2001
From: Thijs Kinkhorst <thijs@kinkhorst.com>
Date: Thu, 27 Oct 2016 13:05:27 +0200
Subject: [PATCH] Add unit test for AttributeConsumingService parsing. (#501)

---
 .../SimpleSAML/Metadata/SAMLParserTest.php    | 44 +++++++++++++++++++
 1 file changed, 44 insertions(+)

diff --git a/tests/lib/SimpleSAML/Metadata/SAMLParserTest.php b/tests/lib/SimpleSAML/Metadata/SAMLParserTest.php
index af14bd13d..85cb0858b 100644
--- a/tests/lib/SimpleSAML/Metadata/SAMLParserTest.php
+++ b/tests/lib/SimpleSAML/Metadata/SAMLParserTest.php
@@ -85,4 +85,48 @@ XML
         $metadata = $entities['subEntityIdOverride']->getMetadata20SP();
         $this->assertEquals($expected, $metadata['RegistrationInfo']);
     }
+
+    /**
+     * Test AttributeConsumingService is parsed
+     */
+    public function testAttributeConsumingServiceParsing()
+    {
+        $document = \SAML2\DOMDocumentFactory::fromString(
+            <<<XML
+<EntitiesDescriptor xmlns="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:mdrpi="urn:oasis:names:tc:SAML:metadata:rpi">
+  <EntityDescriptor entityID="theEntityID">
+    <Extensions>
+      <mdrpi:RegistrationInfo registrationAuthority="https://incommon.org"/>
+    </Extensions>
+    <SPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
+      <AttributeConsumingService index="0">
+        <ServiceName xml:lang="en">Example service</ServiceName>
+        <ServiceDescription xml:lang="nl">Dit is een voorbeeld voor de unittest.</ServiceDescription>
+
+        <RequestedAttribute FriendlyName="eduPersonPrincipalName" Name="urn:mace:dir:attribute-def:eduPersonPrincipalName" NameFormat="urn:mace:shibboleth:1.0:attributeNamespace:uri" isRequired="true"/>
+        <RequestedAttribute FriendlyName="mail" Name="urn:mace:dir:attribute-def:mail" NameFormat="urn:mace:shibboleth:1.0:attributeNamespace:uri"/>
+        <RequestedAttribute FriendlyName="displayName" Name="urn:mace:dir:attribute-def:displayName" NameFormat="urn:mace:shibboleth:1.0:attributeNamespace:uri"/>
+      </AttributeConsumingService>
+    </SPSSODescriptor>
+
+  </EntityDescriptor>
+</EntitiesDescriptor>
+XML
+        );
+
+        $entities = \SimpleSAML_Metadata_SAMLParser::parseDescriptorsElement($document->documentElement);
+        $this->assertArrayHasKey('theEntityID', $entities);
+
+        $metadata = $entities['theEntityID']->getMetadata20SP();
+
+        $this->assertEquals("Example service", $metadata['name']['en']);
+        $this->assertEquals("Dit is een voorbeeld voor de unittest.", $metadata['description']['nl']);
+
+        $expected_a = array("urn:mace:dir:attribute-def:eduPersonPrincipalName", "urn:mace:dir:attribute-def:mail", "urn:mace:dir:attribute-def:displayName");
+        $expected_r = array("urn:mace:dir:attribute-def:eduPersonPrincipalName");
+
+        $this->assertEquals($expected_a, $metadata['attributes']);
+        $this->assertEquals($expected_r, $metadata['attributes.required']);
+    }
+
 }
-- 
GitLab