module = new \Codeception\Module\SOAP(make_container());
$this->module->_setConfig(array(
'schema' => 'http://www.w3.org/2001/xml.xsd',
'endpoint' => 'http://codeception.com/api/wsdl'
));
$this->layout = \Codeception\Configuration::dataDir().'/xml/layout.xml';
$this->module->isFunctional = true;
$this->module->_before(Stub::makeEmpty('\Codeception\Test\Test'));
$this->module->client = Stub::makeEmpty('\Codeception\Lib\Connector\Universal');
}
public function testXmlIsBuilt()
{
$dom = new \DOMDocument();
$dom->load($this->layout);
$this->assertEqualXMLStructure($this->module->xmlRequest->documentElement, $dom->documentElement);
$this->assertXmlStringEqualsXmlString($dom->saveXML(), $this->module->xmlRequest->saveXML());
}
public function testBuildHeaders()
{
$this->module->haveSoapHeader('AuthHeader', ['username' => 'davert', 'password' => '123456']);
$dom = new \DOMDocument();
$dom->load($this->layout);
$header = $dom->createElement('AuthHeader');
$header->appendChild($dom->createElement('username', 'davert'));
$header->appendChild($dom->createElement('password', '123456'));
$dom->documentElement->getElementsByTagName('Header')->item(0)->appendChild($header);
$this->assertEqualXMLStructure($this->module->xmlRequest->documentElement, $dom->documentElement);
}
public function testBuildRequest()
{
$this->module->sendSoapRequest('KillHumans', "- 12
");
$this->assertNotNull($this->module->xmlRequest);
$dom = new \DOMDocument();
$dom->load($this->layout);
$body = $dom->createElement('item');
$body->appendChild($dom->createElement('id', 1));
$body->appendChild($dom->createElement('subitem', 2));
$request = $dom->createElement('ns:KillHumans');
$request->appendChild($body);
$dom->documentElement->getElementsByTagName('Body')->item(0)->appendChild($request);
$this->assertEqualXMLStructure($this->module->xmlRequest->documentElement, $dom->documentElement);
}
public function testBuildRequestWithDomNode()
{
$dom = new \DOMDocument();
$dom->load($this->layout);
$body = $dom->createElement('item');
$body->appendChild($dom->createElement('id', 1));
$body->appendChild($dom->createElement('subitem', 2));
$request = $dom->createElement('ns:KillHumans');
$request->appendChild($body);
$dom->documentElement->getElementsByTagName('Body')->item(0)->appendChild($request);
$this->module->sendSoapRequest('KillHumans', $body);
$this->assertEqualXMLStructure($this->module->xmlRequest->documentElement, $dom->documentElement);
}
public function testSeeXmlIncludes()
{
$dom = new DOMDocument();
$this->module->xmlResponse = $dom;
$dom->preserveWhiteSpace = false;
$dom->loadXML(' 123 ');
$this->module->seeSoapResponseIncludes('123');
}
public function testSeeXmlContainsXPath()
{
$dom = new DOMDocument();
$this->module->xmlResponse = $dom;
$dom->preserveWhiteSpace = false;
$dom->loadXML(' 123 ');
$this->module->seeSoapResponseContainsXPath('//doc/a[@a2=2 and @a1=1]');
}
public function testSeeXmlNotContainsXPath()
{
$dom = new DOMDocument();
$this->module->xmlResponse = $dom;
$dom->preserveWhiteSpace = false;
$dom->loadXML(' 123 ');
$this->module->dontSeeSoapResponseContainsXPath('//doc/a[@a2=2 and @a31]');
}
public function testSeeXmlEquals()
{
$dom = new DOMDocument();
$this->module->xmlResponse = $dom;
$xml = ' 123 ';
$dom->preserveWhiteSpace = false;
$dom->loadXML($xml);
$this->module->seeSoapResponseEquals($xml);
}
public function testSeeXmlIncludesWithBuilder()
{
$dom = new DOMDocument();
$this->module->xmlResponse = $dom;
$dom->loadXML(''."\n".' 123');
$xml = SoapUtil::request()->doc->a
->attr('a2', '2')
->attr('a1', '1')
->val('123');
$this->module->seeSoapResponseIncludes($xml);
}
public function testGrabTextFrom()
{
$dom = new DOMDocument();
$this->module->xmlResponse = $dom;
$dom->loadXML('123');
$res = $this->module->grabTextContentFrom('doc node');
$this->assertEquals('123', $res);
$res = $this->module->grabTextContentFrom('descendant-or-self::doc/descendant::node');
$this->assertEquals('123', $res);
}
}