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); } }