/**
  * @test
  * @group library
  */
 public function copyShouldCopyAsExpected()
 {
     $sourceWebsiteId = 'SITE-mf12copy-20da-4ea8-a477-4ee793source-SITE';
     $destinationWebsiteId = 'SITE-mf12copy-20da-4ea8-a477-4ee7j3f5dest-SITE';
     $this->service->copyMediaFileToNewWebsite($sourceWebsiteId, $destinationWebsiteId);
     $expectedDestinationDirectory = $this->testMediaFilesDirectory . DIRECTORY_SEPARATOR . $destinationWebsiteId;
     $assertionMessage = sprintf("Destination directory '%s' has not been created", $expectedDestinationDirectory);
     $this->assertTrue(is_dir($expectedDestinationDirectory), $assertionMessage);
     $testFilesDirectory = $this->config->test->files->directory;
     $expectedCopyTreeFile = $testFilesDirectory . DIRECTORY_SEPARATOR . 'expected_media_copy.tree';
     $expectedCopyTree = file_get_contents($expectedCopyTreeFile);
     $this->assertSame($expectedCopyTree, DirectoryHelper::getRecursiveAsJson($expectedDestinationDirectory, true), "Tree mismatch between copied directory tree and expected directory tree");
     DirectoryHelper::removeRecursiv($expectedDestinationDirectory, $this->testMediaFilesDirectory);
 }
Exemplo n.º 2
0
 /**
  * @test
  * @group library
  */
 public function copyShouldCopyMediaMediafilesAsExpected()
 {
     $sourceWebsiteId = 'SITE-mc10e89c-2rtf-46cd-a651-fc42dc7812so-SITE';
     $newWebsiteId = 'SITE-mc10e89c-2rtf-46cd-a651-fc42dc7f75de-SITE';
     $this->service->copyMediaToNewWebsite($sourceWebsiteId, $newWebsiteId);
     $medias = $this->service->getByWebsiteIdAndFilter($newWebsiteId);
     $this->assertTrue(count($medias) === 5);
     $medias = $this->service->getByWebsiteIdAndFilter($sourceWebsiteId);
     $this->assertTrue(count($medias) === 5);
     $config = Registry::getConfig();
     $copiedMediaDirectory = $config->media->files->directory . DIRECTORY_SEPARATOR . $newWebsiteId;
     $this->assertTrue(is_dir($copiedMediaDirectory));
     $testFilesDirectory = $config->test->files->directory;
     $expectedCopyTreeFile = $testFilesDirectory . DIRECTORY_SEPARATOR . 'expected_media_copy_in_aggregating_service.tree';
     $expectedCopyTree = file_get_contents($expectedCopyTreeFile);
     $this->assertSame($expectedCopyTree, DirectoryHelper::getRecursiveAsJson($copiedMediaDirectory, true), "Tree mismatch between copied directory tree and expected directory tree");
     DirectoryHelper::removeRecursiv($copiedMediaDirectory, $config->media->files->directory);
 }
