92 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			92 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			PHP
		
	
	
|  | <?php | ||
|  | namespace GuzzleHttp\Tests\Command\Guzzle\RequestLocation; | ||
|  | 
 | ||
|  | use GuzzleHttp\Command\Command; | ||
|  | use GuzzleHttp\Command\Guzzle\Operation; | ||
|  | use GuzzleHttp\Command\Guzzle\Parameter; | ||
|  | use GuzzleHttp\Command\Guzzle\RequestLocation\JsonLocation; | ||
|  | use GuzzleHttp\Psr7\Request; | ||
|  | 
 | ||
|  | /** | ||
|  |  * @covers \GuzzleHttp\Command\Guzzle\RequestLocation\JsonLocation | ||
|  |  * @covers \GuzzleHttp\Command\Guzzle\RequestLocation\AbstractLocation | ||
|  |  */ | ||
|  | class JsonLocationTest extends \PHPUnit_Framework_TestCase | ||
|  | { | ||
|  |     /** | ||
|  |      * @group RequestLocation | ||
|  |      */ | ||
|  |     public function testVisitsLocation() | ||
|  |     { | ||
|  |         $location = new JsonLocation('json'); | ||
|  |         $command = new Command('foo', ['foo' => 'bar']); | ||
|  |         $request = new Request('POST', 'http://httbin.org'); | ||
|  |         $param = new Parameter(['name' => 'foo']); | ||
|  |         $location->visit($command, $request, $param); | ||
|  |         $operation = new Operation(); | ||
|  |         $request = $location->after($command, $request, $operation); | ||
|  |         $this->assertEquals('{"foo":"bar"}', $request->getBody()->getContents()); | ||
|  |         $this->assertArraySubset([0 => 'application/json'], $request->getHeader('Content-Type')); | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * @group RequestLocation | ||
|  |      */ | ||
|  |     public function testVisitsAdditionalProperties() | ||
|  |     { | ||
|  |         $location = new JsonLocation('json', 'foo'); | ||
|  |         $command = new Command('foo', ['foo' => 'bar']); | ||
|  |         $command['baz'] = ['bam' => [1]]; | ||
|  |         $request = new Request('POST', 'http://httbin.org'); | ||
|  |         $param = new Parameter(['name' => 'foo']); | ||
|  |         $location->visit($command, $request, $param); | ||
|  |         $operation = new Operation([ | ||
|  |             'additionalParameters' => [ | ||
|  |                 'location' => 'json' | ||
|  |             ] | ||
|  |         ]); | ||
|  |         $request = $location->after($command, $request, $operation); | ||
|  |         $this->assertEquals('{"foo":"bar","baz":{"bam":[1]}}', $request->getBody()->getContents()); | ||
|  |         $this->assertEquals([0 => 'foo'], $request->getHeader('Content-Type')); | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * @group RequestLocation | ||
|  |      */ | ||
|  |     public function testVisitsNestedLocation() | ||
|  |     { | ||
|  |         $location = new JsonLocation('json'); | ||
|  |         $command = new Command('foo', ['foo' => 'bar']); | ||
|  |         $request = new Request('POST', 'http://httbin.org'); | ||
|  |         $param = new Parameter([ | ||
|  |             'name' => 'foo', | ||
|  |             'type' => 'object', | ||
|  |             'properties' => [ | ||
|  |                 'baz' => [ | ||
|  |                     'type' => 'array', | ||
|  |                     'items' => [ | ||
|  |                         'type' => 'string', | ||
|  |                         'filters' => ['strtoupper'] | ||
|  |                     ] | ||
|  |                 ] | ||
|  |             ], | ||
|  |             'additionalProperties' => [ | ||
|  |                 'type' => 'array', | ||
|  |                 'items' => [ | ||
|  |                     'type' => 'string', | ||
|  |                     'filters' => ['strtolower'] | ||
|  |                 ] | ||
|  |             ] | ||
|  |         ]); | ||
|  |         $command['foo'] = [ | ||
|  |             'baz' => ['a', 'b'], | ||
|  |             'bam' => ['A', 'B'], | ||
|  |         ]; | ||
|  |         $location->visit($command, $request, $param); | ||
|  |         $operation = new Operation(); | ||
|  |         $request = $location->after($command, $request, $operation); | ||
|  |         $this->assertEquals('{"foo":{"baz":["A","B"],"bam":["a","b"]}}', (string) $request->getBody()->getContents()); | ||
|  |         $this->assertEquals([0 => 'application/json'], $request->getHeader('Content-Type')); | ||
|  |     } | ||
|  | } |