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