32 $this->assertInstanceOf(
'Guzzle\\Http\\Message\\MessageInterface', $request);
33 $this->assertInstanceOf(
'Guzzle\\Http\\Message\\RequestInterface', $request);
34 $this->assertInstanceOf(
'Guzzle\\Http\\Message\\Request', $request);
35 $this->assertEquals(
'GET', $request->getMethod());
36 $this->assertEquals(
'http', $request->getScheme());
37 $this->assertEquals(
'http://www.google.com/', $request->getUrl());
38 $this->assertEquals(
'www.google.com', $request->getHost());
39 $this->assertEquals(
'/', $request->getPath());
40 $this->assertEquals(
'/', $request->getResource());
43 $this->
getServer()->enqueue(
"HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n");
46 $request->setClient(
new Client());
47 $response = $request->send();
48 $this->assertSame($b, $response->getBody());
55 $this->assertInstanceOf(
'Guzzle\\Http\\Message\\EntityEnclosingRequest', $request);
56 $this->assertEquals(
'PUT', $request->getMethod());
57 $this->assertEquals(
'http', $request->getScheme());
58 $this->assertEquals(
'http://www.google.com/path?q=1&v=2', $request->getUrl());
59 $this->assertEquals(
'www.google.com', $request->getHost());
60 $this->assertEquals(
'/path', $request->getPath());
61 $this->assertEquals(
'/path?q=1&v=2', $request->getResource());
62 $this->assertInstanceOf(
'Guzzle\\Http\\EntityBody', $request->getBody());
63 $this->assertEquals(
'Data', (
string) $request->getBody());
68 $this->assertInstanceOf(
'Guzzle\\Http\\Message\\EntityEnclosingRequest', $request);
69 $this->assertEquals(
'Data', (
string) $request->getBody());
72 $resource = fopen(
'php://temp',
'w+');
73 fwrite($resource,
'Data');
75 $this->assertInstanceOf(
'Guzzle\\Http\\Message\\EntityEnclosingRequest', $request);
76 $this->assertEquals(
'Data', (
string) $request->getBody());
80 $this->assertInstanceOf(
'Guzzle\\Http\\Message\\EntityEnclosingRequest', $request);
81 $this->assertEquals(
'http://www.example.com/', (
string) $request->getBody());
87 $this->assertEquals(
'DELETE', $request->getMethod());
89 $this->assertEquals(
'HEAD', $request->getMethod());
95 $this->assertEquals(
'OPTIONS', $request->getMethod());
96 $this->assertInstanceOf(
'Guzzle\\Http\\Message\\EntityEnclosingRequest', $request);
102 $this->assertEquals(
'Data', (
string) $request->getBody());
111 $this->assertEquals(array(
'a' =>
'b'), $request->getPostFields()->getAll());
118 $this->assertEquals(array(
'a' =>
'b'), $request->getPostFields()->getAll());
124 $this->assertEquals(array(
'a' =>
'b'), $request->getPostFields()->getAll());
128 'file' =>
'@' . __FILE__
131 $this->assertEquals(array(
133 ), $request->getPostFields()->getAll());
135 $files = $request->getPostFiles();
136 $this->assertInstanceOf(
'Guzzle\Http\Message\PostFile', $files[
'file'][0]);
141 $parts = parse_url(
'http://michael:123@www.google.com:8080/path?q=1&v=2');
144 $this->assertInstanceOf(
'Guzzle\\Http\\Message\\EntityEnclosingRequest', $request);
145 $this->assertEquals(
'PUT', $request->getMethod());
146 $this->assertEquals(
'http', $request->getScheme());
147 $this->assertEquals(
'http://www.google.com:8080/path?q=1&v=2', $request->getUrl());
148 $this->assertEquals(
'www.google.com', $request->getHost());
149 $this->assertEquals(
'www.google.com:8080', $request->getHeader(
'Host'));
150 $this->assertEquals(
'/path', $request->getPath());
151 $this->assertEquals(
'/path?q=1&v=2', $request->getResource());
152 $this->assertInstanceOf(
'Guzzle\\Http\\EntityBody', $request->getBody());
153 $this->assertEquals(
'Data', (
string) $request->getBody());
154 $this->assertEquals(
'michael', $request->getUsername());
155 $this->assertEquals(
'123', $request->getPassword());
156 $this->assertEquals(
'8080', $request->getPort());
157 $this->assertEquals(array(
159 'host' =>
'www.google.com',
162 'query' =>
'q=1&v=2',
163 ), parse_url($request->getUrl()));
168 $auth = base64_encode(
'michael:123');
169 $message =
"PUT /path?q=1&v=2 HTTP/1.1\r\nHost: www.google.com:8080\r\nContent-Length: 4\r\nAuthorization: Basic {$auth}\r\n\r\nData";
171 $this->assertInstanceOf(
'Guzzle\\Http\\Message\\EntityEnclosingRequest', $request);
172 $this->assertEquals(
'PUT', $request->getMethod());
173 $this->assertEquals(
'http', $request->getScheme());
174 $this->assertEquals(
'http://www.google.com:8080/path?q=1&v=2', $request->getUrl());
175 $this->assertEquals(
'www.google.com', $request->getHost());
176 $this->assertEquals(
'www.google.com:8080', $request->getHeader(
'Host'));
177 $this->assertEquals(
'/path', $request->getPath());
178 $this->assertEquals(
'/path?q=1&v=2', $request->getResource());
179 $this->assertInstanceOf(
'Guzzle\\Http\\EntityBody', $request->getBody());
180 $this->assertEquals(
'Data', (
string) $request->getBody());
181 $this->assertEquals(
"Basic {$auth}", (
string) $request->getHeader(
'Authorization'));
182 $this->assertEquals(
'8080', $request->getPort());
188 $message =
"PUT /path?q=1&v=2 HTTP/1.1\r\nHost: www.google.com\r\nContent-Length: 4\r\nAuthorization: Basic {$auth}\r\n\r\nData";
190 $this->assertInstanceOf(
'Guzzle\\Http\\Message\\EntityEnclosingRequest', $request);
191 $this->assertEquals(
'PUT', $request->getMethod());
192 $this->assertEquals(
'http', $request->getScheme());
193 $this->assertEquals(
'http://www.google.com/path?q=1&v=2', $request->getUrl());
194 $this->assertEquals(
'www.google.com', $request->getHost());
195 $this->assertEquals(
'/path', $request->getPath());
196 $this->assertEquals(
'/path?q=1&v=2', $request->getResource());
197 $this->assertInstanceOf(
'Guzzle\\Http\\EntityBody', $request->getBody());
198 $this->assertEquals(
'Data', (
string) $request->getBody());
199 $this->assertEquals(
"Basic {$auth}", (
string) $request->getHeader(
'Authorization'));
200 $this->assertEquals(80, $request->getPort());
207 $this->assertEquals(
'TRACE', $request->getMethod());
213 'Transfer-Encoding' =>
'chunked'
215 $this->assertEquals(
'chunked', $request->getHeader(
'Transfer-Encoding'));
216 $this->assertFalse($request->hasHeader(
'Content-Length'));
223 $message =
"POST / http/1.1\r\n"
224 .
"DATE:Mon, 09 Sep 2011 23:36:00 GMT\r\n"
225 .
"host:host.foo.com\r\n"
231 $parts = $parser->parseRequest($message);
232 $this->assertEquals(array (
233 'DATE' =>
'Mon, 09 Sep 2011 23:36:00 GMT',
234 'host' =>
'host.foo.com',
235 'ZOO' => array(
'abc',
'123',
'HI'),
237 ), $parts[
'headers']);
241 $this->assertEquals(array(
242 'abc',
'123',
'HI',
'456'
243 ), $request->getHeader(
'zoo')->toArray());
248 $message =
"POST / http/1.1\r\n"
249 .
"Content-Type:application/x-www-form-urlencoded; charset=utf8\r\n"
250 .
"Date:Mon, 09 Sep 2011 23:36:00 GMT\r\n"
251 .
"Host:host.foo.com\r\n\r\n"
255 $this->assertEquals(
'application/x-www-form-urlencoded; charset=utf8', (
string) $request->getHeader(
'Content-Type'));
256 $this->assertEquals(
'foo=bar', (
string) $request->getBody());
258 $message =
"POST / http/1.1\n"
259 .
"Content-Type:application/x-www-form-urlencoded; charset=utf8\n"
260 .
"Date:Mon, 09 Sep 2011 23:36:00 GMT\n"
261 .
"Host:host.foo.com\n\n"
264 $this->assertEquals(
'foo=bar', (
string) $request->getBody());
266 $message =
"PUT / HTTP/1.1\r\nContent-Length: 0\r\n\r\n";
268 $this->assertTrue($request->hasHeader(
'Content-Length'));
269 $this->assertEquals(0, (
string) $request->getHeader(
'Content-Length'));
274 $message =
"POST /foo\r\n\r\nBODY";
276 $this->assertSame(
'POST', $request->getMethod());
277 $this->assertSame(
'/foo', $request->getPath());
278 $this->assertSame(
'BODY', (
string) $request->getBody());
284 'Transfer-Encoding' =>
'chunked'
286 $this->assertFalse($request->hasHeader(
'Content-Length'));
287 $this->assertEquals(
'chunked', $request->getHeader(
'Transfer-Encoding'));
290 'transfer-encoding' =>
'chunked'
295 $this->assertFalse($request->hasHeader(
'Content-Length'));
296 $this->assertEquals(
'chunked', $request->getHeader(
'Transfer-Encoding'));
302 $request = $f->create(
'GET',
'http://www.test.com', array(
'X-Foo' =>
'Bar'));
303 $request->getParams()->replace(array(
'test' =>
'123'));
304 $request->getCurlOptions()->set(
'foo',
'bar');
305 $cloned = $f->cloneRequestWithMethod($request,
'PUT');
306 $this->assertEquals(
'PUT', $cloned->getMethod());
307 $this->assertEquals(
'Bar', (
string) $cloned->getHeader(
'X-Foo'));
308 $this->assertEquals(
'http://www.test.com', $cloned->getUrl());
310 $this->assertEquals(1, count($cloned->getParams()->getAll()));
311 $this->assertEquals(
'123', $cloned->getParams()->get(
'test'));
313 $this->assertEquals(
'bar', $cloned->getCurlOptions()->get(
'foo'));
315 $this->assertNotSame($request->getEventDispatcher(), $cloned->getEventDispatcher());
322 $request = $client->put(
'http://www.test.com', array(
'Content-Length' => 4),
'test');
323 $cloned = $f->cloneRequestWithMethod($request,
'GET');
324 $this->assertEquals(
'GET', $cloned->getMethod());
325 $this->assertNull($cloned->getHeader(
'Content-Length'));
326 $this->assertEquals(
'http://www.test.com', $cloned->getUrl());
327 $this->assertSame($request->getClient(), $cloned->getClient());
334 $request = $client->put(
'http://www.test.com', array(
'Content-Length' => 4),
'test');
335 $cloned = $f->cloneRequestWithMethod($request,
'POST');
336 $this->assertEquals(
'POST', $cloned->getMethod());
337 $this->assertEquals(
'test', (
string) $cloned->getBody());
343 "HTTP/1.1 307\r\nLocation: " . $this->
getServer()->getUrl() .
"\r\nContent-Length: 0\r\n\r\n"
346 $response = $client->get(
'/', array(), array(
'allow_redirects' =>
false))->send();
347 $this->assertEquals(307, $response->getStatusCode());
353 $request = $client->get(
'/', array(), array(
'cookies' => array(
'Foo' =>
'Bar')));
354 $this->assertEquals(
'Bar', $request->getCookie(
'Foo'));
360 'query' => array(
'Foo' =>
'Bar')
362 $this->assertEquals(
'Bar', $request->getQuery()->get(
'Foo'));
367 $request =
new Request(
'GET',
'http://www.foo.com?test=abc');
369 'query' => array(
'test' =>
'123',
'other' =>
't123')
371 $this->assertEquals(
'abc', $request->getQuery()->get(
'test'));
372 $this->assertEquals(
't123', $request->getQuery()->get(
'other'));
378 'auth' => array(
'michael',
'test')
380 $this->assertEquals(
'michael', $request->getUsername());
381 $this->assertEquals(
'test', $request->getPassword());
387 'auth' => array(
'michael',
'test',
'digest')
389 $this->assertEquals(CURLAUTH_DIGEST, $request->getCurlOptions()->get(CURLOPT_HTTPAUTH));
390 $this->assertEquals(
'michael', $request->getUsername());
391 $this->assertEquals(
'test', $request->getPassword());
399 $request = $client->get($this->
getServer()->getUrl(), array(), array(
401 'request.before_send' =>
function () use (&$foo) { $foo =
true; }
405 $this->assertTrue($foo);
413 $request = $client->get($this->
getServer()->getUrl(), array(), array(
415 'request.before_send' => array(
function () use (&$foo) { $foo =
true; }, 100)
419 $this->assertTrue($foo);
429 $client->addSubscriber($mock);
430 $request = $client->get(
'/', array(), array(
431 'plugins' => array($mock)
439 $request = $client->get(
'/', array(), array(
441 'exceptions' =>
false
443 $this->assertEquals(500, $request->send()->getStatusCode());
449 $client->getEventDispatcher()->addListener(
'request.error',
function () {});
450 $request = $client->get(
'/', array(), array(
452 'exceptions' =>
false
454 $this->assertEquals(500, $request->send()->getStatusCode());
461 $request = $client->get(
'/', array(), array(
466 $this->assertEquals(
'testing', (
string) $r);
472 $request = $client->get(
'/', array(), array(
'proxy' =>
'192.168.16.121'));
473 $this->assertEquals(
'192.168.16.121', $request->getCurlOptions()->get(CURLOPT_PROXY));
479 $request = $client->get(
'/', array(), array(
'headers' => array(
'Foo' =>
'Bar')));
480 $this->assertEquals(
'Bar', (
string) $request->getHeader(
'Foo'));
485 $request =
new Request(
'GET',
'http://www.foo.com', array(
'Foo' =>
'Bar'));
487 'headers' => array(
'Foo' =>
'Baz',
'Bam' =>
't123')
489 $this->assertEquals(
'Bar', (
string) $request->getHeader(
'Foo'));
490 $this->assertEquals(
't123', (
string) $request->getHeader(
'Bam'));
496 $request = $client->put(
'/', array(),
null, array(
'body' =>
'test'));
497 $this->assertEquals(
'test', (
string) $request->getBody());
506 $client->get(
'/', array(), array(
'body' =>
'test'));
512 $request = $client->get(
'/', array(), array(
'timeout' => 1.5));
513 $this->assertEquals(1500, $request->getCurlOptions()->get(CURLOPT_TIMEOUT_MS));
519 $request = $client->get(
'/', array(), array(
'connect_timeout' => 1.5));
520 $this->assertEquals(1500, $request->getCurlOptions()->get(CURLOPT_CONNECTTIMEOUT_MS));
526 $request = $client->get(
'/', array(), array(
'debug' =>
true));
527 $this->assertTrue($request->getCurlOptions()->get(CURLOPT_VERBOSE));
533 $request = $client->get(
'/', array(), array(
'verify' =>
false));
534 $this->assertNull($request->getCurlOptions()->get(CURLOPT_CAINFO));
535 $this->assertSame(0, $request->getCurlOptions()->get(CURLOPT_SSL_VERIFYHOST));
536 $this->assertFalse($request->getCurlOptions()->get(CURLOPT_SSL_VERIFYPEER));
542 $request = $client->get(
'/', array(), array(
'verify' =>
true));
543 $this->assertNotNull($request->getCurlOptions()->get(CURLOPT_CAINFO));
544 $this->assertSame(2, $request->getCurlOptions()->get(CURLOPT_SSL_VERIFYHOST));
545 $this->assertTrue($request->getCurlOptions()->get(CURLOPT_SSL_VERIFYPEER));
551 $request = $client->get(
'/', array(), array(
'verify' =>
'/foo.pem'));
552 $this->assertEquals(
'/foo.pem', $request->getCurlOptions()->get(CURLOPT_CAINFO));
553 $this->assertSame(2, $request->getCurlOptions()->get(CURLOPT_SSL_VERIFYHOST));
554 $this->assertTrue($request->getCurlOptions()->get(CURLOPT_SSL_VERIFYPEER));
559 return array_map(
function ($option) {
return array($option); }, array(
560 'headers',
'query',
'cookies',
'auth',
'events',
'plugins',
'params'
571 $client->get(
'/', array(), array($option =>
'foo'));
577 $request = $client->put(
'/', array(),
null, array(
'params' => array(
'foo' =>
'test')));
578 $this->assertEquals(
'test', $request->getParams()->get(
'foo'));
584 $request = $client->get(
'/', array(), array(
'ssl_key' =>
'/foo.pem'));
585 $this->assertEquals(
'/foo.pem', $request->getCurlOptions()->get(CURLOPT_SSLKEY));
591 $request = $client->get(
'/', array(), array(
'ssl_key' => array(
'/foo.pem',
'bar')));
592 $this->assertEquals(
'/foo.pem', $request->getCurlOptions()->get(CURLOPT_SSLKEY));
593 $this->assertEquals(
'bar', $request->getCurlOptions()->get(CURLOPT_SSLKEYPASSWD));
599 $request = $client->get(
'/', array(), array(
'cert' =>
'/foo.pem'));
600 $this->assertEquals(
'/foo.pem', $request->getCurlOptions()->get(CURLOPT_SSLCERT));
606 $request = $client->get(
'/', array(), array(
'cert' => array(
'/foo.pem',
'bar')));
607 $this->assertEquals(
'/foo.pem', $request->getCurlOptions()->get(CURLOPT_SSLCERT));
608 $this->assertEquals(
'bar', $request->getCurlOptions()->get(CURLOPT_SSLCERTPASSWD));
614 $this->assertSame(
'0', (
string) $request->getBody());