14 use Doctrine\Common\Cache\ArrayCache;
41 "Pragma: no-cache\r\n\r\n",
42 "HTTP/1.1 200 OK\r\nDate: " . $this->
getHttpDate(
'-100 hours') .
"\r\nContent-Length: 4\r\n\r\nData",
43 "HTTP/1.1 304 NOT MODIFIED\r\nCache-Control: max-age=2000000\r\nContent-Length: 0\r\n\r\n",
49 "HTTP/1.1 200 OK\r\nCache-Control: must-revalidate, no-cache\r\nDate: " . $this->
getHttpDate(
'-10 hours') .
"\r\nContent-Length: 4\r\n\r\nData",
50 "HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\nDatas",
51 "HTTP/1.1 200 OK\r\nContent-Length: 5\r\nDate: " . $this->
getHttpDate(
'now') .
"\r\n\r\nDatas"
57 "HTTP/1.1 200 OK\r\nCache-Control: no-cache\r\nDate: " . $this->
getHttpDate(
'-3 hours') .
"\r\n\r\nData",
58 "HTTP/1.1 500 INTERNAL SERVER ERROR\r\nContent-Length: 0\r\n\r\n"
64 "HTTP/1.1 200 OK\r\nCache-Control: no-cache\r\nETag: \"123\"\r\nDate: " . $this->
getHttpDate(
'-10 hours') .
"\r\n\r\nData",
65 "HTTP/1.1 304 NOT MODIFIED\r\nETag: \"123456\"\r\n\r\n",
85 $request->setClient(
new Client());
90 $plugin->canResponseSatisfyRequest($request, $response),
91 '-> ' . $request .
"\n" . $response
96 $result->removeHeader(
'Date');
97 $request->getResponse()->removeHeader(
'Date');
98 $request->getResponse()->removeHeader(
'Connection');
100 $this->assertEquals((
string) $result, (
string) $request->getResponse());
104 $this->assertEquals(1, count(
$server->getReceivedRequests()));
110 $request =
new Request(
'GET',
'http://foo.com');
111 $request->setClient(
new Client());
112 $badResponse =
new Response(404, array(),
'Oh no!');
113 $badRequest = clone $request;
114 $badRequest->setResponse($badResponse,
true);
115 $response =
new Response(200, array(),
'foo');
119 $s->cache($request, $response);
120 $this->assertNotNull($s->fetch($request));
122 $rev = $this->getMockBuilder(
'Guzzle\Plugin\Cache\DefaultRevalidation')
123 ->setConstructorArgs(array($s))
124 ->setMethods(array(
'createRevalidationRequest'))
127 $rev->expects($this->once())
128 ->method(
'createRevalidationRequest')
129 ->will($this->returnValue($badRequest));
132 $rev->revalidate($request, $response);
133 $this->fail(
'Should have thrown an exception');
135 $this->assertSame($badResponse, $e->
getResponse());
136 $this->assertNull($s->fetch($request));
144 "HTTP/1.1 200 OK\r\n" .
145 "Date: Mon, 12 Nov 2012 03:06:37 GMT\r\n" .
146 "Cache-Control: private, s-maxage=0, max-age=0, must-revalidate\r\n" .
147 "Last-Modified: Mon, 12 Nov 2012 02:53:38 GMT\r\n" .
148 "Content-Length: 2\r\n\r\nhi",
149 "HTTP/1.0 304 Not Modified\r\n" .
150 "Date: Mon, 12 Nov 2012 03:06:38 GMT\r\n" .
151 "Content-Type: text/html; charset=UTF-8\r\n" .
152 "Last-Modified: Mon, 12 Nov 2012 02:53:38 GMT\r\n" .
154 "HTTP/1.0 304 Not Modified\r\n" .
155 "Date: Mon, 12 Nov 2012 03:06:38 GMT\r\n" .
156 "Content-Type: text/html; charset=UTF-8\r\n" .
157 "Last-Modified: Mon, 12 Nov 2012 02:53:38 GMT\r\n" .
162 $this->assertEquals(200, $client->get()->send()->getStatusCode());
163 $this->assertEquals(200, $client->get()->send()->getStatusCode());
164 $this->assertEquals(200, $client->get()->send()->getStatusCode());
165 $this->assertEquals(3, count($this->
getServer()->getReceivedRequests()));
171 $lm = gmdate(
'c', time() - 60);
175 'Cache-Control' =>
'max-age=100, must-revalidate, stale-if-error=9999',
176 'Last-Modified' => $lm,
177 'Content-Length' => 2
183 $client->addSubscriber($mock);
184 $client->get()->send();
185 $response = $client->get()->send();
186 $this->assertEquals(200, $response->getStatusCode());
187 $this->assertEquals(
'hi', $response->getBody(
true));
188 $this->assertEquals(3, count($mock->getReceivedRequests()));
189 $this->assertEquals(0, count($mock->getQueue()));
194 $lm = gmdate(
'c', time() - 60);
198 'Cache-Control' =>
'must-revalidate, max-age=0, stale-if-error=1200',
199 'Last-Modified' => $lm,
200 'Content-Length' => 2
206 $client =
new Client(
'http://www.example.com');
207 $client->addSubscriber($cache);
208 $client->addSubscriber($mock);
209 $this->assertEquals(200, $client->get()->send()->getStatusCode());
210 $response = $client->get()->send();
211 $this->assertEquals(200, $response->getStatusCode());
212 $this->assertCount(0, $mock);
213 $this->assertEquals(
'HIT from GuzzleCache', (
string) $response->getHeader(
'X-Cache-Lookup'));
214 $this->assertEquals(
'HIT_ERROR from GuzzleCache', (
string) $response->getHeader(
'X-Cache'));
224 "HTTP/1.1 200 OK\r\n" .
225 "Date: Mon, 12 Nov 2012 03:06:37 GMT\r\n" .
226 "Cache-Control: private, s-maxage=0, max-age=0, must-revalidate\r\n" .
227 "Last-Modified: Mon, 12 Nov 2012 02:53:38 GMT\r\n" .
228 "Content-Length: 2\r\n\r\nhi",
229 "HTTP/1.0 304 Not Modified\r\n" .
230 "Date: Mon, 12 Nov 2012 03:06:38 GMT\r\n" .
231 "Content-Type: text/html; charset=UTF-8\r\n" .
232 "Last-Modified: Mon, 12 Nov 2012 02:53:38 GMT\r\n" .
234 "HTTP/1.0 304 Not Modified\r\n" .
235 "Date: Mon, 12 Nov 2012 03:06:38 GMT\r\n" .
236 "Content-Type: text/html; charset=UTF-8\r\n" .
237 "Last-Modified: Mon, 12 Nov 2012 02:53:38 GMT\r\n" .
242 $client->getEventDispatcher()->addListener(
'command.after_send',
function(){});
243 $this->assertEquals(200, $client->get()->send()->getStatusCode());
244 $this->assertEquals(200, $client->get()->send()->getStatusCode());
245 $this->assertEquals(200, $client->get()->send()->getStatusCode());