/** * Test creating an UIinfo element with XML children */ public function testMarshallingChildren() { $keywords = new Keywords(); $keywords->lang = "nl"; $keywords->Keywords = array("voorbeeld", "specimen"); $logo = new Logo(); $logo->lang = "nl"; $logo->width = 30; $logo->height = 20; $logo->url = "https://example.edu/logo.png"; $discohints = new DiscoHints(); $discohints->IPHint = array("192.168.6.0/24", "fd00:0123:aa:1001::/64"); // keywords appears twice, direcyly under UIinfo and as child of DiscoHints $discohints->children = array($keywords); $uiinfo = new UIInfo(); $uiinfo->Logo = array($logo); $uiinfo->Keywords = array($keywords); $uiinfo->children = array($discohints); $document = DOMDocumentFactory::fromString('<root />'); $xml = $uiinfo->toXML($document->firstChild); $infoElements = Utils::xpQuery($xml, '/root/*[local-name()=\'UIInfo\' and namespace-uri()=\'urn:oasis:names:tc:SAML:metadata:ui\']'); $this->assertCount(1, $infoElements); $infoElement = $infoElements[0]; $logoElements = Utils::xpQuery($infoElement, './*[local-name()=\'Logo\' and namespace-uri()=\'urn:oasis:names:tc:SAML:metadata:ui\']'); $this->assertCount(1, $logoElements); $this->assertEquals("https://example.edu/logo.png", $logoElements[0]->textContent); $keywordElements = Utils::xpQuery($infoElement, './*[local-name()=\'Keywords\' and namespace-uri()=\'urn:oasis:names:tc:SAML:metadata:ui\']'); $this->assertCount(1, $keywordElements); $this->assertEquals("voorbeeld specimen", $keywordElements[0]->textContent); $this->assertEquals("nl", $keywordElements[0]->getAttribute("xml:lang")); $discoElements = Utils::xpQuery($infoElement, './*[local-name()=\'DiscoHints\' and namespace-uri()=\'urn:oasis:names:tc:SAML:metadata:ui\']'); $this->assertCount(1, $discoElements); $discoElement = $discoElements[0]; $iphintElements = Utils::xpQuery($discoElement, './*[local-name()=\'IPHint\' and namespace-uri()=\'urn:oasis:names:tc:SAML:metadata:ui\']'); $this->assertCount(2, $iphintElements); $this->assertEquals("192.168.6.0/24", $iphintElements[0]->textContent); $this->assertEquals("fd00:0123:aa:1001::/64", $iphintElements[1]->textContent); $keywordElements = Utils::xpQuery($discoElement, './*[local-name()=\'Keywords\' and namespace-uri()=\'urn:oasis:names:tc:SAML:metadata:ui\']'); $this->assertCount(1, $keywordElements); $this->assertEquals("voorbeeld specimen", $keywordElements[0]->textContent); $this->assertEquals("nl", $keywordElements[0]->getAttribute("xml:lang")); }