Exemplo n.º 3
0
 /**
  * @test
  * @group integration
  */
 public function exportModulesShouldExportAsExpectedWithSpecifiedName()
 {
     $config = Registry::getConfig();
     $exportDirectoryName = 'test_export_0_modules';
     $exportBaseDirectory = $config->export->directory;
     $exportDirectory = $exportBaseDirectory . DIRECTORY_SEPARATOR . md5($exportDirectoryName);
     $exportZipFile = $exportBaseDirectory . DIRECTORY_SEPARATOR . md5($exportDirectoryName) . DIRECTORY_SEPARATOR . md5($exportDirectoryName) . '.' . self::EXPORT_FILE_EXTENSION;
     $websiteId = 'SITE-ae6e702f-10ac-4e1e-exmo-307e4b8765db-SITE';
     $moduleIds = array('"MODUL-0rap5eb8-0df3-47e9-exmo-90ae9d96d3c0-MODUL"', '"MODUL-0rap5eb8-0df3-47e9-exmo-90ae9d96d3c1-MODUL"', '"MODUL-0rap5eb8-0df3-47e9-exmo-90ae9d96d3c2-MODUL"', '"MODUL-0rap5eb8-0df3-47e9-exmo-90ae9d96d3c3-MODUL"');
     $requestUri = sprintf('export/modules/params/{"websiteid":"%s","ids":[%s],"name":"%s"}', $websiteId, implode(',', $moduleIds), $exportDirectoryName);
     $this->dispatch($requestUri);
     $response = $this->getValidatedSuccessResponse();
     $responseData = $response->getData();
     $this->assertObjectHasAttribute('url', $responseData);
     $nameDataPart = sprintf('{"name":"%s"}', $exportDirectoryName);
     $this->assertStringEndsWith($nameDataPart, $responseData->url);
     $this->assertTrue(is_dir($exportDirectory));
     $this->assertFileExists($exportZipFile);
     $unzipCommand = sprintf("unzip %s -d %s", $exportZipFile, $exportDirectory);
     if (strstr($unzipCommand, $exportBaseDirectory)) {
         SystemHelper::user_proc_exec($unzipCommand);
         DirectoryHelper::removeRecursiv($exportZipFile, $exportBaseDirectory);
     }
     $testFilesDirectory = $config->test->files->directory;
     $expectedExportTreeFile = $testFilesDirectory . DIRECTORY_SEPARATOR . 'trees' . DIRECTORY_SEPARATOR . 'export' . DIRECTORY_SEPARATOR . 'expected_modules_export.tree';
     $expectedExportTree = file_get_contents($expectedExportTreeFile);
     $exportDirectoryTree = DirectoryHelper::getRecursiveAsJson($exportDirectory, true);
     $this->assertSame($expectedExportTree, $exportDirectoryTree, "Tree mismatch between export directory tree and expected directory tree");
     DirectoryHelper::removeRecursiv($exportDirectory, $exportBaseDirectory);
 }
Exemplo n.º 4
0
 /**
  * @test
  * @group integration
  */
 public function moduleImportShouldImportAsExpectedAlsoForDeepFolders()
 {
     $config = Registry::getConfig();
     $testImportDirectory = $config->import->directory;
     $testFilesDirectory = $config->test->files->directory;
     $testImportFilename = 'test_modules_export_deep.zip';
     $testImportFile = $testFilesDirectory . DIRECTORY_SEPARATOR . 'test_exports' . DIRECTORY_SEPARATOR . $testImportFilename;
     $expectedImportFile = $testImportDirectory . DIRECTORY_SEPARATOR . $testImportFilename;
     $importUnzipDirectory = str_replace('.zip', '', $expectedImportFile);
     $assertionMessage = sprintf("Import file '%s' existiert nicht", $testImportFile);
     $this->assertFileExists($testImportFile, $assertionMessage);
     $testImportTmpFile = DIRECTORY_SEPARATOR . 'tmp' . DIRECTORY_SEPARATOR . 'phpe7f3im';
     $fileInputname = 'import';
     $alreadyExistingWebsiteId = 'SITE-rs13up2c-exmd-4ea8-a477-4ee79e8e62mo-SITE';
     $requestUri = sprintf('/import/file/params/{"websiteid":"%s","fileinputname":"%s"}', $alreadyExistingWebsiteId, $fileInputname);
     $this->assertFakeUpload($fileInputname, $testImportFile, $testImportTmpFile);
     $this->dispatch($requestUri);
     $this->assertHeaderContains('Content-Type', 'text/plain');
     $responseBody = $this->getResponseBody();
     $this->assertInternalType('string', $responseBody);
     $this->assertNotNull($responseBody);
     $response = new Response($responseBody);
     $this->assertTrue($response->getSuccess(), $responseBody);
     $expectedNewModulIds = array('MODUL-0c1e62c1-023c-42c7-8628-f2cb4236eb08-MODUL');
     $actualNewModulIds = array();
     $modules = $this->moduleService->getAll($alreadyExistingWebsiteId);
     foreach ($modules as $module) {
         $moduleId = $module->getId();
         $actualNewModulIds[] = $moduleId;
         $expectedImportAssetsTree = file_get_contents(FS::joinPath($testFilesDirectory, 'trees', 'import', 'modules', 'expected_assets_modules_deep', $moduleId . '.tree'));
         $actualAssetPath = $this->moduleService->getAssetsPath($alreadyExistingWebsiteId, $moduleId);
         $this->assertEquals($expectedImportAssetsTree, DirectoryHelper::getRecursiveAsJson($actualAssetPath, true), "Tree mismatch between import module (" . $moduleId . ") assets directory tree" . " and expected assets directory tree");
     }
     sort($expectedNewModulIds);
     sort($actualNewModulIds);
     $this->assertSame($expectedNewModulIds, $actualNewModulIds);
     if (strstr($importUnzipDirectory, $testImportDirectory)) {
         DirectoryHelper::removeRecursiv($importUnzipDirectory, $testImportDirectory);
         if (is_dir($importUnzipDirectory)) {
             rmdir($importUnzipDirectory);
         }
         if (file_exists($expectedImportFile)) {
             unlink($expectedImportFile);
         }
     }
 }
