21 "HTTP/1.1 301 Moved Permanently\r\nLocation: /redirect1\r\nContent-Length: 0\r\n\r\n",
22 "HTTP/1.1 301 Moved Permanently\r\nLocation: /redirect2\r\nContent-Length: 0\r\n\r\n",
23 "HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n",
29 $client->addSubscriber($history);
31 $request = $client->get(
'/foo');
32 $response = $request->send();
33 $this->assertEquals(200, $response->getStatusCode());
34 $this->assertContains(
'/redirect2', $response->getEffectiveUrl());
37 $requests = $this->
getServer()->getReceivedRequests(
true);
38 $this->assertEquals(
'/foo', $requests[0]->getResource());
39 $this->assertEquals(
'GET', $requests[0]->getMethod());
40 $this->assertEquals(
'/redirect1', $requests[1]->getResource());
41 $this->assertEquals(
'GET', $requests[1]->getMethod());
42 $this->assertEquals(
'/redirect2', $requests[2]->getResource());
43 $this->assertEquals(
'GET', $requests[2]->getMethod());
47 $this->assertCount(3, $history);
48 $requestHistory = $history->getAll();
50 $this->assertEquals(301, $requestHistory[0][
'response']->getStatusCode());
51 $this->assertEquals(
'/redirect1', (
string) $requestHistory[0][
'response']->getHeader(
'Location'));
52 $this->assertEquals(301, $requestHistory[1][
'response']->getStatusCode());
53 $this->assertEquals(
'/redirect2', (
string) $requestHistory[1][
'response']->getHeader(
'Location'));
54 $this->assertEquals(200, $requestHistory[2][
'response']->getStatusCode());
62 "HTTP/1.1 301 Moved Permanently\r\nLocation: /redirect1\r\nContent-Length: 0\r\n\r\n",
63 "HTTP/1.1 301 Moved Permanently\r\nLocation: /redirect2\r\nContent-Length: 0\r\n\r\n",
64 "HTTP/1.1 301 Moved Permanently\r\nLocation: /redirect3\r\nContent-Length: 0\r\n\r\n",
65 "HTTP/1.1 301 Moved Permanently\r\nLocation: /redirect4\r\nContent-Length: 0\r\n\r\n",
66 "HTTP/1.1 301 Moved Permanently\r\nLocation: /redirect5\r\nContent-Length: 0\r\n\r\n",
67 "HTTP/1.1 301 Moved Permanently\r\nLocation: /redirect6\r\nContent-Length: 0\r\n\r\n"
72 $client->get(
'/foo')->send();
73 $this->fail(
'Did not throw expected exception');
75 $this->assertContains(
76 "5 redirects were issued for this request:\nGET /foo HTTP/1.1\r\n",
86 "HTTP/1.1 301 Moved Permanently\r\nLocation: /redirect\r\nContent-Length: 0\r\n\r\n",
87 "HTTP/1.1 301 Moved Permanently\r\nLocation: /redirect\r\nContent-Length: 0\r\n\r\n",
88 "HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n",
92 $client->post(
'/foo', array(
'X-Baz' =>
'bar'),
'testing')->send();
94 $requests = $this->
getServer()->getReceivedRequests(
true);
95 $this->assertEquals(
'POST', $requests[0]->getMethod());
96 $this->assertEquals(
'GET', $requests[1]->getMethod());
97 $this->assertEquals(
'bar', (
string) $requests[1]->getHeader(
'X-Baz'));
98 $this->assertEquals(
'GET', $requests[2]->getMethod());
105 "HTTP/1.1 301 Moved Permanently\r\nLocation: /redirect\r\nContent-Length: 0\r\n\r\n",
106 "HTTP/1.1 301 Moved Permanently\r\nLocation: /redirect\r\nContent-Length: 0\r\n\r\n",
107 "HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n",
111 $request = $client->post(
'/foo', array(
'X-Baz' =>
'bar'),
'testing');
115 $requests = $this->
getServer()->getReceivedRequests(
true);
116 $this->assertEquals(
'POST', $requests[0]->getMethod());
117 $this->assertEquals(
'POST', $requests[1]->getMethod());
118 $this->assertEquals(
'bar', (
string) $requests[1]->getHeader(
'X-Baz'));
119 $this->assertEquals(
'POST', $requests[2]->getMethod());
126 "HTTP/1.1 303 Moved Permanently\r\nLocation: /redirect\r\nContent-Length: 0\r\n\r\n",
127 "HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n",
131 $request = $client->post(
'/foo');
134 $requests = $this->
getServer()->getReceivedRequests(
true);
135 $this->assertEquals(
'POST', $requests[0]->getMethod());
136 $this->assertEquals(
'GET', $requests[1]->getMethod());
143 "HTTP/1.1 303 Moved Permanently\r\nLocation: /redirect\r\nContent-Length: 0\r\n\r\n",
144 "HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n",
148 $request = $client->post(
'/foo');
152 $requests = $this->
getServer()->getReceivedRequests(
true);
153 $this->assertEquals(
'POST', $requests[0]->getMethod());
154 $this->assertEquals(
'GET', $requests[1]->getMethod());
161 "HTTP/1.1 301 Moved Permanently\r\nLocation: /redirect\r\nContent-Length: 0\r\n\r\n",
162 "HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n",
166 $request = $client->put();
167 $request->configureRedirects(
true);
170 $request->setBody($body);
172 $requests = $this->
getServer()->getReceivedRequests(
true);
173 $this->assertEquals(
'foo', (
string) $requests[0]->getBody());
183 "HTTP/1.1 200 OK\r\nContent-Length: 2\r\n\r\nhi",
184 "HTTP/1.1 301 Moved Permanently\r\nLocation: /redirect\r\nContent-Length: 0\r\n\r\n"
188 $request = $client->put();
189 $request->configureRedirects(
true);
192 $request->setBody($body)->send();
198 $this->
getServer()->enqueue(array(
"HTTP/1.1 301 Foo\r\nLocation: /foo\r\nContent-Length: 0\r\n\r\n"));
200 $request = $client->put();
201 $request->configureRedirects(
false, 0);
202 $this->assertEquals(301, $request->send()->getStatusCode());
209 "HTTP/1.1 301 Moved Permanently\r\nLocation: redirect?foo=bar\r\nContent-Length: 0\r\n\r\n",
210 "HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n",
213 $request = $client->get(
'?foo=bar');
215 $requests = $this->
getServer()->getReceivedRequests(
true);
216 $this->assertEquals($this->
getServer()->getUrl() .
'?foo=bar', $requests[0]->getUrl());
217 $this->assertEquals($this->
getServer()->getUrl() .
'redirect?foo=bar', $requests[1]->getUrl());
219 $this->assertEquals($this->
getServer()->getUrl() .
'?foo=bar', $request->getUrl());
227 "HTTP/1.1 301 Moved Permanently\r\nLocation: redirect\r\nContent-Length: 0\r\n\r\n",
228 "HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n"
231 $request = $client->get(
'/foo');
233 $requests = $this->
getServer()->getReceivedRequests(
true);
234 $this->assertEquals(
'/redirect', $requests[1]->getResource());
242 "HTTP/1.1 301 Moved Permanently\r\nLocation: /redirect1\r\nContent-Length: 0\r\n\r\n",
243 "HTTP/1.1 301 Moved Permanently\r\nLocation: /redirect2\r\nContent-Length: 0\r\n\r\n",
244 "HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n",
245 "HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n"
251 $client->addSubscriber($history);
253 $request = $client->get(
'/foo');
254 $response = $request->send();
255 $this->assertEquals(3, count($history));
256 $this->assertTrue($request->getParams()->hasKey(
'redirect.count'));
257 $this->assertContains(
'/redirect2', $response->getEffectiveUrl());
260 $this->assertFalse($request->getParams()->hasKey(
'redirect.count'));
268 "HTTP/1.1 301 Moved Permanently\r\nLocation: /redirect 1\r\nContent-Length: 0\r\n\r\n",
269 "HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n"
272 $request = $client->get(
'/foo');
274 $reqs = $this->
getServer()->getReceivedRequests(
true);
275 $this->assertEquals(
'/redirect%201', $reqs[1]->getResource());