Файл: vkolhoze.com/vendor/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Cache/CallbackCanCacheStrategyTest.php
Строк: 106
<?php
namespace GuzzleTestsPluginCache;
use DoctrineCommonCacheArrayCache;
use GuzzleCacheDoctrineCacheAdapter;
use GuzzleCommonEvent;
use GuzzleHttpMessageRequest;
use GuzzleHttpMessageResponse;
use GuzzlePluginCacheCachePlugin;
use GuzzlePluginCacheCallbackCanCacheStrategy;
/**
* @covers GuzzlePluginCacheCallbackCanCacheStrategy
*/
class CallbackCanCacheStrategyTest extends GuzzleTestsGuzzleTestCase
{
/**
* @expectedException GuzzleCommonExceptionInvalidArgumentException
*/
public function testConstructorEnsuresCallbackIsCallable()
{
$p = new CallbackCanCacheStrategy(new stdClass());
}
public function testUsesCallback()
{
$c = new CallbackCanCacheStrategy(function ($request) { return true; });
$this->assertTrue($c->canCacheRequest(new Request('DELETE', 'http://www.foo.com')));
}
/**
* The following is a bit of an integration test to ensure that the CachePlugin honors a
* custom can cache strategy.
*/
public function testIntegrationWithCachePlugin()
{
$c = new CallbackCanCacheStrategy(
function ($request) { return true; },
function ($response) { return true; }
);
// Make a request and response that have no business being cached
$request = new Request('DELETE', 'http://www.foo.com');
$response = Response::fromMessage(
"HTTP/1.1 200 OKrn"
. "Expires: Mon, 26 Jul 1997 05:00:00 GMTrn"
. "Last-Modified: Wed, 09 Jan 2013 08:48:53 GMTrn"
. "Content-Length: 2rn"
. "Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0rnrn"
. "hi"
);
$this->assertTrue($c->canCacheRequest($request));
$this->assertTrue($c->canCacheResponse($response));
$s = $this->getMockBuilder('GuzzlePluginCacheDefaultCacheStorage')
->setConstructorArgs(array(new DoctrineCacheAdapter(new ArrayCache())))
->setMethods(array('fetch'))
->getMockForAbstractClass();
$s->expects($this->once())
->method('fetch')
->will($this->returnValue($response));
$plugin = new CachePlugin(array('can_cache' => $c, 'storage' => $s));
$plugin->onRequestBeforeSend(new Event(array('request' => $request)));
$this->assertEquals(200, $request->getResponse()->getStatusCode());
$this->assertEquals('hi', $request->getResponse()->getBody(true));
}
}