Example #1
0
 /**
  * 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"));
 }