24 $this->client =
new Client();
37 $request->setBody(
'Test');
38 $this->assertEquals(
'123', $request->getHeader(
'X-Test'));
39 $this->assertNull($request->getHeader(
'Expect'));
45 $request->setBody(
'{"a":"b"}');
46 $this->assertEquals(
'foooooo', $request->getHeader(
'Content-Type'));
53 $this->assertEquals(
"PUT / HTTP/1.1\r\n"
54 .
"Host: www.guzzle-project.com\r\n"
55 .
"Content-Length: 4\r\n\r\n"
56 .
"data", (
string) $request);
64 $this->assertEquals(
"POST / HTTP/1.1\r\n"
65 .
"Host: www.guzzle-project.com\r\n"
66 .
"Content-Type: application/x-www-form-urlencoded; charset=utf-8\r\n\r\n"
67 .
"foo=bar", (
string) $request);
70 'foo' =>
'@' . __FILE__
72 $this->assertEquals(
"POST / HTTP/1.1\r\n"
73 .
"Host: www.guzzle-project.com\r\n"
74 .
"Content-Type: multipart/form-data\r\n"
75 .
"Expect: 100-Continue\r\n\r\n", (
string) $request);
83 $this->assertEquals(
"POST / HTTP/1.1\r\n"
84 .
"Host: www.guzzle-project.com\r\n"
85 .
"Content-Type: application/x-www-form-urlencoded; charset=utf-8\r\n\r\n"
86 .
"data=123", (
string) $request);
94 ))->addPostFields(array(
97 $message = (string) $request;
98 $this->assertEquals(
'multipart/form-data', $request->getHeader(
'Content-Type'));
99 $this->assertEquals(
'100-Continue', $request->getHeader(
'Expect'));
105 $request->addPostFields(array(
108 $this->assertContains(
"\r\n\r\ntest=123", (
string) $request);
115 $this->assertEquals(4, (
string) $request->getHeader(
'Content-Length'));
116 $this->assertFalse($request->hasHeader(
'Transfer-Encoding'));
122 'Transfer-Encoding' =>
'chunked'
124 $this->assertNull($request->getHeader(
'Content-Length'));
125 $this->assertTrue($request->hasHeader(
'Transfer-Encoding'));
131 $body = $request->getBody();
132 $this->assertInstanceOf(
'Guzzle\\Http\\EntityBody', $body);
133 $this->assertSame($body, $request->getBody());
136 $request->setBody($newBody);
137 $this->assertEquals(
'foobar', (
string) $request->getBody());
138 $this->assertSame($newBody, $request->getBody());
144 $this->assertInstanceOf(
'Guzzle\\Http\\QueryString', $request->getPostFields());
149 $request->addPostFields($fields);
150 $this->assertEquals($fields->getAll(), $request->getPostFields()->getAll());
151 $this->assertEquals(array(), $request->getPostFiles());
158 ->addPostFiles(array(__FILE__))
159 ->addPostFields(array(
163 $request->getCurlOptions()->set(
'debug',
true);
165 $this->assertEquals(array(
167 ), $request->getPostFields()->getAll());
169 $files = $request->getPostFiles();
170 $post = $files[
'file'][0];
171 $this->assertEquals(
'file', $post->getFieldName());
172 $this->assertContains(
'text/x-', $post->getContentType());
173 $this->assertEquals(__FILE__, $post->getFilename());
175 $this->
getServer()->enqueue(
"HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n");
178 $this->assertNotNull($request->getHeader(
'Content-Length'));
179 $this->assertContains(
'multipart/form-data; boundary=', (
string) $request->getHeader(
'Content-Type'),
'-> cURL must add the boundary');
188 ->addPostFiles(array(
189 'file' =>
'filenotfound.ini'
199 ->addPostFile(
'foo',
new \stdClass());
205 ->addPostFile(
'foo', __FILE__,
'text/plain');
207 $this->assertEquals(array(
208 new PostFile(
'foo', __FILE__,
'text/plain')
209 ), $request->getPostFile(
'foo'));
215 ->addPostFile(
'foo', __FILE__);
216 $file = $request->getPostFile(
'foo');
217 $this->assertContains(
'text/x-', $file[0]->getContentType());
222 $postFile =
new PostFile(
'foo', __FILE__,
'text/x-php');
224 ->addPostFiles(array(
'foo' => $postFile));
226 $this->assertEquals(array($postFile), $request->getPostFile(
'foo'));
232 $request->setPostField(
'a',
'b');
233 $this->assertContains(
"\r\n\r\na=b", (
string) $request);
234 $this->assertEquals(
'application/x-www-form-urlencoded; charset=utf-8', $request->getHeader(
'Content-Type'));
240 $request->setPostField(
'a',
'b');
241 $this->assertEquals(
'application/x-www-form-urlencoded; charset=utf-8', $request->getHeader(
'Content-Type'));
247 $request->addPostFiles(array(
'file' => __FILE__));
248 $this->assertEquals(
'multipart/form-data', $request->getHeader(
'Content-Type'));
255 "HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n",
256 "HTTP/1.1 201 Created\r\nContent-Length: 0\r\n\r\n",
262 ->setClient(
new Client());
264 $this->assertEquals(200, $request->getResponse()->getStatusCode());
267 $request->setBody(
'abcdefg',
'application/json',
false);
269 $this->assertEquals(201, $request->getResponse()->getStatusCode());
272 $requests = $this->
getServer()->getReceivedRequests(
true);
273 $this->assertEquals(2, count($requests));
274 $this->assertEquals(4, (
string) $requests[0]->getHeader(
'Content-Length'));
275 $this->assertEquals(7, (
string) $requests[1]->getHeader(
'Content-Length'));
281 $request->setPostField(
'test',
'value');
282 $request->removePostField(
'test');
283 $this->assertNull($request->getPostField(
'test'));
288 $this->
getServer()->enqueue(
"HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n");
290 $request->setBody(fopen($this->
getServer()->getUrl(),
'r'));
291 $this->assertEquals(
'chunked', $request->getHeader(
'Transfer-Encoding'));
292 $this->assertFalse($request->hasHeader(
'Content-Length'));
301 $this->
getServer()->enqueue(
"HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n");
302 $request->setProtocolVersion(
'1.0');
303 $request->setBody(fopen($this->
getServer()->getUrl(),
'r'));
309 $request->addPostFields(array(
310 'a' => array(
'b',
'c')
312 $this->assertEquals(array(
313 'a' => array(
'b',
'c')
314 ), $request->getPostFields()->getAll());
320 $request->addPostFields(array(
323 $this->assertEquals(array(
325 ), $request->getPostFields()->getAll());
334 $request->addPostFiles(array(
335 'a' =>
new \stdClass()
342 $request->addPostFields(array(
347 $this->assertEquals(array(
351 ), $request->getPostFields()->getAll());
357 $request->addPostFile(
'foo', __FILE__);
358 $request->addPostFile(
new PostFile(
'foo', __FILE__));
360 $this->assertArrayHasKey(
'foo', $request->getPostFiles());
361 $foo = $request->getPostFile(
'foo');
362 $this->assertEquals(2, count($foo));
363 $this->assertEquals(__FILE__, $foo[0]->getFilename());
364 $this->assertEquals(__FILE__, $foo[1]->getFilename());
366 $request->removePostFile(
'foo');
367 $this->assertEquals(array(), $request->getPostFiles());
373 $request->addPostFiles(array(
374 'foo' =>
'@' . __FILE__
376 $foo = $request->getPostFile(
'foo');
377 $this->assertEquals(__FILE__, $foo[0]->getFilename());
383 $request->setState($request::STATE_TRANSFER);
384 $this->assertEquals(
'0', (
string) $request->getHeader(
'Content-Length'));
390 $request->setHeader(
'Expect',
'100-Continue');
391 $request->setExpectHeaderCutoff(
false);
392 $this->assertNull($request->getHeader(
'Expect'));
394 $request->setHeader(
'Expect',
'100-Continue');
395 $request->setExpectHeaderCutoff(10);
396 $this->assertNull($request->getHeader(
'Expect'));
398 $request->setBody(
'foo');
399 $this->assertNull($request->getHeader(
'Expect'));
401 $request->setBody(
'foobazbarbamboo');
402 $this->assertNotNull($request->getHeader(
'Expect'));
408 $request->configureRedirects(
true);
415 $request->configureRedirects(
false,
false);
423 $this->assertEquals(
'text/x-php', (
string) $request->getHeader(
'Content-Type'));
429 $request->setBody(
'test');
430 $newRequest = clone $request;
431 $newRequest->setBody(
'foo');
432 $this->assertInternalType(
'string', (
string) $request->getBody());