Files
Phraseanet/tests/Alchemy/Phrasea/Controller/Admin/AdminCollectionTest.php
2012-10-04 15:44:50 +02:00

893 lines
31 KiB
PHP

<?php
require_once __DIR__ . '/../../../../PhraseanetWebTestCaseAuthenticatedAbstract.class.inc';
use Alchemy\Phrasea\Application;
class AdminCollectionTest extends \PhraseanetWebTestCaseAuthenticatedAbstract
{
protected $client;
public static $createdCollections = array();
public function setUp()
{
parent::setUp();
self::$DI['app.use-exception-handler'] = true;
}
public function tearDown()
{
self::$DI['app']['phraseanet.user'] = self::$DI['user'];
foreach (self::$createdCollections as $collection) {
try {
$collection->unmount_collection(self::$DI['app']);
} catch (\Exception $e) {
}
try {
$collection->delete();
} catch (\Exception $e) {
}
}
self::$createdCollections = array();
// /!\ re enable collection
self::$DI['collection']->enable(self::$DI['app']['phraseanet.appbox']);
parent::tearDown();
}
public static function tearDownAfterClass()
{
self::$DI['app'] = new Application('test');
self::giveRightsToUser(self::$DI['app'], self::$DI['user']);
self::$DI['user']->ACL()->revoke_access_from_bases(array(self::$DI['collection_no_access']->get_base_id()));
self::$DI['user']->ACL()->set_masks_on_base(self::$DI['collection_no_access_by_status']->get_base_id(), '0000000000000000000000000000000000000000000000000001000000000000', '0000000000000000000000000000000000000000000000000001000000000000', '0000000000000000000000000000000000000000000000000001000000000000', '0000000000000000000000000000000000000000000000000001000000000000');
parent::tearDownAfterClass();
}
public function getJson($response)
{
$this->assertTrue($response->isOk());
$this->assertEquals('application/json', $response->headers->get('Content-Type'));
$content = json_decode($response->getContent());
$this->assertTrue(is_object($content));
$this->assertObjectHasAttribute('success', $content, $response->getContent());
$this->assertObjectHasAttribute('msg', $content, $response->getContent());
return $content;
}
public function checkRedirection($response, $location)
{
$this->assertTrue($response->isRedirect());
$this->assertEquals($location, $response->headers->get('location'));
}
public function createOneCollection()
{
$databoxes = self::$DI['app']['phraseanet.appbox']->get_databoxes();
$collection = \collection::create(self::$DI['app'], array_shift($databoxes), self::$DI['app']['phraseanet.appbox'], 'TESTTODELETE');
self::$createdCollections[] = $collection;
return $collection;
}
/**
* @covers Alchemy\Phrasea\Controller\Admin\Bas::connect
* @covers Alchemy\Phrasea\Controller\Admin\Bas::getCollection
* @covers Alchemy\Phrasea\Controller\Admin\Bas::call
*/
public function testGetCollection()
{
$this->setAdmin(true);
self::$DI['client']->request('GET', '/admin/collection/' . self::$DI['collection']->get_base_id() . '/');
$this->assertTrue(self::$DI['client']->getResponse()->isOk());
}
/**
* @covers Alchemy\Phrasea\Controller\Admin\Bas::getSuggestedValues
*/
public function testGetSuggestedValues()
{
$this->setAdmin(true);
self::$DI['client']->request('GET', '/admin/collection/' . self::$DI['collection']->get_base_id() . '/suggested-values/');
$this->assertTrue(self::$DI['client']->getResponse()->isOk());
}
/**
* @covers Alchemy\Phrasea\Controller\Admin\Bas::getDetails
*/
public function testInformationsDetails()
{
$this->setAdmin(true);
$collection = $this->createOneCollection();
$file = new \Alchemy\Phrasea\Border\File(self::$DI['app'], self::$DI['app']['mediavorus']->guess(__DIR__ . '/../../../../testfiles/test001.CR2'), $collection);
\record_adapter::createFromFile($file, self::$DI['app']);
self::$DI['client']->request('GET', '/admin/collection/' . $collection->get_base_id() . '/informations/details/');
$this->assertTrue(self::$DI['client']->getResponse()->isOk());
}
/**
* @covers Alchemy\Phrasea\Controller\Admin\Bas::submitSuggestedValues
*/
public function testPostSuggestedValuesNotJson()
{
$this->setAdmin(true);
self::$DI['client']->request('POST', '/admin/collection/' . self::$DI['collection']->get_base_id() . '/suggested-values/');
$this->assertTrue(self::$DI['client']->getResponse()->isRedirect());
}
/**
* @covers Alchemy\Phrasea\Controller\Admin\Bas::submitSuggestedValues
*/
public function testPostSuggestedValueUnauthorized()
{
$this->setAdmin(false);
$this->XMLHTTPRequest('POST', '/admin/collection/' . self::$DI['collection']->get_base_id() . '/suggested-values/');
$this->assertXMLHTTPBadJsonResponse(self::$DI['client']->getResponse());
}
/**
* @covers Alchemy\Phrasea\Controller\Admin\Bas::submitSuggestedValues
*/
public function testPostSuggestedValue()
{
$this->setAdmin(true);
$prefs = '<?xml version="1.0" encoding="UTF-8"?> <baseprefs> <status>0</status> <sugestedValues> <Object> <value>my_new_value</value> </Object> </sugestedValues> </baseprefs>';
$this->XMLHTTPRequest('POST', '/admin/collection/' . self::$DI['collection']->get_base_id() . '/suggested-values/', array(
'str' => $prefs
));
$json = $this->getJson(self::$DI['client']->getResponse());
$this->assertTrue($json->success);
$collection = $collection = \collection::get_from_base_id(self::$DI['app'], self::$DI['collection']->get_base_id());
$this->assertTrue( ! ! strrpos($collection->get_prefs(), 'my_new_value'));
unset($collection);
}
/**
* @covers Alchemy\Phrasea\Controller\Admin\Bas::submitSuggestedValues
*/
public function testPostSuggestedValuebadXml()
{
$this->setAdmin(true);
$prefs = '<? version="1.0" encoding="UTF-alues> </baseprefs>';
$this->XMLHTTPRequest('POST', '/admin/collection/' . self::$DI['collection']->get_base_id() . '/suggested-values/', array(
'str' => $prefs
));
$json = $this->getJson(self::$DI['client']->getResponse());
$this->assertFalse($json->success);
}
/**
* @covers Alchemy\Phrasea\Controller\Admin\Bas::enable
*/
public function testPostEnableNotJson()
{
$this->setAdmin(true);
self::$DI['client']->request('POST', '/admin/collection/' . self::$DI['collection']->get_base_id() . '/enable/');
$this->assertTrue(self::$DI['client']->getResponse()->isRedirect());
}
/**
* @expectedException \Symfony\Component\HttpKernel\Exception\HttpException
* @covers Alchemy\Phrasea\Controller\Admin\Bas::enable
*/
public function testPostEnableUnauthorizedException()
{
$this->setAdmin(false);
self::$DI['client']->request('POST', '/admin/collection/' . self::$DI['collection']->get_base_id() . '/enable/');
}
/**
* @covers Alchemy\Phrasea\Controller\Admin\Bas::enable
*/
public function testPostEnable()
{
$this->setAdmin(true);
$this->XMLHTTPRequest('POST', '/admin/collection/' . self::$DI['collection']->get_base_id() . '/enable/');
$json = $this->getJson(self::$DI['client']->getResponse());
$this->assertTrue($json->success);
$collection = \collection::get_from_base_id(self::$DI['app'], self::$DI['collection']->get_base_id());
$this->assertTrue($collection->is_active());
unset($collection);
}
/**
* @covers Alchemy\Phrasea\Controller\Admin\Bas::disabled
*/
public function testPostDisabledNotJson()
{
$this->setAdmin(true);
self::$DI['client']->request('POST', '/admin/collection/' . self::$DI['collection']->get_base_id() . '/disabled/');
$this->assertTrue(self::$DI['client']->getResponse()->isRedirect());
}
/**
* @expectedException \Symfony\Component\HttpKernel\Exception\HttpException
* @covers Alchemy\Phrasea\Controller\Admin\Bas::disabled
*/
public function testPostDisabledUnauthorizedException()
{
$this->setAdmin(false);
self::$DI['client']->request('POST', '/admin/collection/' . self::$DI['collection']->get_base_id() . '/disabled/');
}
/**
* @covers Alchemy\Phrasea\Controller\Admin\Bas::disabled
*/
public function testPostDisabled()
{
$this->setAdmin(true);
$this->XMLHTTPRequest('POST', '/admin/collection/' . self::$DI['collection']->get_base_id() . '/disabled/');
$json = $this->getJson(self::$DI['client']->getResponse());
$this->assertTrue($json->success);
$collection = \collection::get_from_base_id(self::$DI['app'], self::$DI['collection']->get_base_id());
$this->assertFalse($collection->is_active());
unset($collection);
}
/**
* @expectedException \Symfony\Component\HttpKernel\Exception\HttpException
* @covers Alchemy\Phrasea\Controller\Admin\Bas::setOrderAdmins
*/
public function testPostOrderAdminsUnauthorizedException()
{
$this->setAdmin(false);
self::$DI['client']->request('POST', '/admin/collection/' . self::$DI['collection']->get_base_id() . '/order/admins/');
}
/**
* @covers Alchemy\Phrasea\Controller\Admin\Bas::setOrderAdmins
*/
public function testPostOrderAdmins()
{
$this->setAdmin(true);
self::$DI['client']->request('POST', '/admin/collection/' . self::$DI['collection']->get_base_id() . '/order/admins/', array(
'admins' => array(self::$DI['user_alt1']->get_id())
));
$this->checkRedirection(self::$DI['client']->getResponse(), '/admin/collection/' . self::$DI['collection']->get_base_id() . '/?success=1');
$this->assertTrue(self::$DI['user_alt1']->ACL()->has_right_on_base(self::$DI['collection']->get_base_id(), 'order_master'));
}
/**
* @covers Alchemy\Phrasea\Controller\Admin\Bas::setPublicationDisplay
*/
public function testPostPublicationDisplayNotJson()
{
$this->setAdmin(true);
self::$DI['client']->request('POST', '/admin/collection/' . self::$DI['collection']->get_base_id() . '/publication/display/', array(
'pub_wm' => 'wm',
));
$this->assertTrue(self::$DI['client']->getResponse()->isRedirect());
}
/**
* @expectedException \Symfony\Component\HttpKernel\Exception\HttpException
* @covers Alchemy\Phrasea\Controller\Admin\Bas::setPublicationDisplay
*/
public function testPostPublicationDisplayUnauthorizedException()
{
$this->setAdmin(false);
self::$DI['client']->request('POST', '/admin/collection/' . self::$DI['collection']->get_base_id() . '/publication/display/');
}
/**
* @covers Alchemy\Phrasea\Controller\Admin\Bas::setPublicationDisplay
*/
public function testPublicationDisplayBadRequestMissingArguments()
{
$this->setAdmin(true);
$this->XMLHTTPRequest('POST', '/admin/collection/' . self::$DI['collection']->get_base_id() . '/publication/display/');
$this->assertXMLHTTPBadJsonResponse(self::$DI['client']->getResponse());
}
/**
* @covers Alchemy\Phrasea\Controller\Admin\Bas::setPublicationDisplay
*/
public function testPublicationDisplay()
{
$this->setAdmin(true);
$this->XMLHTTPRequest('POST', '/admin/collection/' . self::$DI['collection']->get_base_id() . '/publication/display/', array(
'pub_wm' => 'wm',
));
$json = $this->getJson(self::$DI['client']->getResponse());
$this->assertTrue($json->success);
$collection = \collection::get_from_base_id(self::$DI['app'], self::$DI['collection']->get_base_id());
$this->assertNotNull($collection->get_pub_wm());
unset($collection);
}
/**
* @covers Alchemy\Phrasea\Controller\Admin\Bas::rename
*/
public function testPostNameNotJson()
{
$this->setAdmin(true);
$collection = $this->createOneCollection();
self::$DI['client']->request('POST', '/admin/collection/' . $collection->get_base_id() . '/rename/', array(
'name' => 'test_rename_coll'
));
$this->assertTrue(self::$DI['client']->getResponse()->isRedirect());
}
/**
* @expectedException \Symfony\Component\HttpKernel\Exception\HttpException
* @covers Alchemy\Phrasea\Controller\Admin\Bas::rename
*/
public function testPostNameUnauthorizedException()
{
$this->setAdmin(false);
self::$DI['client']->request('POST', '/admin/collection/' . self::$DI['collection']->get_base_id() . '/rename/');
}
/**
* @covers Alchemy\Phrasea\Controller\Admin\Bas::rename
*/
public function testPostNameBadRequestMissingArguments()
{
$this->setAdmin(true);
$this->XMLHTTPRequest('POST', '/admin/collection/' . self::$DI['collection']->get_base_id() . '/rename/');
$this->assertXMLHTTPBadJsonResponse(self::$DI['client']->getResponse());
}
/**
* @covers Alchemy\Phrasea\Controller\Admin\Bas::rename
*/
public function testPostName()
{
$this->setAdmin(true);
$collection = $this->createOneCollection();
$this->XMLHTTPRequest('POST', '/admin/collection/' . $collection->get_base_id() . '/rename/', array(
'name' => 'test_rename_coll'
));
$json = $this->getJson(self::$DI['client']->getResponse());
$this->assertTrue($json->success);
$this->assertEquals($collection->get_name(), 'test_rename_coll');
$collection->unmount_collection(self::$DI['app']);
$collection->delete();
}
/**
* @covers Alchemy\Phrasea\Controller\Admin\Bas::emptyCollection
*/
public function testPostEmptyCollectionNotJson()
{
$this->setAdmin(true);
$collection = $this->createOneCollection();
self::$DI['client']->request('POST', '/admin/collection/' . $collection->get_base_id() . '/empty/');
$this->assertTrue(self::$DI['client']->getResponse()->isRedirect());
}
/**
* @covers Alchemy\Phrasea\Controller\Admin\Bas::emptyCollection
*/
public function testPostEmptyCollectionUnauthorizedException()
{
$this->setAdmin(false);
$this->XMLHTTPRequest('POST', '/admin/collection/' . self::$DI['collection']->get_base_id() . '/empty/');
$this->assertXMLHTTPBadJsonResponse(self::$DI['client']->getResponse());
}
/**
* @covers Alchemy\Phrasea\Controller\Admin\Bas::emptyCollection
*/
public function testPostEmptyCollection()
{
$this->setAdmin(true);
$collection = $this->createOneCollection();
$file = new \Alchemy\Phrasea\Border\File(self::$DI['app'], self::$DI['app']['mediavorus']->guess(__DIR__ . '/../../../../testfiles/test001.CR2'), $collection);
\record_adapter::createFromFile($file, self::$DI['app']);
if ($collection->get_record_amount() === 0) {
$this->markTestSkipped('No record were added');
}
$this->XMLHTTPRequest('POST', '/admin/collection/' . $collection->get_base_id() . '/empty/');
$json = $this->getJson(self::$DI['client']->getResponse());
$this->assertTrue($json->success);
$this->assertEquals(0, $collection->get_record_amount());
}
/**
* @covers Alchemy\Phrasea\Controller\Admin\Bas::emptyCollection
*/
public function testPostEmptyCollectionWithHighRecordAmount()
{
$this->setAdmin(true);
$collection = $this->createOneCollection();
$databox = self::$DI['app']['phraseanet.appbox']->get_databox($collection->get_sbas_id());
$sql = '
INSERT INTO record
(coll_id, record_id, parent_record_id, moddate, credate
, type, sha256, uuid, originalname, mime)
VALUES
(:coll_id, null, :parent_record_id, NOW(), NOW()
, :type, :sha256, :uuid
, :originalname, :mime)';
$stmt = $databox->get_connection()->prepare($sql);
$i = 0;
while ($i < 502) {
$stmt->execute(array(
':coll_id' => $collection->get_coll_id(),
':parent_record_id' => 0,
':type' => 'unknown',
':sha256' => null,
':uuid' => \uuid::generate_v4(),
':originalname' => null,
':mime' => null,
));
$i ++;
}
$stmt->closeCursor();
if ($collection->get_record_amount() < 500) {
$this->markTestSkipped('No enough records added');
}
$this->XMLHTTPRequest('POST', '/admin/collection/' . $collection->get_base_id() . '/empty/');
$json = $this->getJson(self::$DI['client']->getResponse());
$this->assertTrue($json->success);
$taskManager = new \task_manager(self::$DI['app']);
$tasks = $taskManager->getTasks();
$found = false;
foreach ($tasks as $task) {
if (get_class($task) === 'task_period_emptyColl') {
$found = true;
$task->delete();
}
}
if ( ! $found) {
$this->fail('Task for empty collection has not been created');
}
}
/**
* @expectedException \Symfony\Component\HttpKernel\Exception\HttpException
* @covers Alchemy\Phrasea\Controller\Admin\Bas::setMiniLogo
*/
public function testSetMiniLogoBadRequest()
{
$this->setAdmin(true);
self::$DI['client']->request('POST', '/admin/collection/' . self::$DI['collection']->get_base_id() . '/picture/mini-logo/');
}
/**
* @expectedException \Symfony\Component\HttpKernel\Exception\HttpException
* @covers Alchemy\Phrasea\Controller\Admin\Bas::setStamp
*/
public function testSetStampBadRequest()
{
$this->setAdmin(true);
self::$DI['client']->request('POST', '/admin/collection/' . self::$DI['collection']->get_base_id() . '/picture/stamp-logo/');
}
/**
* @expectedException \Symfony\Component\HttpKernel\Exception\HttpException
* @covers Alchemy\Phrasea\Controller\Admin\Bas::setWatermark
*/
public function testSetWatermarkBadRequest()
{
self::$DI['client']->request('POST', '/admin/collection/' . self::$DI['collection']->get_base_id() . '/picture/watermark/');
}
/**
* @expectedException \Symfony\Component\HttpKernel\Exception\HttpException
* @covers Alchemy\Phrasea\Controller\Admin\Bas::setBanner
*/
public function testSetBannerBadRequest()
{
$this->setAdmin(true);
self::$DI['client']->request('POST', '/admin/collection/' . self::$DI['collection']->get_base_id() . '/picture/banner/');
}
/**
* @covers Alchemy\Phrasea\Controller\Admin\Bas::setMiniLogo
*/
public function testSetMiniLogo()
{
$this->setAdmin(true);
$target = tempnam(sys_get_temp_dir(), 'p4logo') . '.jpg';
self::$DI['app']['filesystem']->copy(__DIR__ . '/../../../../testfiles/p4logo.jpg', $target);
$files = array(
'newLogo' => new \Symfony\Component\HttpFoundation\File\UploadedFile($target, 'logo.jpg')
);
self::$DI['client']->request('POST', '/admin/collection/' . self::$DI['collection']->get_base_id() . '/picture/mini-logo/', array(), $files);
$this->checkRedirection(self::$DI['client']->getResponse(), '/admin/collection/' . self::$DI['collection']->get_base_id() . '/?success=1');
$this->assertEquals(1, count(\collection::getLogo(self::$DI['collection']->get_base_id(), self::$DI['app'])));
}
/**
* @covers Alchemy\Phrasea\Controller\Admin\Bas::deleteLogo
*/
public function testDeleteMiniLogoNotJson()
{
$this->setAdmin(true);
$collection = $this->createOneCollection();
self::$DI['client']->request('POST', '/admin/collection/' . $collection->get_base_id() . '/picture/mini-logo/delete/');
$this->assertTrue(self::$DI['client']->getResponse()->isRedirect());
}
/**
* @covers Alchemy\Phrasea\Controller\Admin\Bas::deleteLogo
*/
public function testDeleteMiniLogo()
{
if (count(\collection::getLogo(self::$DI['collection']->get_base_id(), self::$DI['app'])) === 0) {
$this->markTestSkipped('No logo setted');
}
$this->setAdmin(true);
$this->XMLHTTPRequest('POST', '/admin/collection/' . self::$DI['collection']->get_base_id() . '/picture/mini-logo/delete/');
$json = $this->getJson(self::$DI['client']->getResponse());
$this->assertTrue($json->success);
}
/**
* @covers Alchemy\Phrasea\Controller\Admin\Bas::setWatermark
*/
public function testSetWm()
{
$this->setAdmin(true);
$target = tempnam(sys_get_temp_dir(), 'p4logo') . '.jpg';
self::$DI['app']['filesystem']->copy(__DIR__ . '/../../../../testfiles/p4logo.jpg', $target);
$files = array(
'newWm' => new \Symfony\Component\HttpFoundation\File\UploadedFile($target, 'logo.jpg')
);
self::$DI['client']->request('POST', '/admin/collection/' . self::$DI['collection']->get_base_id() . '/picture/watermark/', array(), $files);
$this->checkRedirection(self::$DI['client']->getResponse(), '/admin/collection/' . self::$DI['collection']->get_base_id() . '/?success=1');
$this->assertEquals(1, count(\collection::getWatermark(self::$DI['collection']->get_base_id())));
}
/**
* @covers Alchemy\Phrasea\Controller\Admin\Bas::deleteWatermark
*/
public function testDeleteWmBadNotJson()
{
$this->setAdmin(true);
$collection = $this->createOneCollection();
self::$DI['client']->request('POST', '/admin/collection/' . $collection->get_base_id() . '/picture/watermark/delete/');
$this->assertTrue(self::$DI['client']->getResponse()->isRedirect());
}
/**
* @covers Alchemy\Phrasea\Controller\Admin\Bas::deleteWatermark
*/
public function testDeleteWm()
{
if (count(\collection::getWatermark(self::$DI['collection']->get_base_id())) === 0) {
$this->markTestSkipped('No watermark setted');
}
$this->setAdmin(true);
$this->XMLHTTPRequest('POST', '/admin/collection/' . self::$DI['collection']->get_base_id() . '/picture/watermark/delete/');
$json = $this->getJson(self::$DI['client']->getResponse());
$this->assertTrue($json->success);
}
/**
* @covers Alchemy\Phrasea\Controller\Admin\Bas::setStamp
*/
public function testSetStamp()
{
$this->setAdmin(true);
$target = tempnam(sys_get_temp_dir(), 'p4logo') . '.jpg';
self::$DI['app']['filesystem']->copy(__DIR__ . '/../../../../testfiles/p4logo.jpg', $target);
$files = array(
'newStamp' => new \Symfony\Component\HttpFoundation\File\UploadedFile($target, 'logo.jpg')
);
self::$DI['client']->request('POST', '/admin/collection/' . self::$DI['collection']->get_base_id() . '/picture/stamp-logo/', array(), $files);
$this->checkRedirection(self::$DI['client']->getResponse(), '/admin/collection/' . self::$DI['collection']->get_base_id() . '/?success=1');
$this->assertEquals(1, count(\collection::getStamp(self::$DI['collection']->get_base_id())));
}
/**
* @covers Alchemy\Phrasea\Controller\Admin\Bas::deleteStamp
*/
public function testDeleteStampBadNotJson()
{
$this->setAdmin(true);
$collection = $this->createOneCollection();
self::$DI['client']->request('POST', '/admin/collection/' .$collection->get_base_id() . '/picture/stamp-logo/delete/');
$this->assertTrue(self::$DI['client']->getResponse()->isRedirect());
}
/**
* @covers Alchemy\Phrasea\Controller\Admin\Bas::deleteStamp
*/
public function testDeleteStamp()
{
if (count(\collection::getStamp(self::$DI['collection']->get_base_id())) === 0) {
$this->markTestSkipped('No stamp setted');
}
$this->setAdmin(true);
$this->XMLHTTPRequest('POST', '/admin/collection/' . self::$DI['collection']->get_base_id() . '/picture/stamp-logo/delete/');
$json = $this->getJson(self::$DI['client']->getResponse());
$this->assertTrue($json->success);
}
/**
* @covers Alchemy\Phrasea\Controller\Admin\Bas::setBanner
*/
public function testSetBanner()
{
$this->setAdmin(true);
$target = tempnam(sys_get_temp_dir(), 'p4logo') . '.jpg';
self::$DI['app']['filesystem']->copy(__DIR__ . '/../../../../testfiles/p4logo.jpg', $target);
$files = array(
'newBanner' => new \Symfony\Component\HttpFoundation\File\UploadedFile($target, 'logo.jpg')
);
self::$DI['client']->request('POST', '/admin/collection/' . self::$DI['collection']->get_base_id() . '/picture/banner/', array(), $files);
$this->checkRedirection(self::$DI['client']->getResponse(), '/admin/collection/' . self::$DI['collection']->get_base_id() . '/?success=1');
$this->assertEquals(1, count(\collection::getPresentation(self::$DI['collection']->get_base_id())));
}
/**
* @covers Alchemy\Phrasea\Controller\Admin\Bas::deleteBanner
*/
public function testDeleteBannerNotJson()
{
$this->setAdmin(true);
$collection = $this->createOneCollection();
self::$DI['client']->request('POST', '/admin/collection/' . $collection->get_base_id() . '/picture/banner/delete/');
$this->assertTrue(self::$DI['client']->getResponse()->isRedirect());
}
/**
* @covers Alchemy\Phrasea\Controller\Admin\Bas::deleteBanner
*/
public function testDeleteBanner()
{
if (count(\collection::getPresentation(self::$DI['collection']->get_base_id())) === 0) {
$this->markTestSkipped('No Banner setted');
}
$this->setAdmin(true);
$this->XMLHTTPRequest('POST', '/admin/collection/' . self::$DI['collection']->get_base_id() . '/picture/banner/delete/');
$json = $this->getJson(self::$DI['client']->getResponse());
$this->assertTrue($json->success);
}
/**
* @expectedException \Symfony\Component\HttpKernel\Exception\HttpException
* @covers Alchemy\Phrasea\Controller\Admin\Bas::getCollection
*/
public function testGetCollectionUnauthorizedException()
{
$this->setAdmin(false);
self::$DI['client']->request('GET', '/admin/collection/' . self::$DI['collection']->get_base_id() . '/');
}
/**
* @expectedException \Symfony\Component\HttpKernel\Exception\HttpException
* @covers Alchemy\Phrasea\Controller\Admin\Bas::getSuggestedValues
*/
public function testGetSuggestedValuesUnauthorizedException()
{
$this->setAdmin(false);
self::$DI['client']->request('GET', '/admin/collection/' . self::$DI['collection']->get_base_id() . '/suggested-values/');
}
/**
* @expectedException \Symfony\Component\HttpKernel\Exception\HttpException
* @covers Alchemy\Phrasea\Controller\Admin\Bas::getDetails
*/
public function testInformationsDetailsUnauthorizedException()
{
$this->setAdmin(false);
self::$DI['client']->request('GET', '/admin/collection/' . self::$DI['collection']->get_base_id() . '/informations/details/');
}
/**
* @covers Alchemy\Phrasea\Controller\Admin\Bas::delete
*/
public function testDeleteCollectionNotJson()
{
$this->setAdmin(true);
$collection = $this->createOneCollection();
self::$DI['client']->request('POST', '/admin/collection/' . $collection->get_base_id() . '/delete/');
$this->assertTrue(self::$DI['client']->getResponse()->isRedirect());
}
/**
* @expectedException \Symfony\Component\HttpKernel\Exception\HttpException
* @covers Alchemy\Phrasea\Controller\Admin\Bas::delete
*/
public function testDeleteCollectionUnauthorized()
{
$this->setAdmin(false);
self::$DI['client']->request('POST', '/admin/collection/' . self::$DI['collection']->get_base_id() . '/delete/');
}
/**
* @covers Alchemy\Phrasea\Controller\Admin\Bas::delete
*/
public function testDeleteCollection()
{
$this->setAdmin(true);
$collection = $this->createOneCollection();
$this->XMLHTTPRequest('POST', '/admin/collection/' . $collection->get_base_id() . '/delete/');
$json = $this->getJson(self::$DI['client']->getResponse());
$this->assertTrue($json->success);
try {
\collection::get_from_base_id(self::$DI['app'], $collection->get_base_id());
$this->fail('Collection not deleted');
} catch (\Exception $e) {
}
}
/**
* @covers Alchemy\Phrasea\Controller\Admin\Bas::delete
*/
public function testDeleteCollectionNoEmpty()
{
$this->setAdmin(true);
$collection = $this->createOneCollection();
$file = new \Alchemy\Phrasea\Border\File(self::$DI['app'], self::$DI['app']['mediavorus']->guess(__DIR__ . '/../../../../testfiles/test001.CR2'), $collection);
\record_adapter::createFromFile($file, self::$DI['app']);
if ($collection->get_record_amount() === 0) {
$this->markTestSkipped('No record were added');
}
$this->XMLHTTPRequest('POST', '/admin/collection/' . $collection->get_base_id() . '/delete/');
$json = $this->getJson(self::$DI['client']->getResponse());
$this->assertFalse($json->success);
$collection->empty_collection();
}
/**
* @covers Alchemy\Phrasea\Controller\Admin\Bas::unmount
*/
public function testPostUnmountCollectionNotJson()
{
$this->setAdmin(true);
$collection = $this->createOneCollection();
self::$DI['client']->request('POST', '/admin/collection/' . $collection->get_base_id() . '/unmount/');
$this->assertTrue(self::$DI['client']->getResponse()->isRedirect());
}
/**
* @covers Alchemy\Phrasea\Controller\Admin\Bas::unmount
*/
public function testPostUnmountCollectionUnauthorizedException()
{
$this->setAdmin(false);
$this->XMLHTTPRequest('POST', '/admin/collection/' . self::$DI['collection']->get_base_id() . '/unmount/');
$this->assertXMLHTTPBadJsonResponse(self::$DI['client']->getResponse());
}
/**
* @covers Alchemy\Phrasea\Controller\Admin\Bas::unmount
*/
public function testPostUnmountCollection()
{
$this->setAdmin(true);
$collection = $this->createOneCollection();
$this->XMLHTTPRequest('POST', '/admin/collection/' . $collection->get_base_id() . '/unmount/');
$json = $this->getJson(self::$DI['client']->getResponse());
$this->assertTrue($json->success);
try {
\collection::get_from_base_id(self::$DI['app'], $collection->get_base_id());
$this->fail('Collection not unmounted');
} catch (\Exception_Databox_CollectionNotFound $e) {
}
unset($collection);
}
}