/** * @param EntityDescriptor|EntitiesDescriptor $entityDescriptor * * @return FixedEntityDescriptorStore * * @throws \InvalidArgumentException */ public function add($entityDescriptor) { if ($entityDescriptor instanceof EntityDescriptor) { if (false == $entityDescriptor->getEntityID()) { throw new \InvalidArgumentException('EntityDescriptor must have entityId set'); } $this->descriptors[$entityDescriptor->getEntityID()] = $entityDescriptor; } elseif ($entityDescriptor instanceof EntitiesDescriptor) { foreach ($entityDescriptor->getAllItems() as $item) { $this->add($item); } } else { throw new \InvalidArgumentException('Expected EntityDescriptor or EntitiesDescriptor'); } return $this; }
public function test__deserialize() { $xml = <<<EOT <?xml version="1.0"?> <md:EntitiesDescriptor ID="esd1" Name="first" validUntil="2013-10-27T11:55:37.035Z" cacheDuration="P1D" xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"> <md:EntityDescriptor entityID="ed1"/> <md:EntityDescriptor entityID="ed2"/> <md:EntitiesDescriptor ID="esd2" Name="second"> <md:EntityDescriptor entityID="ed3"/> </md:EntitiesDescriptor> </md:EntitiesDescriptor> EOT; $context = new DeserializationContext(); $context->getDocument()->loadXML($xml); $esd = new EntitiesDescriptor(); $esd->deserialize($context->getDocument(), $context); $this->assertEquals('esd1', $esd->getId()); $this->assertEquals('first', $esd->getName()); $this->assertEquals(1382874937, $esd->getValidUntilTimestamp()); $this->assertEquals('P1D', $esd->getCacheDuration()); $items = $esd->getAllItems(); $this->assertCount(3, $items); $this->assertInstanceOf('LightSaml\\Model\\Metadata\\EntityDescriptor', $items[0]); $this->assertInstanceOf('LightSaml\\Model\\Metadata\\EntityDescriptor', $items[1]); $this->assertInstanceOf('LightSaml\\Model\\Metadata\\EntitiesDescriptor', $items[2]); }