Merge pull request #813 from romainneutron/fix-1593

[3.8] Fix #1593 : "download" query parameter is not working anymore on permalink URIs
This commit is contained in:
Romain Neutron
2013-11-28 05:06:16 -08:00
2 changed files with 18 additions and 1 deletions

View File

@@ -52,7 +52,9 @@ abstract class AbstractDelivery implements ControllerProviderInterface
}
$response = $app['phraseanet.file-serve']->deliverFile($pathOut, $file->get_file(), DeliverDataInterface::DISPOSITION_INLINE, $file->get_mime());
$disposition = $request->query->get('download') ? DeliverDataInterface::DISPOSITION_ATTACHMENT : DeliverDataInterface::DISPOSITION_INLINE;
$response = $app['phraseanet.file-serve']->deliverFile($pathOut, $file->get_file(), $disposition, $file->get_mime());
$response->setPrivate();
/* @var $response \Symfony\Component\HttpFoundation\Response */

View File

@@ -94,6 +94,20 @@ class ApplicationOverviewTest extends \PhraseanetWebTestCaseAuthenticatedAbstrac
$this->get_a_permaview(array("Content-Type" => "text/html; charset=UTF-8"));
}
public function testPermalinkAuthenticatedWithDownloadQuery()
{
$token = self::$DI['record_1']->get_preview()->get_permalink()->get_token();
$url = '/permalink/v1/' . self::$DI['record_1']->get_sbas_id() . '/' . self::$DI['record_1']->get_record_id() . '/preview/whateverIwannt.jpg?token=' . $token . '&download=1';
self::$DI['client']->request('GET', $url);
$response = self::$DI['client']->getResponse();
$this->assertRegExp('/^attachment;/', $response->headers->get('content-disposition'));
$this->assertEquals(rtrim(self::$DI['app']['phraseanet.configuration']['main']['servername'], '/') . "/permalink/v1/1/". self::$DI['record_1']->get_record_id()."/caption/?token=".$token, $response->headers->get("Link"));
$this->assertEquals(200, $response->getStatusCode());
}
public function testPermalinkNotAuthenticated()
{
$this->logout(self::$DI['app']);
@@ -244,6 +258,7 @@ class ApplicationOverviewTest extends \PhraseanetWebTestCaseAuthenticatedAbstrac
$crawler = self::$DI['client']->request('GET', $url);
$response = self::$DI['client']->getResponse();
$this->assertRegExp('/^inline;/', $response->headers->get('content-disposition'));
foreach ($headers as $name => $value) {
$this->assertEquals($value, $response->headers->get($name));
}