Exemplo n.º 5
0
 /**
  * @test
  * @group integration
  */
 public function deleteAlbumShouldAlsoDeleteIncludedMedia()
 {
     $albumId = 'ALBUM-ce1ecf0d-acc4-4fdb-dem4-72ebb0878008-ALBUM';
     $websiteId = 'SITE-ce6e702f-10ac-4e1e-dem7-307d4b8760al-SITE';
     $expectedAlbumCountBeforeDelete = 2;
     $expectedAlbumCountAfterDelete = 1;
     $mediaFiles = array('samy-v1.js', 'backbone.js', 'samy-v2.js', 'samy-v3.js', 'samy-v4.js');
     $this->assertTrue($this->createTestMedias($websiteId, $mediaFiles));
     $getAllRequest = sprintf('/album/getall/params/{"websiteId":"%s"}', $websiteId);
     $this->dispatch($getAllRequest);
     $response = new Response($this->getResponseBody());
     $this->assertTrue($response->getSuccess());
     $responseData = $response->getData();
     $this->assertObjectHasAttribute('albums', $responseData);
     $this->assertInternalType('array', $responseData->albums);
     $this->assertSame($expectedAlbumCountBeforeDelete, count($responseData->albums));
     $request = sprintf('/album/delete/params/{"websiteId":"%s","id":"%s"}', $websiteId, $albumId);
     $this->dispatch($request);
     $response = $this->getResponseBody();
     $this->dispatch($getAllRequest);
     $response = new Response($this->getResponseBody());
     $this->assertTrue($response->getSuccess());
     $responseData = $response->getData();
     $this->assertObjectHasAttribute('albums', $responseData);
     $this->assertInternalType('array', $responseData->albums);
     $this->assertSame($expectedAlbumCountAfterDelete, count($responseData->albums));
     $config = Registry::getConfig();
     $testFilesDirectory = $config->test->files->directory;
     $testFilesMediaDirectory = $config->media->files->directory;
     $testMediaDirectory = $testFilesDirectory . DIRECTORY_SEPARATOR . $websiteId;
     $expectedAfterDeleteMediasTreeFile = $testFilesDirectory . DIRECTORY_SEPARATOR . 'trees' . DIRECTORY_SEPARATOR . 'album_delete.tree';
     $expectedAfterDeleteMediasTree = file_get_contents($expectedAfterDeleteMediasTreeFile);
     $testMediaDirectory = $testFilesDirectory . DIRECTORY_SEPARATOR . 'media' . DIRECTORY_SEPARATOR . $websiteId;
     $assertionMessage = "Tree mismatch between medias directory tree and " . "expected medias directory tree after album deletion";
     $this->assertSame($expectedAfterDeleteMediasTree, \Test\Seitenbau\Directory\Helper::getRecursiveAsJson($testMediaDirectory, true), $assertionMessage);
     DirectoryHelper::removeRecursiv($testMediaDirectory, $testFilesMediaDirectory);
 }
