PluginProbe
StockPack – Stock photos and AI images from Unsplash, Adobe Stock, Freepik and more / 2.5.1
StockPack – Stock photos and AI images from Unsplash, Adobe Stock, Freepik and more v2.5.1
3.7.2 3.7.1 3.7.0 3.6.0 3.6.1 3.5.2 trunk 2.0 2.1 2.2 2.3 2.4 2.4.1 2.4.2 2.4.3 2.5.0 2.5.1 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.6.0 2.6.1 All 73 releases
stockpack / vendor / guzzlehttp / guzzle / tests / Handler / MockHandlerTest.php

MockHandlerTest.php in StockPack – Stock photos and AI images from Unsplash, Adobe Stock, Freepik and more 2.5.1, at vendor/guzzlehttp/guzzle/tests/Handler/MockHandlerTest.php

262 lines 7.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 namespace GuzzleHttp\Test\Handler;
3
4 use GuzzleHttp\Handler\MockHandler;
5 use GuzzleHttp\Promise\PromiseInterface;
6 use GuzzleHttp\Psr7\Request;
7 use GuzzleHttp\Psr7\Response;
8 use GuzzleHttp\TransferStats;
9 use PHPUnit\Framework\TestCase;
10
11 /**
12 * @covers \GuzzleHttp\Handler\MockHandler
13 */
14 class MockHandlerTest extends TestCase
15 {
16 public function testReturnsMockResponse()
17 {
18 $res = new Response();
19 $mock = new MockHandler([$res]);
20 $request = new Request('GET', 'http://example.com');
21 $p = $mock($request, []);
22 self::assertSame($res, $p->wait());
23 }
24
25 public function testIsCountable()
26 {
27 $res = new Response();
28 $mock = new MockHandler([$res, $res]);
29 self::assertCount(2, $mock);
30 }
31
32 public function testEmptyHandlerIsCountable()
33 {
34 self::assertCount(0, new MockHandler());
35 }
36
37 /**
38 * @expectedException \InvalidArgumentException
39 */
40 public function testEnsuresEachAppendIsValid()
41 {
42 $mock = new MockHandler(['a']);
43 $request = new Request('GET', 'http://example.com');
44 $mock($request, []);
45 }
46
47 public function testCanQueueExceptions()
48 {
49 $e = new \Exception('a');
50 $mock = new MockHandler([$e]);
51 $request = new Request('GET', 'http://example.com');
52 $p = $mock($request, []);
53 try {
54 $p->wait();
55 self::fail();
56 } catch (\Exception $e2) {
57 self::assertSame($e, $e2);
58 }
59 }
60
61 public function testCanGetLastRequestAndOptions()
62 {
63 $res = new Response();
64 $mock = new MockHandler([$res]);
65 $request = new Request('GET', 'http://example.com');
66 $mock($request, ['foo' => 'bar']);
67 self::assertSame($request, $mock->getLastRequest());
68 self::assertSame(['foo' => 'bar'], $mock->getLastOptions());
69 }
70
71 public function testSinkFilename()
72 {
73 $filename = sys_get_temp_dir() . '/mock_test_' . uniqid();
74 $res = new Response(200, [], 'TEST CONTENT');
75 $mock = new MockHandler([$res]);
76 $request = new Request('GET', '/');
77 $p = $mock($request, ['sink' => $filename]);
78 $p->wait();
79
80 self::assertFileExists($filename);
81 self::assertStringEqualsFile($filename, 'TEST CONTENT');
82
83 unlink($filename);
84 }
85
86 public function testSinkResource()
87 {
88 $file = tmpfile();
89 $meta = stream_get_meta_data($file);
90 $res = new Response(200, [], 'TEST CONTENT');
91 $mock = new MockHandler([$res]);
92 $request = new Request('GET', '/');
93 $p = $mock($request, ['sink' => $file]);
94 $p->wait();
95
96 self::assertFileExists($meta['uri']);
97 self::assertStringEqualsFile($meta['uri'], 'TEST CONTENT');
98 }
99
100 public function testSinkStream()
101 {
102 $stream = new \GuzzleHttp\Psr7\Stream(tmpfile());
103 $res = new Response(200, [], 'TEST CONTENT');
104 $mock = new MockHandler([$res]);
105 $request = new Request('GET', '/');
106 $p = $mock($request, ['sink' => $stream]);
107 $p->wait();
108
109 self::assertFileExists($stream->getMetadata('uri'));
110 self::assertStringEqualsFile($stream->getMetadata('uri'), 'TEST CONTENT');
111 }
112
113 public function testCanEnqueueCallables()
114 {
115 $r = new Response();
116 $fn = function ($req, $o) use ($r) {
117 return $r;
118 };
119 $mock = new MockHandler([$fn]);
120 $request = new Request('GET', 'http://example.com');
121 $p = $mock($request, ['foo' => 'bar']);
122 self::assertSame($r, $p->wait());
123 }
124
125 /**
126 * @expectedException \InvalidArgumentException
127 */
128 public function testEnsuresOnHeadersIsCallable()
129 {
130 $res = new Response();
131 $mock = new MockHandler([$res]);
132 $request = new Request('GET', 'http://example.com');
133 $mock($request, ['on_headers' => 'error!']);
134 }
135
136 /**
137 * @expectedException \GuzzleHttp\Exception\RequestException
138 * @expectedExceptionMessage An error was encountered during the on_headers event
139 * @expectedExceptionMessage test
140 */
141 public function testRejectsPromiseWhenOnHeadersFails()
142 {
143 $res = new Response();
144 $mock = new MockHandler([$res]);
145 $request = new Request('GET', 'http://example.com');
146 $promise = $mock($request, [
147 'on_headers' => function () {
148 throw new \Exception('test');
149 }
150 ]);
151
152 $promise->wait();
153 }
154 public function testInvokesOnFulfilled()
155 {
156 $res = new Response();
157 $mock = new MockHandler([$res], function ($v) use (&$c) {
158 $c = $v;
159 });
160 $request = new Request('GET', 'http://example.com');
161 $mock($request, [])->wait();
162 self::assertSame($res, $c);
163 }
164
165 public function testInvokesOnRejected()
166 {
167 $e = new \Exception('a');
168 $c = null;
169 $mock = new MockHandler([$e], null, function ($v) use (&$c) {
170 $c = $v;
171 });
172 $request = new Request('GET', 'http://example.com');
173 $mock($request, [])->wait(false);
174 self::assertSame($e, $c);
175 }
176
177 /**
178 * @expectedException \OutOfBoundsException
179 */
180 public function testThrowsWhenNoMoreResponses()
181 {
182 $mock = new MockHandler();
183 $request = new Request('GET', 'http://example.com');
184 $mock($request, []);
185 }
186
187 /**
188 * @expectedException \GuzzleHttp\Exception\BadResponseException
189 */
190 public function testCanCreateWithDefaultMiddleware()
191 {
192 $r = new Response(500);
193 $mock = MockHandler::createWithMiddleware([$r]);
194 $request = new Request('GET', 'http://example.com');
195 $mock($request, ['http_errors' => true])->wait();
196 }
197
198 public function testInvokesOnStatsFunctionForResponse()
199 {
200 $res = new Response();
201 $mock = new MockHandler([$res]);
202 $request = new Request('GET', 'http://example.com');
203 /** @var TransferStats|null $stats */
204 $stats = null;
205 $onStats = function (TransferStats $s) use (&$stats) {
206 $stats = $s;
207 };
208 $p = $mock($request, ['on_stats' => $onStats]);
209 $p->wait();
210 self::assertSame($res, $stats->getResponse());
211 self::assertSame($request, $stats->getRequest());
212 }
213
214 public function testInvokesOnStatsFunctionForError()
215 {
216 $e = new \Exception('a');
217 $c = null;
218 $mock = new MockHandler([$e], null, function ($v) use (&$c) {
219 $c = $v;
220 });
221 $request = new Request('GET', 'http://example.com');
222
223 /** @var TransferStats|null $stats */
224 $stats = null;
225 $onStats = function (TransferStats $s) use (&$stats) {
226 $stats = $s;
227 };
228 $mock($request, ['on_stats' => $onStats])->wait(false);
229 self::assertSame($e, $stats->getHandlerErrorData());
230 self::assertNull($stats->getResponse());
231 self::assertSame($request, $stats->getRequest());
232 }
233
234 public function testTransferTime()
235 {
236 $e = new \Exception('a');
237 $c = null;
238 $mock = new MockHandler([$e], null, function ($v) use (&$c) {
239 $c = $v;
240 });
241 $request = new Request('GET', 'http://example.com');
242 $stats = null;
243 $onStats = function (TransferStats $s) use (&$stats) {
244 $stats = $s;
245 };
246 $mock($request, [ 'on_stats' => $onStats, 'transfer_time' => 0.4 ])->wait(false);
247 self::assertEquals(0.4, $stats->getTransferTime());
248 }
249
250 public function testResetQueue()
251 {
252 $mock = new MockHandler([new Response(200), new Response(204)]);
253 self::assertCount(2, $mock);
254
255 $mock->reset();
256 self::assertEmpty($mock);
257
258 $mock->append(new Response(500));
259 self::assertCount(1, $mock);
260 }
261 }
262