Open Monograph Press  3.3.0
DefaultRequestSerializerTest.php
1 <?php
2 
4 
13 
18 {
20  protected $request;
21 
23  protected $command;
24 
26  protected $client;
27 
29  protected $serializer;
30 
32  protected $operation;
33 
34  public function setUp()
35  {
36  $this->serializer = DefaultRequestSerializer::getInstance();
37  $this->client = new Client('http://foo.com/baz');
38  $this->operation = new Operation(array('httpMethod' => 'POST'));
39  $this->command = $this->getMockBuilder('Guzzle\Service\Command\AbstractCommand')
40  ->setConstructorArgs(array(array(), $this->operation))
41  ->getMockForAbstractClass();
42  $this->command->setClient($this->client);
43  }
44 
45  public function testAllowsCustomVisitor()
46  {
47  $this->serializer->addVisitor('custom', new HeaderVisitor());
48  $this->command['test'] = '123';
49  $this->operation->addParam(new Parameter(array('name' => 'test', 'location' => 'custom')));
50  $request = $this->serializer->prepare($this->command);
51  $this->assertEquals('123', (string) $request->getHeader('test'));
52  }
53 
54  public function testUsesRelativePath()
55  {
56  $this->operation->setUri('bar');
57  $request = $this->serializer->prepare($this->command);
58  $this->assertEquals('http://foo.com/baz/bar', (string) $request->getUrl());
59  }
60 
61  public function testUsesRelativePathWithUriLocations()
62  {
63  $this->command['test'] = '123';
64  $this->operation->setUri('bar/{test}');
65  $this->operation->addParam(new Parameter(array('name' => 'test', 'location' => 'uri')));
66  $request = $this->serializer->prepare($this->command);
67  $this->assertEquals('http://foo.com/baz/bar/123', (string) $request->getUrl());
68  }
69 
70  public function testAllowsCustomFactory()
71  {
72  $f = new VisitorFlyweight();
74  $this->assertSame($f, $this->readAttribute($serializer, 'factory'));
75  }
76 
77  public function testMixedParams()
78  {
79  $this->operation->setUri('bar{?limit,fields}');
80  $this->operation->addParam(new Parameter(array(
81  'name' => 'limit',
82  'location' => 'uri',
83  'required' => false,
84  )));
85  $this->operation->addParam(new Parameter(array(
86  'name' => 'fields',
87  'location' => 'uri',
88  'required' => true,
89  )));
90 
91  $this->command['fields'] = array('id', 'name');
92 
93  $request = $this->serializer->prepare($this->command);
94  $this->assertEquals('http://foo.com/baz/bar?fields='.urlencode('id,name'), (string) $request->getUrl());
95  }
96 
97  public function testValidatesAdditionalParameters()
98  {
99  $description = ServiceDescription::factory(array(
100  'operations' => array(
101  'foo' => array(
102  'httpMethod' => 'PUT',
103  'parameters' => array(
104  'bar' => array('location' => 'header')
105  ),
106  'additionalParameters' => array(
107  'location' => 'json'
108  )
109  )
110  )
111  ));
112 
113  $client = new Client();
114  $client->setDescription($description);
115  $command = $client->getCommand('foo');
116  $command['bar'] = 'test';
117  $command['hello'] = 'abc';
118  $request = $command->prepare();
119  $this->assertEquals('test', (string) $request->getHeader('bar'));
120  $this->assertEquals('{"hello":"abc"}', (string) $request->getBody());
121  }
122 }
Guzzle\Service\Command\LocationVisitor\VisitorFlyweight
Definition: VisitorFlyweight.php:12
Guzzle\Tests\Service\Command\DefaultRequestSerializerTest\testAllowsCustomVisitor
testAllowsCustomVisitor()
Definition: DefaultRequestSerializerTest.php:60
Guzzle\Service\Description\Operation
Definition: Operation.php:10
Guzzle\Tests\GuzzleTestCase
Definition: GuzzleTestCase.php:22
Guzzle\Service\Command\LocationVisitor\Request\HeaderVisitor
Definition: Request/HeaderVisitor.php:13
Guzzle\Service\Client
Definition: paymethod/paypal/lib/vendor/guzzle/guzzle/src/Guzzle/Service/Client.php:25
Guzzle\Tests\Service\Command\DefaultRequestSerializerTest\testMixedParams
testMixedParams()
Definition: DefaultRequestSerializerTest.php:92
Guzzle\Service\Description\Parameter
Definition: Parameter.php:10
Guzzle\Service\Command\DefaultRequestSerializer
Definition: DefaultRequestSerializer.php:14
Guzzle\Service\Description\ServiceDescription\factory
static factory($config, array $options=array())
Definition: ServiceDescription.php:65
Guzzle\Tests\Service\Command\DefaultRequestSerializerTest\$request
$request
Definition: DefaultRequestSerializerTest.php:23
Guzzle\Tests\Service\Command\DefaultRequestSerializerTest\$operation
$operation
Definition: DefaultRequestSerializerTest.php:47
Guzzle\Service\Command\DefaultRequestSerializer\getInstance
static getInstance()
Definition: DefaultRequestSerializer.php:29
Guzzle\Tests\Service\Command\DefaultRequestSerializerTest\$client
$client
Definition: DefaultRequestSerializerTest.php:35
Guzzle\Service\Description\ServiceDescription
Definition: ServiceDescription.php:11
Guzzle\Tests\Service\Command\DefaultRequestSerializerTest\setUp
setUp()
Definition: DefaultRequestSerializerTest.php:49
Guzzle\Tests\Service\Command\DefaultRequestSerializerTest
Definition: DefaultRequestSerializerTest.php:17
Guzzle\Tests\Service\Command\DefaultRequestSerializerTest\testAllowsCustomFactory
testAllowsCustomFactory()
Definition: DefaultRequestSerializerTest.php:85
Guzzle\Http\Message\EntityEnclosingRequest
Definition: EntityEnclosingRequest.php:14
Guzzle\Tests\Service\Command\DefaultRequestSerializerTest\testUsesRelativePathWithUriLocations
testUsesRelativePathWithUriLocations()
Definition: DefaultRequestSerializerTest.php:76
Guzzle\Tests\Service\Command\DefaultRequestSerializerTest\$serializer
$serializer
Definition: DefaultRequestSerializerTest.php:41
Guzzle\Tests\Service\Command\DefaultRequestSerializerTest\testUsesRelativePath
testUsesRelativePath()
Definition: DefaultRequestSerializerTest.php:69
Guzzle\Tests\Service\Command\DefaultRequestSerializerTest\testValidatesAdditionalParameters
testValidatesAdditionalParameters()
Definition: DefaultRequestSerializerTest.php:112
Guzzle\Tests\Service\Command\DefaultRequestSerializerTest\$command
$command
Definition: DefaultRequestSerializerTest.php:29
Guzzle\Tests\Service\Command
Definition: AbstractCommandTest.php:3