Exemplo n.º 6
0
 /**
  * @test
  * @group integration
  */
 public function copyCopiesAssociatedAlbums()
 {
     $sourceWebsiteId = 'SITE-1964e89c-0001-cows-a651-fc42dc78fe50-SITE';
     $sourceAlbumIds = array('ALBUM-wc0ecf03-moe9-4adb-ed3f-72ebb087800c-ALBUM', 'ALBUM-wc1ecf03-moe9-4adb-ed3f-72ebb087800c-ALBUM', 'ALBUM-wc2ecf03-moe9-4adb-ed3f-72ebb087800c-ALBUM');
     $sourceMediaNames = array('Website_Copy_Album_0_0', 'Website_Copy_Album_0_1', 'Website_Copy_Album_0_2', 'Website_Copy_Album_1_0', 'Website_Copy_Album_1_1', 'Website_Copy_Album_1_2', 'Website_Copy_Album_2_0', 'Website_Copy_Album_2_1', 'Website_Copy_Album_2_2');
     $testMediaFiles = array('report_2009.pdf', 'backbone.js', 'footer.jpg', 'header_0.png', 'report_2010.pdf', 'pdf.js', 'report_2011.pdf', 'grumble.js', 'header_0.gif');
     $this->createTestMedias($sourceWebsiteId, $testMediaFiles);
     $copyRequest = sprintf('website/copy/params/{"id":"%s","name":"%s"}', $sourceWebsiteId, 'copied_website_with_copied_albums');
     $this->dispatch($copyRequest);
     $response = $this->getResponseBody();
     $response = new Response($response);
     $this->assertTrue($response->getSuccess());
     $responseData = $response->getData();
     $this->assertObjectHasAttribute('id', $responseData);
     $copiedWebsiteId = $responseData->id;
     $uniqueidValidator = new UniqueIdValidator(DataWebsite::ID_PREFIX, DataWebsite::ID_SUFFIX);
     $this->assertTrue($uniqueidValidator->isValid($copiedWebsiteId));
     $config = Registry::getConfig();
     $mediaBaseDirectory = realpath($config->media->files->directory);
     $sourceMediaDirectory = $mediaBaseDirectory . DIRECTORY_SEPARATOR . $sourceWebsiteId;
     $copiedMediaDirectory = $mediaBaseDirectory . DIRECTORY_SEPARATOR . $copiedWebsiteId;
     $this->assertTrue(is_dir($copiedMediaDirectory));
     $testFilesDirectory = $config->test->files->directory;
     $expectedCopyTreeFile = $testFilesDirectory . DIRECTORY_SEPARATOR . 'trees' . DIRECTORY_SEPARATOR . 'website_copy.tree';
     $expectedCopyTree = file_get_contents($expectedCopyTreeFile);
     $this->assertSame($expectedCopyTree, DirectoryHelper::getRecursiveAsJson($copiedMediaDirectory, true), "Tree mismatch between copied directory tree and expected directory tree");
     $getAllMediaRequest = sprintf('media/getall/params/{"websiteid":"%s"}', $copiedWebsiteId);
     $this->dispatch($getAllMediaRequest);
     $response = $this->getResponseBody();
     $response = new Response($response);
     $this->assertTrue($response->getSuccess());
     $responseData = $response->getData();
     $this->assertObjectHasAttribute('media', $responseData);
     $this->assertInternalType('array', $responseData->media);
     $this->assertObjectHasAttribute('total', $responseData);
     $expectedCopiedMediaTotal = 9;
     $this->assertSame($expectedCopiedMediaTotal, $responseData->total);
     $actualCopiedAlbumIds = array();
     $actualMediaNames = array();
     foreach ($responseData->media as $media) {
         $this->assertInstanceOf('stdClass', $media);
         $this->assertObjectHasAttribute('websiteId', $media);
         $this->assertObjectHasAttribute('albumId', $media);
         $this->assertObjectHasAttribute('name', $media);
         $this->assertSame($copiedWebsiteId, $media->websiteId);
         $this->assertContains($media->albumId, $sourceAlbumIds);
         $actualMediaNames[] = $media->name;
         if (!in_array($media->albumId, $actualCopiedAlbumIds)) {
             $actualCopiedAlbumIds[] = $media->albumId;
         }
     }
     sort($sourceMediaNames);
     sort($actualMediaNames);
     $this->assertSame($sourceMediaNames, $actualMediaNames);
     $expectedAlbumCount = 3;
     $this->assertSame($expectedAlbumCount, count($actualCopiedAlbumIds));
     $getAllAlbumRequest = sprintf('album/getall/params/{"websiteid":"%s"}', $copiedWebsiteId);
     $this->dispatch($getAllAlbumRequest);
     $response = $this->getResponseBody();
     $response = new Response($response);
     $this->assertTrue($response->getSuccess());
     $responseData = $response->getData();
     $this->assertObjectHasAttribute('albums', $responseData);
     $this->assertInternalType('array', $responseData->albums);
     $copiedAlbums = $responseData->albums;
     $this->assertSame($expectedAlbumCount, count($copiedAlbums));
     $copiedAlbumIds = array();
     foreach ($copiedAlbums as $album) {
         $this->assertInstanceOf('stdClass', $album);
         $this->assertObjectHasAttribute('id', $album);
         $copiedAlbumIds[] = $album->id;
     }
     sort($actualCopiedAlbumIds);
     sort($copiedAlbumIds);
     $this->assertSame($actualCopiedAlbumIds, $copiedAlbumIds);
     $getAllMediaRequest = sprintf('media/getall/params/{"websiteid":"%s"}', $sourceWebsiteId);
     $this->dispatch($getAllMediaRequest);
     $response = $this->getResponseBody();
     $response = new Response($response);
     $this->assertTrue($response->getSuccess());
     $responseData = $response->getData();
     $this->assertObjectHasAttribute('media', $responseData);
     $this->assertInternalType('array', $responseData->media);
     $this->assertObjectHasAttribute('total', $responseData);
     $expectedSourceMediaTotal = 9;
     $this->assertSame($expectedSourceMediaTotal, $responseData->total);
     foreach ($responseData->media as $media) {
         $this->assertInstanceOf('stdClass', $media);
         $this->assertObjectHasAttribute('websiteId', $media);
         $this->assertObjectHasAttribute('albumId', $media);
         $this->assertSame($sourceWebsiteId, $media->websiteId);
         $this->assertContains($media->albumId, $actualCopiedAlbumIds);
     }
     DirectoryHelper::removeRecursiv($sourceMediaDirectory, $mediaBaseDirectory);
     DirectoryHelper::removeRecursiv($copiedMediaDirectory, $mediaBaseDirectory);
 }
