113 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			PHP
		
	
	
			
		
		
	
	
			113 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			PHP
		
	
	
<?php
 | 
						|
namespace GuzzleHttp\Tests\Command\Guzzle\Handler;
 | 
						|
 | 
						|
use GuzzleHttp\Client as HttpClient;
 | 
						|
use GuzzleHttp\Command\Guzzle\Description;
 | 
						|
use GuzzleHttp\Command\Guzzle\GuzzleClient;
 | 
						|
 | 
						|
/**
 | 
						|
 * @covers \GuzzleHttp\Command\Guzzle\Handler\ValidatedDescriptionHandler
 | 
						|
 */
 | 
						|
class ValidatedDescriptionHandlerTest extends \PHPUnit_Framework_TestCase
 | 
						|
{
 | 
						|
 | 
						|
    /**
 | 
						|
     * @expectedException \GuzzleHttp\Command\Exception\CommandException
 | 
						|
     * @expectedExceptionMessage Validation errors: [bar] is a required string
 | 
						|
     */
 | 
						|
    public function testValidates()
 | 
						|
    {
 | 
						|
        $description = new Description([
 | 
						|
            'operations' => [
 | 
						|
                'foo' => [
 | 
						|
                    'uri' => 'http://httpbin.org',
 | 
						|
                    'httpMethod' => 'GET',
 | 
						|
                    'responseModel' => 'j',
 | 
						|
                    'parameters' => [
 | 
						|
                        'bar' => [
 | 
						|
                            'type'     => 'string',
 | 
						|
                            'required' => true
 | 
						|
                        ]
 | 
						|
                    ]
 | 
						|
                ]
 | 
						|
            ]
 | 
						|
        ]);
 | 
						|
 | 
						|
        $client = new GuzzleClient(new HttpClient(), $description);
 | 
						|
        $client->foo([]);
 | 
						|
    }
 | 
						|
 | 
						|
    public function testSuccessfulValidationDoesNotThrow()
 | 
						|
    {
 | 
						|
        $description = new Description([
 | 
						|
            'operations' => [
 | 
						|
                'foo' => [
 | 
						|
                    'uri' => 'http://httpbin.org',
 | 
						|
                    'httpMethod' => 'GET',
 | 
						|
                    'responseModel' => 'j',
 | 
						|
                    'parameters' => []
 | 
						|
                ]
 | 
						|
            ],
 | 
						|
            'models' => [
 | 
						|
                'j' => [
 | 
						|
                    'type' => 'object'
 | 
						|
                ]
 | 
						|
            ]
 | 
						|
        ]);
 | 
						|
 | 
						|
        $client = new GuzzleClient(new HttpClient(), $description);
 | 
						|
        $client->foo([]);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @expectedException \GuzzleHttp\Command\Exception\CommandException
 | 
						|
     * @expectedExceptionMessage Validation errors: [bar] must be of type string
 | 
						|
     */
 | 
						|
    public function testValidatesAdditionalParameters()
 | 
						|
    {
 | 
						|
        $description = new Description([
 | 
						|
            'operations' => [
 | 
						|
                'foo' => [
 | 
						|
                    'uri' => 'http://httpbin.org',
 | 
						|
                    'httpMethod' => 'GET',
 | 
						|
                    'responseModel' => 'j',
 | 
						|
                    'additionalParameters' => [
 | 
						|
                        'type'     => 'string'
 | 
						|
                    ]
 | 
						|
                ]
 | 
						|
            ],
 | 
						|
            'models' => [
 | 
						|
                'j' => [
 | 
						|
                    'type' => 'object'
 | 
						|
                ]
 | 
						|
            ]
 | 
						|
        ]);
 | 
						|
 | 
						|
        $client = new GuzzleClient(new HttpClient(), $description);
 | 
						|
        $client->foo(['bar' => new \stdClass()]);
 | 
						|
    }
 | 
						|
 | 
						|
    public function testFilterBeforeValidate()
 | 
						|
    {
 | 
						|
        $description = new Description([
 | 
						|
            'operations' => [
 | 
						|
                'foo' => [
 | 
						|
                    'uri' => 'http://httpbin.org',
 | 
						|
                    'httpMethod' => 'GET',
 | 
						|
                    'parameters' => [
 | 
						|
                        'bar' => [
 | 
						|
                            'location' => 'uri',
 | 
						|
                            'type'     => 'string',
 | 
						|
                            'format'   => 'date-time',
 | 
						|
                            'required' => true
 | 
						|
                        ]
 | 
						|
                    ]
 | 
						|
                ]
 | 
						|
            ]
 | 
						|
        ]);
 | 
						|
 | 
						|
        $client = new GuzzleClient(new HttpClient(), $description);
 | 
						|
        $client->foo(['bar' => new \DateTimeImmutable()]); // Should not throw any exception
 | 
						|
    }
 | 
						|
}
 |