Skip to content

Commit d579520

Browse files
ghalsethijskh
authored andcommitted
More complete registrationInfo
1 parent 5f4dc37 commit d579520

2 files changed

Lines changed: 74 additions & 1 deletion

File tree

src/SimpleSAML/Metadata/SAMLParser.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -919,6 +919,14 @@ private static function processExtensions($element, array $parentExtensions = []
919919
} else {
920920
$ret['RegistrationInfo']['authority'] = $e->getRegistrationAuthority();
921921
}
922+
$registrationInstant = $e->getRegistrationInstant();
923+
if ($registrationInstant !== null) {
924+
$ret['RegistrationInfo']['instant'] = $registrationInstant;
925+
}
926+
$registrationPolicy = $e->getRegistrationPolicy();
927+
if (!empty($registrationPolicy)) {
928+
$ret['RegistrationInfo']['policies'] = $registrationPolicy;
929+
}
922930
}
923931
if ($e instanceof EntityAttributes && !empty($e->getChildren())) {
924932
foreach ($e->getChildren() as $attr) {

tests/src/SimpleSAML/Metadata/SAMLParserTest.php

Lines changed: 66 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ public function testRegistrationInfo(): void
4040
XML
4141
);
4242

43-
4443
$entities = SAMLParser::parseDescriptorsElement($document->documentElement);
4544
$this->assertArrayHasKey('theEntityID', $entities);
4645
// RegistrationInfo is accessible in the SP or IDP metadata accessors
@@ -102,6 +101,72 @@ public function testRegistrationInfoInheritance(): void
102101
}
103102

104103

104+
/**
105+
* Test Registration Info is parsed
106+
*/
107+
public function testRegistrationPolicy(): void
108+
{
109+
$expected = [
110+
'authority' => 'https://safire.ac.za',
111+
'policies' => [ 'en' => 'https://safire.ac.za/safire/policy/mrps/v20190207.html' ],
112+
];
113+
114+
$document = DOMDocumentFactory::fromString(
115+
<<<XML
116+
<EntitiesDescriptor xmlns="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:mdrpi="urn:oasis:names:tc:SAML:metadata:rpi">
117+
<EntityDescriptor entityID="theEntityID">
118+
<Extensions>
119+
<mdrpi:RegistrationInfo registrationAuthority="https://safire.ac.za">
120+
<mdrpi:RegistrationPolicy xml:lang="en">https://safire.ac.za/safire/policy/mrps/v20190207.html</mdrpi:RegistrationPolicy>
121+
</mdrpi:RegistrationInfo>
122+
</Extensions>
123+
<SPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol"/>
124+
</EntityDescriptor>
125+
</EntitiesDescriptor>
126+
XML
127+
);
128+
129+
$entities = SAMLParser::parseDescriptorsElement($document->documentElement);
130+
$this->assertArrayHasKey('theEntityID', $entities);
131+
// RegistrationInfo is accessible in the SP or IDP metadata accessors
132+
/** @var array $metadata */
133+
$metadata = $entities['theEntityID']->getMetadata20SP();
134+
$this->assertEquals($expected, $metadata['RegistrationInfo']);
135+
}
136+
137+
138+
/**
139+
* Test Registration Info is parsed
140+
*/
141+
public function testRegistrationInstant(): void
142+
{
143+
$expected = [
144+
'authority' => 'https://safire.ac.za',
145+
'instant' => 1675861615,
146+
];
147+
148+
$document = DOMDocumentFactory::fromString(
149+
<<<XML
150+
<EntitiesDescriptor xmlns="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:mdrpi="urn:oasis:names:tc:SAML:metadata:rpi">
151+
<EntityDescriptor entityID="theEntityID">
152+
<Extensions>
153+
<mdrpi:RegistrationInfo registrationAuthority="https://safire.ac.za" registrationInstant="2023-02-08T13:06:55Z" />
154+
</Extensions>
155+
<SPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol"/>
156+
</EntityDescriptor>
157+
</EntitiesDescriptor>
158+
XML
159+
);
160+
161+
$entities = SAMLParser::parseDescriptorsElement($document->documentElement);
162+
$this->assertArrayHasKey('theEntityID', $entities);
163+
// RegistrationInfo is accessible in the SP or IDP metadata accessors
164+
/** @var array $metadata */
165+
$metadata = $entities['theEntityID']->getMetadata20SP();
166+
$this->assertEquals($expected, $metadata['RegistrationInfo']);
167+
}
168+
169+
105170
/**
106171
* Test AttributeConsumingService is parsed
107172
*/

0 commit comments

Comments
 (0)