Exemplo n.º 7
0
 /**
  * @test
  * @group integration
  */
 public function exportTemplateSnippetsShouldExportAsExpectedWithSpecifiedName()
 {
     $config = Registry::getConfig();
     $exportDirectoryName = 'test_export_0_templatesnippet';
     $exportBaseDirectory = $config->export->directory;
     $exportDirectory = $exportBaseDirectory . DIRECTORY_SEPARATOR . md5($exportDirectoryName);
     $exportZipFile = $exportBaseDirectory . DIRECTORY_SEPARATOR . md5($exportDirectoryName) . DIRECTORY_SEPARATOR . md5($exportDirectoryName) . '.' . self::EXPORT_FILE_EXTENSION;
     $websiteId = 'SITE-ae6e702f-10ac-4e1e-exmo-307e4b8765db-SITE';
     $templateSnippetIds = array('TPLS-template-snip-pet0-test-000000000021-TPLS', 'TPLS-template-snip-pet0-test-000000000022-TPLS', 'TPLS-template-snip-pet0-test-000000000023-TPLS');
     $requestUri = sprintf('export/templatesnippets/params/%s', \Zend_Json::encode(array('websiteid' => $websiteId, 'ids' => $templateSnippetIds, 'name' => $exportDirectoryName)));
     $this->dispatch($requestUri);
     $response = $this->getValidatedSuccessResponse();
     $responseData = $response->getData();
     $this->assertObjectHasAttribute('url', $responseData);
     $nameDataPart = sprintf('{"name":"%s"}', $exportDirectoryName);
     $this->assertStringEndsWith($nameDataPart, $responseData->url);
     $this->assertTrue(is_dir($exportDirectory));
     $this->assertFileExists($exportZipFile);
     $unzipCommand = sprintf("unzip %s -d %s", $exportZipFile, $exportDirectory);
     if (strstr($unzipCommand, $exportBaseDirectory)) {
         SystemHelper::user_proc_exec($unzipCommand);
         DirectoryHelper::removeRecursiv($exportZipFile, $exportBaseDirectory);
     }
     $testFilesDirectory = $config->test->files->directory;
     $expectedExportTreeFile = $testFilesDirectory . DIRECTORY_SEPARATOR . 'trees' . DIRECTORY_SEPARATOR . 'export' . DIRECTORY_SEPARATOR . 'expected_templatesnippets_export.tree';
     $expectedExportTree = file_get_contents($expectedExportTreeFile);
     $exportDirectoryTree = DirectoryHelper::getRecursiveAsJson($exportDirectory, true);
     $this->assertSame($expectedExportTree, $exportDirectoryTree, "Tree mismatch between export directory tree and expected directory tree");
     DirectoryHelper::removeRecursiv($exportDirectory, $exportBaseDirectory);
 }
