/** * @dataProvider cacheRevalidationDataProvider */ public function testRevalidatesResponsesAgainstOriginServer($can, $request, $response, $validate = null, $result = null) { // Send some responses to the test server for cache validation $server = $this->getServer(); $server->flush(); if ($validate) { $server->enqueue($validate); } $request = RequestFactory::getInstance()->fromMessage("GET / HTTP/1.1\r\nHost: 127.0.0.1:" . $server->getPort() . "\r\n" . $request); $response = Response::fromMessage($response); $request->setClient(new Client()); $plugin = new CachePlugin(new DoctrineCacheAdapter(new ArrayCache())); $this->assertEquals($can, $plugin->canResponseSatisfyRequest($request, $response), '-> ' . $request . "\n" . $response); if ($result) { $result = Response::fromMessage($result); $result->removeHeader('Date'); $request->getResponse()->removeHeader('Date'); $request->getResponse()->removeHeader('Connection'); // Get rid of dates $this->assertEquals((string) $result, (string) $request->getResponse()); } if ($validate) { $this->assertEquals(1, count($server->getReceivedRequests())); } }
/** * @dataProvider satisfyProvider */ public function testChecksIfResponseCanSatisfyRequest($request, $response, $can, $revalidates) { $didRevalidate = false; $revalidate = $this->getMockBuilder('Guzzle\\Plugin\\Cache\\RevalidationInterface')->setMethods(array('revalidate'))->getMockForAbstractClass(); $revalidate->expects($this->any())->method('revalidate')->will($this->returnCallback(function () use(&$didRevalidate) { $didRevalidate = true; return true; })); $plugin = new CachePlugin(array('storage' => $this->getMockBuilder('Guzzle\\Plugin\\Cache\\CacheStorageInterface')->getMockForAbstractClass(), 'revalidation' => $revalidate)); $this->assertEquals($can, $plugin->canResponseSatisfyRequest($request, $response)); $this->assertEquals($didRevalidate, $revalidates); }