[HttpKernel] Fixed bug with purging of HTTPS URLs

This commit is contained in:
Martin Auswöger 2017-03-20 20:55:39 +01:00 committed by Fabien Potencier
parent 2ba564d984
commit f50915066f
2 changed files with 33 additions and 3 deletions

View File

@ -325,10 +325,13 @@ class Store implements StoreInterface
*/
public function purge($url)
{
$http = preg_replace('#^https#', 'http', $url);
$https = preg_replace('#^http#', 'https', $url);
$http = preg_replace('#^https:#', 'http:', $url);
$https = preg_replace('#^http:#', 'https:', $url);
return $this->doPurge($http) || $this->doPurge($https);
$purgedHttp = $this->doPurge($http);
$purgedHttps = $this->doPurge($https);
return $purgedHttp || $purgedHttps;
}
/**

View File

@ -236,6 +236,33 @@ class StoreTest extends TestCase
$this->assertFalse($this->store->isLocked($req));
}
public function testPurgeHttps()
{
$request = Request::create('https://example.com/foo');
$this->store->write($request, new Response('foo'));
$this->assertNotEmpty($this->getStoreMetadata($request));
$this->assertTrue($this->store->purge('https://example.com/foo'));
$this->assertEmpty($this->getStoreMetadata($request));
}
public function testPurgeHttpAndHttps()
{
$requestHttp = Request::create('https://example.com/foo');
$this->store->write($requestHttp, new Response('foo'));
$requestHttps = Request::create('http://example.com/foo');
$this->store->write($requestHttps, new Response('foo'));
$this->assertNotEmpty($this->getStoreMetadata($requestHttp));
$this->assertNotEmpty($this->getStoreMetadata($requestHttps));
$this->assertTrue($this->store->purge('http://example.com/foo'));
$this->assertEmpty($this->getStoreMetadata($requestHttp));
$this->assertEmpty($this->getStoreMetadata($requestHttps));
}
protected function storeSimpleEntry($path = null, $headers = array())
{
if (null === $path) {