Open Monograph Press  3.3.0
ServiceDescriptionTest.php
1 <?php
2 
4 
9 
14 {
15  protected $serviceData;
16 
17  public function setup()
18  {
19  $this->serviceData = array(
20  'test_command' => new Operation(array(
21  'name' => 'test_command',
22  'description' => 'documentationForCommand',
23  'httpMethod' => 'DELETE',
24  'class' => 'Guzzle\\Tests\\Service\\Mock\\Command\\MockCommand',
25  'parameters' => array(
26  'bucket' => array('required' => true),
27  'key' => array('required' => true)
28  )
29  ))
30  );
31  }
32 
38  {
39  $jsonFile = __DIR__ . '/../../TestData/test_service.json';
40  $this->assertInstanceOf('Guzzle\Service\Description\ServiceDescription', ServiceDescription::factory($jsonFile));
41  }
42 
43  public function testConstructor()
44  {
45  $service = new ServiceDescription(array('operations' => $this->serviceData));
46  $this->assertEquals(1, count($service->getOperations()));
47  $this->assertFalse($service->hasOperation('foobar'));
48  $this->assertTrue($service->hasOperation('test_command'));
49  }
50 
51  public function testIsSerializable()
52  {
53  $service = new ServiceDescription(array('operations' => $this->serviceData));
54  $data = serialize($service);
55  $d2 = unserialize($data);
56  $this->assertEquals(serialize($service), serialize($d2));
57  }
58 
59  public function testSerializesParameters()
60  {
61  $service = new ServiceDescription(array(
62  'operations' => array(
63  'foo' => new Operation(array('parameters' => array('foo' => array('type' => 'string'))))
64  )
65  ));
66  $serialized = serialize($service);
67  $this->assertContains('"parameters":{"foo":', $serialized);
68  $service = unserialize($serialized);
69  $this->assertTrue($service->getOperation('foo')->hasParam('foo'));
70  }
71 
73  {
74  $description = new ServiceDescription(array(
75  'operations' => array(
76  'test' => new Operation(array(
77  'httpMethod' => 'PUT',
78  'parameters' => array(
79  'data' => array(
80  'required' => true,
81  'filters' => 'json_encode',
82  'location' => 'body'
83  )
84  )
85  ))
86  )
87  ));
88  $client = new Client();
89  $client->setDescription($description);
90  $command = $client->getCommand('test', array(
91  'data' => array(
92  'foo' => 'bar'
93  )
94  ));
95 
96  $request = $command->prepare();
97  $this->assertEquals('{"foo":"bar"}', (string) $request->getBody());
98  }
99 
100  public function testContainsModels()
101  {
102  $d = new ServiceDescription(array(
103  'operations' => array('foo' => array()),
104  'models' => array(
105  'Tag' => array('type' => 'object'),
106  'Person' => array('type' => 'object')
107  )
108  ));
109  $this->assertTrue($d->hasModel('Tag'));
110  $this->assertTrue($d->hasModel('Person'));
111  $this->assertFalse($d->hasModel('Foo'));
112  $this->assertInstanceOf('Guzzle\Service\Description\Parameter', $d->getModel('Tag'));
113  $this->assertNull($d->getModel('Foo'));
114  $this->assertContains('"models":{', serialize($d));
115  $this->assertEquals(array('Tag', 'Person'), array_keys($d->getModels()));
116  }
117 
118  public function testCanAddModels()
119  {
120  $d = new ServiceDescription(array());
121  $this->assertFalse($d->hasModel('Foo'));
122  $d->addModel(new Parameter(array('name' => 'Foo')));
123  $this->assertTrue($d->hasModel('Foo'));
124  }
125 
126  public function testHasAttributes()
127  {
128  $d = new ServiceDescription(array(
129  'operations' => array(),
130  'name' => 'Name',
131  'description' => 'Description',
132  'apiVersion' => '1.24'
133  ));
134 
135  $this->assertEquals('Name', $d->getName());
136  $this->assertEquals('Description', $d->getDescription());
137  $this->assertEquals('1.24', $d->getApiVersion());
138 
139  $s = serialize($d);
140  $this->assertContains('"name":"Name"', $s);
141  $this->assertContains('"description":"Description"', $s);
142  $this->assertContains('"apiVersion":"1.24"', $s);
143 
144  $d = unserialize($s);
145  $this->assertEquals('Name', $d->getName());
146  $this->assertEquals('Description', $d->getDescription());
147  $this->assertEquals('1.24', $d->getApiVersion());
148  }
149 
151  {
152  $data = array(
153  'operations' => array('foo' => array('class' => 'foo', 'parameters' => array())),
154  'name' => 'Name',
155  'description' => 'Test',
156  'apiVersion' => '1.24',
157  'auth' => 'foo',
158  'keyParam' => 'bar'
159  );
160  $d = new ServiceDescription($data);
161  $d->setData('hello', 'baz');
162  $this->assertEquals('foo', $d->getData('auth'));
163  $this->assertEquals('baz', $d->getData('hello'));
164  $this->assertEquals('bar', $d->getData('keyParam'));
165  // responseClass and responseType are added by default
166  $data['operations']['foo']['responseClass'] = 'array';
167  $data['operations']['foo']['responseType'] = 'primitive';
168  $this->assertEquals($data + array('hello' => 'baz'), json_decode($d->serialize(), true));
169  }
170 
171  public function testHasToArray()
172  {
173  $data = array(
174  'operations' => array(),
175  'name' => 'Name',
176  'description' => 'Test'
177  );
178  $d = new ServiceDescription($data);
179  $arr = $d->toArray();
180  $this->assertEquals('Name', $arr['name']);
181  $this->assertEquals('Test', $arr['description']);
182  }
183 
185  {
186  $s = new ServiceDescription(array());
187  $this->assertNull($s->getOperation('foo'));
188  }
189 
190  public function testCanAddOperations()
191  {
192  $s = new ServiceDescription(array());
193  $this->assertFalse($s->hasOperation('Foo'));
194  $s->addOperation(new Operation(array('name' => 'Foo')));
195  $this->assertTrue($s->hasOperation('Foo'));
196  }
197 
201  public function testValidatesOperationTypes()
202  {
203  $s = new ServiceDescription(array(
204  'operations' => array('foo' => new \stdClass())
205  ));
206  }
207 
208  public function testHasBaseUrl()
209  {
210  $description = new ServiceDescription(array('baseUrl' => 'http://foo.com'));
211  $this->assertEquals('http://foo.com', $description->getBaseUrl());
212  $description->setBaseUrl('http://foobar.com');
213  $this->assertEquals('http://foobar.com', $description->getBaseUrl());
214  }
215 
216  public function testCanUseBasePath()
217  {
218  $description = new ServiceDescription(array('basePath' => 'http://foo.com'));
219  $this->assertEquals('http://foo.com', $description->getBaseUrl());
220  }
221 
222  public function testModelsHaveNames()
223  {
224  $desc = array(
225  'models' => array(
226  'date' => array('type' => 'string'),
227  'user'=> array(
228  'type' => 'object',
229  'properties' => array(
230  'dob' => array('$ref' => 'date')
231  )
232  )
233  )
234  );
235 
236  $s = ServiceDescription::factory($desc);
237  $this->assertEquals('date', $s->getModel('date')->getName());
238  $this->assertEquals('dob', $s->getModel('user')->getProperty('dob')->getName());
239  }
240 }
Guzzle\Tests\Service\Description\ServiceDescriptionTest\testPersistsCustomAttributes
testPersistsCustomAttributes()
Definition: ServiceDescriptionTest.php:150
Guzzle\Tests\Service\Description\ServiceDescriptionTest\testHasBaseUrl
testHasBaseUrl()
Definition: ServiceDescriptionTest.php:208
Guzzle\Tests\Service\Description\ServiceDescriptionTest\testHasToArray
testHasToArray()
Definition: ServiceDescriptionTest.php:171
Guzzle\Service\Description\Operation
Definition: Operation.php:10
Guzzle\Tests\GuzzleTestCase
Definition: GuzzleTestCase.php:22
Guzzle\Tests\Service\Description\ServiceDescriptionTest\testIsSerializable
testIsSerializable()
Definition: ServiceDescriptionTest.php:51
Guzzle\Tests\Service\Description\ServiceDescriptionTest\testCanAddModels
testCanAddModels()
Definition: ServiceDescriptionTest.php:118
Guzzle\Service\Client
Definition: paymethod/paypal/lib/vendor/guzzle/guzzle/src/Guzzle/Service/Client.php:25
Guzzle\Service\Description\Parameter
Definition: Parameter.php:10
Guzzle\Tests\Service\Description\ServiceDescriptionTest\testContainsModels
testContainsModels()
Definition: ServiceDescriptionTest.php:100
Guzzle\Service\Description\ServiceDescription\factory
static factory($config, array $options=array())
Definition: ServiceDescription.php:65
Guzzle\Tests\Service\Description\ServiceDescriptionTest\testModelsHaveNames
testModelsHaveNames()
Definition: ServiceDescriptionTest.php:222
Guzzle\Service\Description\ServiceDescription
Definition: ServiceDescription.php:11
Guzzle\Tests\Service\Description\ServiceDescriptionTest\testSerializesParameters
testSerializesParameters()
Definition: ServiceDescriptionTest.php:59
Guzzle\Tests\Service\Description
Definition: OperationTest.php:3
Guzzle\Tests\Service\Description\ServiceDescriptionTest\testFactoryDelegatesToConcreteFactories
testFactoryDelegatesToConcreteFactories()
Definition: ServiceDescriptionTest.php:37
Guzzle\Tests\Service\Description\ServiceDescriptionTest\testReturnsNullWhenRetrievingMissingOperation
testReturnsNullWhenRetrievingMissingOperation()
Definition: ServiceDescriptionTest.php:184
Guzzle\Tests\Service\Description\ServiceDescriptionTest\testCanUseBasePath
testCanUseBasePath()
Definition: ServiceDescriptionTest.php:216
Guzzle\Tests\Service\Description\ServiceDescriptionTest\testConstructor
testConstructor()
Definition: ServiceDescriptionTest.php:43
Guzzle\Tests\Service\Description\ServiceDescriptionTest\testAllowsForJsonBasedArrayParamsFunctionalTest
testAllowsForJsonBasedArrayParamsFunctionalTest()
Definition: ServiceDescriptionTest.php:72
Guzzle\Tests\Service\Description\ServiceDescriptionTest\testValidatesOperationTypes
testValidatesOperationTypes()
Definition: ServiceDescriptionTest.php:201
Guzzle\Tests\Service\Description\ServiceDescriptionTest\testHasAttributes
testHasAttributes()
Definition: ServiceDescriptionTest.php:126
Guzzle\Tests\Service\Description\ServiceDescriptionTest\$serviceData
$serviceData
Definition: ServiceDescriptionTest.php:15
Guzzle\Tests\Service\Description\ServiceDescriptionTest\testCanAddOperations
testCanAddOperations()
Definition: ServiceDescriptionTest.php:190
Guzzle\Tests\Service\Description\ServiceDescriptionTest
Definition: ServiceDescriptionTest.php:13
Guzzle\Tests\Service\Description\ServiceDescriptionTest\setup
setup()
Definition: ServiceDescriptionTest.php:17