Exemplo n.º 1
0
 public function testSerialization()
 {
     $msg = new XPSoapMessage();
     $msg->createCall('Test', 'testSerialization');
     $this->assertEquals('Test', $msg->action);
     $this->assertEquals('testSerialization', $msg->method);
     $this->assertEquals('SOAP-ENV:Envelope', $msg->root()->getName());
     $this->assertNotEmpty($msg->root()->getAttributes());
     $msg->setData(array('int' => 1, 'float' => 6.1, 'string' => 'Binford', 'string2' => '"<&>"', 'bool' => TRUE, 'date' => Date::fromString('1977-12-14 11:55AM Europe/Berlin'), 'null' => NULL, 'array' => array(2, 3), 'hash' => array('class' => 'Test', 'method' => 'testSerialization')));
     // Let's be somewhat forgiving on whitespace
     $src = trim(chop($msg->getSource(0)));
     $this->assertEquals('<SOAP-ENV:Envelope', substr($src, 0, 18));
     $this->assertEquals('</SOAP-ENV:Envelope>', substr($src, -20));
     $this->assertContains($src, '<int xsi:type="xsd:int">1</int>', 'integer');
     $this->assertContains($src, '<float xsi:type="xsd:float">6.1</float>', 'float');
     $this->assertContains($src, '<string xsi:type="xsd:string">Binford</string>', 'string');
     $this->assertContains($src, '<string2 xsi:type="xsd:string">&quot;&lt;&amp;&gt;&quot;</string2>', 'escaping');
     $this->assertContains($src, '<bool xsi:type="xsd:boolean">true</bool>', 'bool');
     $this->assertContains($src, '<date xsi:type="xsd:dateTime">1977-12-14T11:55:00+01:00</date>', 'date');
     $this->assertContains($src, '<null xsi:nil="true"/>', 'null');
     $this->assertContains($src, '<array xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="xsd:anyType[2]">', 'array');
     $this->assertContains($src, '<item xsi:type="xsd:int">2</item>', 'array.inner');
     $this->assertContains($src, '<item xsi:type="xsd:int">3</item>', 'array.inner');
     $this->assertContains($src, '<hash xsi:type="xsd:struct">', 'hash');
     $this->assertContains($src, '<class xsi:type="xsd:string">Test</class>', 'hash.inner');
     $this->assertContains($src, '<method xsi:type="xsd:string">testSerialization</method>', 'hash.inner');
     return $src;
 }