Exemplo n.º 8
0
 /**
  * @test
  * @group integration
  */
 public function exportWebsiteShouldCreateExpectedFiles()
 {
     // ARRANGE
     $websiteId = 'SITE-controll-er0e-xpor-t0we-bsite0000001-SITE';
     $config = Registry::getConfig();
     $expectedJsonFilesDirectory = $config->test->json->storage->directory;
     $testFilesDirectory = $config->test->files->directory;
     $expectedExportedPackagesTree = FS::readContentFromFile(FS::joinPath($testFilesDirectory, 'trees', 'export', $websiteId, 'packages.tree'));
     $exportDirectoryName = 'test_export_0_website_with_album';
     $exportBaseDirectory = $config->export->directory;
     $exportDirectory = FS::joinPath($exportBaseDirectory, md5($exportDirectoryName));
     $exportZipFileName = md5($exportDirectoryName) . '.' . self::EXPORT_FILE_EXTENSION;
     $exportZipFile = FS::joinPath($exportDirectory, $exportZipFileName);
     $expectedTemplates = array('TPL-controll-er0e-xpor-t0we-bsite0000001-TPL' => (object) array('id' => 'TPL-controll-er0e-xpor-t0we-bsite0000001-TPL', 'name' => 'template export 1', 'content' => json_encode(array((object) array('abc' => 'def'))), 'pageType' => 'the_page_type_id'), 'TPL-controll-er0e-xpor-t0we-bsite0000002-TPL' => (object) array('id' => 'TPL-controll-er0e-xpor-t0we-bsite0000002-TPL', 'name' => 'template export 2', 'content' => json_encode(array()), 'pageType' => null));
     // ACT
     $this->dispatchWithParams('export/website', array('websiteid' => $websiteId, 'name' => $exportDirectoryName));
     // ASSERT
     $this->getValidatedSuccessResponse();
     $this->assertTrue(is_dir($exportDirectory));
     $this->assertFileExists($exportZipFile);
     $unzipCommand = sprintf("unzip %s -d %s", $exportZipFile, $exportDirectory);
     if (strstr($unzipCommand, $exportBaseDirectory)) {
         SystemHelper::user_proc_exec($unzipCommand);
         DirectoryHelper::removeRecursiv($exportZipFile, $exportBaseDirectory);
     }
     $expectedWebsiteJsonFile = FS::joinPath($expectedJsonFilesDirectory, 'expected_website.json');
     $this->assertFileExists($expectedWebsiteJsonFile);
     $this->assertWebsiteJsonCreatedAsExpected($exportDirectory, $expectedWebsiteJsonFile);
     $expectedWebsiteSettingsJsonFile = FS::joinPath($expectedJsonFilesDirectory, 'expected_export_websitesettings.json');
     $this->assertFileExists($expectedWebsiteSettingsJsonFile);
     $this->assertWebsiteSettingsJsonCreatedAsExpected($exportDirectory, $expectedWebsiteSettingsJsonFile);
     $this->assertTemplateJsonCreatedAsExpected($exportDirectory, $expectedTemplates);
     $exportedPackagesDirectory = FS::joinPath($exportDirectory, 'packages');
     $actualExportedPackagesTree = DirectoryHelper::getRecursiveAsJson($exportedPackagesDirectory, true);
     $this->assertSame($actualExportedPackagesTree, $expectedExportedPackagesTree, "Tree mismatch between export package directory tree and expected package directory tree");
     DirectoryHelper::removeRecursiv($exportDirectory, $exportBaseDirectory);
 }