123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- <?php
- use Codeception\Util\Stub;
- use Codeception\Util\Soap as SoapUtil;
- /**
- * Class SoapTest
- * @group appveyor
- */
- class SoapTest extends \PHPUnit\Framework\TestCase
- {
- /**
- * @var \Codeception\Module\Soap
- */
- protected $module = null;
- protected $layout;
- public function setUp()
- {
- $this->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', "<item><id>1</id><subitem>2</subitem></item>");
- $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('<?xml version="1.0" encoding="UTF-8"?> <doc> <a a2="2" a1="1" >123</a> </doc>');
- $this->module->seeSoapResponseIncludes('<a a2="2" a1="1" >123</a>');
- }
- public function testSeeXmlContainsXPath()
- {
- $dom = new DOMDocument();
- $this->module->xmlResponse = $dom;
- $dom->preserveWhiteSpace = false;
- $dom->loadXML('<?xml version="1.0" encoding="UTF-8"?> <doc> <a a2="2" a1="1" >123</a> </doc>');
- $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('<?xml version="1.0" encoding="UTF-8"?> <doc> <a a2="2" a1="1" >123</a> </doc>');
- $this->module->dontSeeSoapResponseContainsXPath('//doc/a[@a2=2 and @a31]');
- }
- public function testSeeXmlEquals()
- {
- $dom = new DOMDocument();
- $this->module->xmlResponse = $dom;
- $xml = '<?xml version="1.0" encoding="UTF-8"?> <doc> <a a2="2" a1="1" >123</a> </doc>';
- $dom->preserveWhiteSpace = false;
- $dom->loadXML($xml);
- $this->module->seeSoapResponseEquals($xml);
- }
- public function testSeeXmlIncludesWithBuilder()
- {
- $dom = new DOMDocument();
- $this->module->xmlResponse = $dom;
- $dom->loadXML('<?xml version="1.0" encoding="UTF-8"?>'."\n".' <doc><a a2="2" a1="1" >123</a></doc>');
- $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('<?xml version="1.0" encoding="UTF-8"?><doc><node>123</node></doc>');
- $res = $this->module->grabTextContentFrom('doc node');
- $this->assertEquals('123', $res);
- $res = $this->module->grabTextContentFrom('descendant-or-self::doc/descendant::node');
- $this->assertEquals('123', $res);
- }
- }
|