/**
  * Convert this element to XML.
  *
  * @param  DOMElement $parent The parent element we should append this element to.
  * @return DOMElement This element, as XML.
  */
 public function toXML(DOMElement $parent)
 {
     assert('is_string($this->Method)');
     assert('is_null($this->NameID) || $this->NameID instanceof SAML2_XML_saml_NameID');
     assert('is_null($this->SubjectConfirmationData) || $this->SubjectConfirmationData instanceof SAML2_XML_saml_SubjectConfirmationData');
     $e = $parent->ownerDocument->createElementNS(SAML2_Const::NS_SAML, 'saml:SubjectConfirmation');
     $parent->appendChild($e);
     $e->setAttribute('Method', $this->Method);
     if (isset($this->NameID)) {
         $this->NameID->toXML($e);
     }
     if (isset($this->SubjectConfirmationData)) {
         $this->SubjectConfirmationData->toXML($e);
     }
     return $e;
 }
 public function testMarshalling()
 {
     $subjectConfirmationData = new SAML2_XML_saml_SubjectConfirmationData();
     $subjectConfirmationData->NotBefore = 987654321;
     $subjectConfirmationData->NotOnOrAfter = 1234567890;
     $subjectConfirmationData->Recipient = 'https://sp.example.org/asdf';
     $subjectConfirmationData->InResponseTo = 'SomeRequestID';
     $subjectConfirmationData->Address = '127.0.0.1';
     $document = SAML2_DOMDocumentFactory::fromString('<root />');
     $subjectConfirmationDataElement = $subjectConfirmationData->toXML($document->firstChild);
     $subjectConfirmationDataElements = SAML2_Utils::xpQuery($subjectConfirmationDataElement, '//saml_assertion:SubjectConfirmationData');
     $this->assertCount(1, $subjectConfirmationDataElements);
     $subjectConfirmationDataElement = $subjectConfirmationDataElements[0];
     $this->assertEquals('2001-04-19T04:25:21Z', $subjectConfirmationDataElement->getAttribute("NotBefore"));
     $this->assertEquals('2009-02-13T23:31:30Z', $subjectConfirmationDataElement->getAttribute("NotOnOrAfter"));
     $this->assertEquals('https://sp.example.org/asdf', $subjectConfirmationDataElement->getAttribute("Recipient"));
     $this->assertEquals('SomeRequestID', $subjectConfirmationDataElement->getAttribute("InResponseTo"));
     $this->assertEquals('127.0.0.1', $subjectConfirmationDataElement->getAttribute("Address"));
 }