<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">&lt;?php

namespace WsdlToPhp\PackageBase\Tests;

use WsdlToPhp\PackageBase\Utils;

class SoapClientTest extends TestCase
{
    /**
     *
     */
    public function testSoapClientName()
    {
        $soapClient = new SoapClient();

        $this-&gt;assertSame('\WsdlToPhp\PackageBase\Tests\Client', $soapClient-&gt;getSoapClientClassName());
    }
    /**
     *
     */
    public function testSoapClientNameDefault()
    {
        $soapClient = new SoapClient();

        $this-&gt;assertSame('\SoapClient', $soapClient-&gt;getSoapClientClassName('\WsdlToPhp\PackageBase\Tests\Clien'));
    }
    /**
     *
     */
    public function testSoapClient()
    {
        $soapClient = new SoapClient(array(
            SoapClient::WSDL_URL =&gt; __DIR__ . '/resources/bingsearch.wsdl',
            SoapClient::WSDL_CLASSMAP =&gt; self::classMap(),
        ));

        $this-&gt;assertInstanceOf('\WsdlToPhp\PackageBase\Tests\Client', $soapClient-&gt;getSoapClient());
    }
    /**
     *
     */
    public function testSetLocation()
    {
        $soapClient = new SoapClient(array(
            SoapClient::WSDL_URL =&gt; __DIR__ . '/resources/bingsearch.wsdl',
            SoapClient::WSDL_CLASSMAP =&gt; self::classMap(),
        ));

        $soapClient-&gt;setLocation('http://api.bing.net:80/soap.asm');

        $this-&gt;assertSame('http://api.bing.net:80/soap.asm', $soapClient-&gt;getSoapClient()-&gt;location);
    }
    /**
     *
     */
    public function testLocationOption()
    {
        $soapClient = new SoapClient(array(
            SoapClient::WSDL_URL =&gt; __DIR__ . '/resources/bingsearch.wsdl',
            SoapClient::WSDL_CLASSMAP =&gt; self::classMap(),
            SoapClient::WSDL_LOCATION =&gt; 'http://api.bing.net:80/soap.asm',
        ));

        $this-&gt;assertSame('http://api.bing.net:80/soap.asm', $soapClient-&gt;getSoapClient()-&gt;location);
    }
    /**
     *
     */
    public function testGetLastRequestAsString()
    {
        $soapClient = new SoapClient(array(
            SoapClient::WSDL_URL =&gt; __DIR__ . '/resources/bingsearch.wsdl',
            SoapClient::WSDL_CLASSMAP =&gt; self::classMap(),
        ));

        $this-&gt;assertSame(Utils::getFormatedXml(file_get_contents(__DIR__ . '/resources/oneline.xml')), $soapClient-&gt;getLastRequest(false));
    }
    /**
     *
     */
    public function testGetLastRequestAsDomDocument()
    {
        $soapClient = new SoapClient(array(
            SoapClient::WSDL_URL =&gt; __DIR__ . '/resources/bingsearch.wsdl',
            SoapClient::WSDL_CLASSMAP =&gt; self::classMap(),
        ));

        $this-&gt;assertInstanceOf('\DOMDocument', $soapClient-&gt;getLastRequest(true));
    }
    /**
     *
     */
    public function testGetLastResponseAsString()
    {
        $soapClient = new SoapClient(array(
            SoapClient::WSDL_URL =&gt; __DIR__ . '/resources/bingsearch.wsdl',
            SoapClient::WSDL_CLASSMAP =&gt; self::classMap(),
        ));

        $this-&gt;assertSame(Utils::getFormatedXml(file_get_contents(__DIR__ . '/resources/oneline.xml')), $soapClient-&gt;getLastResponse(false));
    }
    /**
     *
     */
    public function testGetLastResponseAsDomDocument()
    {
        $soapClient = new SoapClient(array(
            SoapClient::WSDL_URL =&gt; __DIR__ . '/resources/bingsearch.wsdl',
            SoapClient::WSDL_CLASSMAP =&gt; self::classMap(),
        ));

        $this-&gt;assertInstanceOf('\DOMDocument', $soapClient-&gt;getLastResponse(true));
    }
    /**
     *
     */
    public function testGetLastRequestHeadersAsString()
    {
        $soapClient = new SoapClient(array(
            SoapClient::WSDL_URL =&gt; __DIR__ . '/resources/bingsearch.wsdl',
            SoapClient::WSDL_CLASSMAP =&gt; self::classMap(),
        ));

        $this-&gt;assertSame($soapClient-&gt;getSoapClient()-&gt;__getLastRequestHeaders(), $soapClient-&gt;getLastRequestHeaders(false));
    }
    /**
     *
     */
    public function testGetLastRequestHeadersAsArray()
    {
        $soapClient = new SoapClient(array(
            SoapClient::WSDL_URL =&gt; __DIR__ . '/resources/bingsearch.wsdl',
            SoapClient::WSDL_CLASSMAP =&gt; self::classMap(),
        ));

        $this-&gt;assertSame($soapClient-&gt;getSoapClient()-&gt;getLastRequestHeadersAsArray(), $soapClient-&gt;getLastRequestHeaders(true));
    }
    /**
     *
     */
    public function testGetLastResponseHeadersAsString()
    {
        $soapClient = new SoapClient(array(
            SoapClient::WSDL_URL =&gt; __DIR__ . '/resources/bingsearch.wsdl',
            SoapClient::WSDL_CLASSMAP =&gt; self::classMap(),
        ));

        $this-&gt;assertSame($soapClient-&gt;getSoapClient()-&gt;__getLastResponseHeaders(), $soapClient-&gt;getLastResponseHeaders(false));
    }
    /**
     *
     */
    public function testGetLastResponseHeadersAsArray()
    {
        $soapClient = new SoapClient(array(
            SoapClient::WSDL_URL =&gt; __DIR__ . '/resources/bingsearch.wsdl',
            SoapClient::WSDL_CLASSMAP =&gt; self::classMap(),
        ));

        $this-&gt;assertSame($soapClient-&gt;getSoapClient()-&gt;getLastResponseHeadersAsArray(), $soapClient-&gt;getLastResponseHeaders(true));
    }
    /**
     *
     */
    public function testSetGetLastErrorForMethod()
    {
        $soapClient = new SoapClient(array(
            SoapClient::WSDL_URL =&gt; __DIR__ . '/resources/bingsearch.wsdl',
            SoapClient::WSDL_CLASSMAP =&gt; self::classMap(),
        ));

        // this call should fail as no parameter is defined in the request
        $soapClient-&gt;search();

        $this-&gt;assertInstanceOf('\SoapFault', $soapClient-&gt;getLastErrorForMethod('WsdlToPhp\PackageBase\Tests\SoapClient::search'));
    }
    /**
     *
     */
    public function testSetGetLastError()
    {
        $soapClient = new SoapClient(array(
            SoapClient::WSDL_URL =&gt; __DIR__ . '/resources/bingsearch.wsdl',
            SoapClient::WSDL_CLASSMAP =&gt; self::classMap(),
        ));

        // this call should fail as no parameter is defined in the request
        $soapClient-&gt;search();

        $this-&gt;assertCount(1, $soapClient-&gt;getLastError());
    }
    /**
     *
     */
    public function testSetGetResult()
    {
        $soapClient = new SoapClient(array(
            SoapClient::WSDL_URL =&gt; __DIR__ . '/resources/bingsearch.wsdl',
            SoapClient::WSDL_CLASSMAP =&gt; self::classMap(),
        ));

        // this call should fail as no parameter is defined in the request
        $soapClient-&gt;search();

        $this-&gt;assertNull($soapClient-&gt;getResult());
    }
    /**
     *
     */
    public function testSetHeaders()
    {
        $soapClient = new SoapClient(array(
            SoapClient::WSDL_URL =&gt; __DIR__ . '/resources/bingsearch.wsdl',
            SoapClient::WSDL_CLASSMAP =&gt; self::classMap(),
        ));

        $this-&gt;assertTrue($soapClient-&gt;setHttpHeader('X-Header-Name', 'X-Header-Value'));

        $this-&gt;assertTrue(is_resource($soapClient-&gt;getSoapClient()-&gt;_stream_context));

        $o = stream_context_get_options($soapClient-&gt;getSoapClient()-&gt;_stream_context);
        $this-&gt;assertTrue(strpos($o['http']['header'], 'X-Header-Name: X-Header-Value') !== false);
    }
    /**
     *
     */
    public function testSetHeadersOnExistingHeaders()
    {
        $soapClient = new SoapClient(array(
            SoapClient::WSDL_URL =&gt; __DIR__ . '/resources/bingsearch.wsdl',
            SoapClient::WSDL_CLASSMAP =&gt; self::classMap(),
        ));

        $this-&gt;assertTrue($soapClient-&gt;setHttpHeader('X-Header-Name', 'X-Header-Value'));
        $this-&gt;assertTrue($soapClient-&gt;setHttpHeader('X-Header-ID', 'X-Header-ID-Value'));

        $this-&gt;assertTrue(is_resource($soapClient-&gt;getSoapClient()-&gt;_stream_context));

        $o = stream_context_get_options($soapClient-&gt;getSoapClient()-&gt;_stream_context);
        $this-&gt;assertTrue(strpos($o['http']['header'], 'X-Header-Name: X-Header-Value') !== false);
        $this-&gt;assertTrue(strpos($o['http']['header'], 'X-Header-ID: X-Header-ID-Value') !== false);
    }
    /**
     *
     */
    public function testSetHeadersOnExistingHttpsHeaders()
    {
        $streamContext = stream_context_create(array(
            'https' =&gt; array(
                'header' =&gt; array(
                    'X-HEADER' =&gt; 'X-VALUE',
                ),
            ),
        ));
        $soapClient = new SoapClient(array(
            SoapClient::WSDL_URL =&gt; __DIR__ . '/resources/bingsearch.wsdl',
            SoapClient::WSDL_CLASSMAP =&gt; self::classMap(),
            SoapClient::WSDL_STREAM_CONTEXT =&gt; $streamContext,
        ));

        $this-&gt;assertTrue($soapClient-&gt;setHttpHeader('X-Header-Name', 'X-Header-Value'));
        $this-&gt;assertTrue($soapClient-&gt;setHttpHeader('X-Header-ID', 'X-Header-ID-Value'));

        $this-&gt;assertTrue(is_resource($soapClient-&gt;getSoapClient()-&gt;_stream_context));

        $o = stream_context_get_options($soapClient-&gt;getSoapClient()-&gt;_stream_context);
        $this-&gt;assertSame(array(
            'header' =&gt; array(
                'X-HEADER' =&gt; 'X-VALUE',
            ),
        ), $o['https']);
        $this-&gt;assertTrue(strpos($o['http']['header'], 'X-Header-Name: X-Header-Value') !== false);
        $this-&gt;assertTrue(strpos($o['http']['header'], 'X-Header-ID: X-Header-ID-Value') !== false);
    }
    /**
     *
     */
    public function testSetHeadersOnExistingHttpHeaders()
    {
        $streamContext = stream_context_create(array(
            'http' =&gt; array(
                'Auth' =&gt; array(
                    'X-HEADER' =&gt; 'X-VALUE',
                ),
            ),
        ));
        $soapClient = new SoapClient(array(
            SoapClient::WSDL_URL =&gt; __DIR__ . '/resources/bingsearch.wsdl',
            SoapClient::WSDL_CLASSMAP =&gt; self::classMap(),
            SoapClient::WSDL_STREAM_CONTEXT =&gt; $streamContext,
        ));

        $this-&gt;assertTrue($soapClient-&gt;setHttpHeader('X-Header-Name', 'X-Header-Value'));
        $this-&gt;assertTrue($soapClient-&gt;setHttpHeader('X-Header-ID', 'X-Header-ID-Value'));

        $this-&gt;assertTrue(is_resource($soapClient-&gt;getSoapClient()-&gt;_stream_context));

        $o = stream_context_get_options($soapClient-&gt;getSoapClient()-&gt;_stream_context);
        $this-&gt;assertSame(array(
            'X-HEADER' =&gt; 'X-VALUE',
        ), $o['http']['Auth']);
        $this-&gt;assertTrue(strpos($o['http']['header'], 'X-Header-Name: X-Header-Value') !== false);
        $this-&gt;assertTrue(strpos($o['http']['header'], 'X-Header-ID: X-Header-ID-Value') !== false);
    }
    /**
     *
     */
    public function testGetStreamContext()
    {
        $soapClient = new SoapClient(array(
            SoapClient::WSDL_URL =&gt; __DIR__ . '/resources/bingsearch.wsdl',
            SoapClient::WSDL_CLASSMAP =&gt; self::classMap(),
        ));

        $this-&gt;assertTrue($soapClient-&gt;setHttpHeader('X-Header-Name', 'X-Header-Value'));

        $this-&gt;assertTrue(is_resource($soapClient-&gt;getStreamContext()));

        $o = stream_context_get_options($soapClient-&gt;getStreamContext());
        $this-&gt;assertTrue(strpos($o['http']['header'], 'X-Header-Name: X-Header-Value') !== false);
    }
    /**
     *
     */
    public function testGetStreamContextAsNull()
    {
        $soapClient = new SoapClient(array(
            SoapClient::WSDL_URL =&gt; __DIR__ . '/resources/bingsearch.wsdl',
            SoapClient::WSDL_CLASSMAP =&gt; self::classMap(),
        ));

        if (PHP_VERSION_ID &lt; 70013) {
            $this-&gt;assertNull($soapClient-&gt;getStreamContext());
        } else {
            $this-&gt;assertTrue(is_resource($soapClient-&gt;getStreamContext()));
        }
    }
    /**
     *
     */
    public function testSetHeadersOnExistingHttpHeadersWithGetStreamContextOptions()
    {
        $streamContext = stream_context_create(array(
            'http' =&gt; array(
                'Auth' =&gt; array(
                    'X-HEADER' =&gt; 'X-VALUE',
                ),
            ),
        ));
        $soapClient = new SoapClient(array(
            SoapClient::WSDL_URL =&gt; __DIR__ . '/resources/bingsearch.wsdl',
            SoapClient::WSDL_CLASSMAP =&gt; self::classMap(),
            SoapClient::WSDL_STREAM_CONTEXT =&gt; $streamContext,
        ));

        $this-&gt;assertTrue($soapClient-&gt;setHttpHeader('X-Header-Name', 'X-Header-Value'));
        $this-&gt;assertTrue($soapClient-&gt;setHttpHeader('X-Header-ID', 'X-Header-ID-Value'));

        $this-&gt;assertTrue(is_resource($soapClient-&gt;getStreamContext()));

        $o = $soapClient-&gt;getStreamContextOptions();
        $this-&gt;assertSame(array(
            'X-HEADER' =&gt; 'X-VALUE',
        ), $o['http']['Auth']);
        $this-&gt;assertContains('X-Header-Name: X-Header-Value', $o['http']['header']);
        $this-&gt;assertContains('X-Header-ID: X-Header-ID-Value', $o['http']['header']);
    }
    /**
     *
     */
    public function testSetSoapHeader()
    {
        $soapClient = new SoapClient(array(
            SoapClient::WSDL_URL =&gt; __DIR__ . '/resources/bingsearch.wsdl',
            SoapClient::WSDL_CLASSMAP =&gt; self::classMap(),
        ));

        $soapClient-&gt;setSoapHeader('urn:namespace', 'HeaderAuth', 'the-data', false, null);

        $this-&gt;assertEquals(array(
            new \SoapHeader('urn:namespace', 'HeaderAuth', 'the-data', false),
        ), $soapClient-&gt;getSoapClient()-&gt;__default_headers);
    }
    /**
     *
     */
    public function testSetSoapHeaderModified()
    {
        $soapClient = new SoapClient(array(
            SoapClient::WSDL_URL =&gt; __DIR__ . '/resources/bingsearch.wsdl',
            SoapClient::WSDL_CLASSMAP =&gt; self::classMap(),
        ));

        $soapClient-&gt;setSoapHeader('urn:namespace', 'HeaderAuth', 'the-data', false, null);
        $soapClient-&gt;setSoapHeader('urn:namespace', 'HeaderAuth', 'the-data-modified', false, null);

        $this-&gt;assertEquals(new \SoapHeader('urn:namespace', 'HeaderAuth', 'the-data-modified', false), array_pop($soapClient-&gt;getSoapClient()-&gt;__default_headers));
    }
    /**
     *
     */
    public function testSetSoapActor()
    {
        $soapClient = new SoapClient(array(
            SoapClient::WSDL_URL =&gt; __DIR__ . '/resources/bingsearch.wsdl',
            SoapClient::WSDL_CLASSMAP =&gt; self::classMap(),
        ));

        $soapClient-&gt;setSoapHeader('urn:namespace', 'HeaderAuth', 'the-data', false, 'actor');

        $this-&gt;assertEquals(array(
            new \SoapHeader('urn:namespace', 'HeaderAuth', 'the-data', false, 'actor'),
        ), $soapClient-&gt;getSoapClient()-&gt;__default_headers);
    }
    /**
     * @return string[]
     */
    public static function classMap()
    {
        return array (
            'AdultOption' =&gt; 'ApiEnumAdultOption',
            'ArrayOfDeepLink' =&gt; 'ApiStructArrayOfDeepLink',
            'ArrayOfError' =&gt; 'ApiStructArrayOfError',
            'ArrayOfImageResult' =&gt; 'ApiStructArrayOfImageResult',
            'ArrayOfInstantAnswerResult' =&gt; 'ApiStructArrayOfInstantAnswerResult',
            'ArrayOfMobileWebResult' =&gt; 'ApiStructArrayOfMobileWebResult',
            'ArrayOfMobileWebSearchOption' =&gt; 'ApiStructArrayOfMobileWebSearchOption',
            'ArrayOfNewsArticle' =&gt; 'ApiStructArrayOfNewsArticle',
            'ArrayOfNewsCollection' =&gt; 'ApiStructArrayOfNewsCollection',
            'ArrayOfNewsRelatedSearch' =&gt; 'ApiStructArrayOfNewsRelatedSearch',
            'ArrayOfNewsResult' =&gt; 'ApiStructArrayOfNewsResult',
            'ArrayOfRelatedSearchResult' =&gt; 'ApiStructArrayOfRelatedSearchResult',
            'ArrayOfSearchOption' =&gt; 'ApiStructArrayOfSearchOption',
            'ArrayOfSourceType' =&gt; 'ApiStructArrayOfSourceType',
            'ArrayOfSpellResult' =&gt; 'ApiStructArrayOfSpellResult',
            'ArrayOfString' =&gt; 'ApiStructArrayOfString',
            'ArrayOfVideoResult' =&gt; 'ApiStructArrayOfVideoResult',
            'ArrayOfWebResult' =&gt; 'ApiStructArrayOfWebResult',
            'ArrayOfWebSearchOption' =&gt; 'ApiStructArrayOfWebSearchOption',
            'ArrayOfWebSearchTag' =&gt; 'ApiStructArrayOfWebSearchTag',
            'DeepLink' =&gt; 'ApiStructDeepLink',
            'Error' =&gt; 'ApiStructError',
            'ImageRequest' =&gt; 'ApiStructImageRequest',
            'ImageResponse' =&gt; 'ApiStructImageResponse',
            'ImageResult' =&gt; 'ApiStructImageResult',
            'InstantAnswerResponse' =&gt; 'ApiStructInstantAnswerResponse',
            'InstantAnswerResult' =&gt; 'ApiStructInstantAnswerResult',
            'MobileWebRequest' =&gt; 'ApiStructMobileWebRequest',
            'MobileWebResponse' =&gt; 'ApiStructMobileWebResponse',
            'MobileWebResult' =&gt; 'ApiStructMobileWebResult',
            'MobileWebSearchOption' =&gt; 'ApiEnumMobileWebSearchOption',
            'NewsArticle' =&gt; 'ApiStructNewsArticle',
            'NewsCollection' =&gt; 'ApiStructNewsCollection',
            'NewsRelatedSearch' =&gt; 'ApiStructNewsRelatedSearch',
            'NewsRequest' =&gt; 'ApiStructNewsRequest',
            'NewsResponse' =&gt; 'ApiStructNewsResponse',
            'NewsResult' =&gt; 'ApiStructNewsResult',
            'NewsSortOption' =&gt; 'ApiEnumNewsSortOption',
            'PhonebookRequest' =&gt; 'ApiStructPhonebookRequest',
            'PhonebookSortOption' =&gt; 'ApiEnumPhonebookSortOption',
            'Query' =&gt; 'ApiStructQuery',
            'RelatedSearchResponse' =&gt; 'ApiStructRelatedSearchResponse',
            'RelatedSearchResult' =&gt; 'ApiStructRelatedSearchResult',
            'SearchOption' =&gt; 'ApiEnumSearchOption',
            'SearchRequest' =&gt; 'ApiStructSearchRequest',
            'SearchResponse' =&gt; 'ApiStructSearchResponse',
            'SourceType' =&gt; 'ApiEnumSourceType',
            'SpellResponse' =&gt; 'ApiStructSpellResponse',
            'SpellResult' =&gt; 'ApiStructSpellResult',
            'Thumbnail' =&gt; 'ApiStructThumbnail',
            'TranslationRequest' =&gt; 'ApiStructTranslationRequest',
            'VideoRequest' =&gt; 'ApiStructVideoRequest',
            'VideoResponse' =&gt; 'ApiStructVideoResponse',
            'VideoResult' =&gt; 'ApiStructVideoResult',
            'VideoSortOption' =&gt; 'ApiEnumVideoSortOption',
            'WebRequest' =&gt; 'ApiStructWebRequest',
            'WebResponse' =&gt; 'ApiStructWebResponse',
            'WebResult' =&gt; 'ApiStructWebResult',
            'WebSearchOption' =&gt; 'ApiEnumWebSearchOption',
            'WebSearchTag' =&gt; 'ApiStructWebSearchTag',
        );
    }
    /**
     *
     */
    public function testInvalidNonWsdlModeMustNotCreateASoapInstanceForMissingUriAndLocationOptions()
    {
        $soapClient = new SoapClient(array(
            SoapClient::WSDL_URL =&gt; null,
        ));

        $this-&gt;assertNull($soapClient-&gt;getSoapClient());
    }
    /**
     *
     */
    public function testInvalidNonWsdlModeMustNotCreateASoapInstanceForMissingLocationOption()
    {
        $soapClient = new SoapClient(array(
            SoapClient::WSDL_URL =&gt; null,
            SoapClient::WSDL_URI =&gt; 'http://api.bing.net:80/soap.asmx',
        ));

        $this-&gt;assertNull($soapClient-&gt;getSoapClient());
    }
    /**
     *
     */
    public function testInvalidNonWsdlModeMustNotCreateASoapInstanceForMissingUriOption()
    {
        $soapClient = new SoapClient(array(
            SoapClient::WSDL_URL =&gt; null,
            SoapClient::WSDL_LOCATION =&gt; 'http://api.bing.net:80/soap.asmx',
        ));

        $this-&gt;assertNull($soapClient-&gt;getSoapClient());
    }
    /**
     *
     */
    public function testInvalidNonWsdlModeMustCreateASoapInstanceWithUriAndLocationOptions()
    {
        $soapClient = new SoapClient(array(
            SoapClient::WSDL_URL =&gt; null,
            SoapClient::WSDL_LOCATION =&gt; 'http://api.bing.net:80/soap.asmx',
            SoapClient::WSDL_URI =&gt; 'http://api.bing.net:80/soap.asmx',
        ));

        $this-&gt;assertInstanceOf('\SoapClient', $soapClient-&gt;getSoapClient());
    }
    /**
     *
     */
    public function test__toStringMustReturnTheClassNameOfTheInstance()
    {
        $this-&gt;assertSame('WsdlToPhp\PackageBase\Tests\SoapClient', (string) new SoapClient());
    }
    /**
     *
     */
    public function testGetOutputHeadersWithoutRequestMustReturnAnEmptyArray()
    {
        $soapClient = new SoapClient(array(
            SoapClient::WSDL_URL =&gt; null,
            SoapClient::WSDL_LOCATION =&gt; 'http://api.bing.net:80/soap.asmx',
            SoapClient::WSDL_URI =&gt; 'http://api.bing.net:80/soap.asmx',
        ));

        $this-&gt;assertTrue(is_array($soapClient-&gt;getOutputHeaders()));
        $this-&gt;assertEmpty($soapClient-&gt;getOutputHeaders());
    }
}
</pre></body></html>