header->account = 1; $request->setData('name', 'Test Upload'); if (!\is_dir(__DIR__ . '/temp')) { \mkdir(__DIR__ . '/temp'); } \copy(__DIR__ . '/testFile1.txt', __DIR__ . '/temp/testFile1.txt'); \copy(__DIR__ . '/testFile2.txt', __DIR__ . '/temp/testFile2.txt'); $files = [ [ 'error' => \UPLOAD_ERR_OK, 'type' => 'txt', 'name' => 'testFile1.txt', 'tmp_name' => __DIR__ . '/temp/testFile1.txt', 'size' => \filesize(__DIR__ . '/testFile1.txt'), ], [ 'error' => \UPLOAD_ERR_OK, 'type' => 'txt', 'name' => 'testFile2.txt', 'tmp_name' => __DIR__ . '/temp/testFile2.txt', 'size' => \filesize(__DIR__ . '/testFile2.txt'), ], ]; TestUtils::setMember($request, 'files', $files); $this->module->apiMediaUpload($request, $response); if (\is_dir(__DIR__ . '/temp')) { Directory::delete(__DIR__ . '/temp'); } $media = []; $createdMedia = $response->getDataArray('')['response']; foreach ($createdMedia as $file) { $media[] = $file; } $response = new HttpResponse(); $request = new HttpRequest(); $request->header->account = 1; $request->setData('name', 'Test Collection'); $request->setData('virtualpath', '/'); $request->setData('media-list', \json_encode($media)); $this->module->apiCollectionCreate($request, $response); $collection = $response->getDataArray('')['response']; self::assertEquals('Test Collection', $collection->name); self::assertCount(2, $collection->getSources()); } /** * @covers \Modules\Media\Controller\ApiController */ #[\PHPUnit\Framework\Attributes\Group('module')] public function testApiCollectionCreateInvalid() : void { $response = new HttpResponse(); $request = new HttpRequest(); $request->header->account = 1; $this->module->apiCollectionCreate($request, $response); self::assertEquals(RequestStatusCode::R_400, $response->header->status); } /** * @covers \Modules\Media\Controller\ApiController */ #[\PHPUnit\Framework\Attributes\Group('module')] public function testApiCollectionCreateWithPath() : void { $response = new HttpResponse(); $request = new HttpRequest(); $request->header->account = 1; $request->setData('name', 'Test Collection'); $request->setData('path', '/test/path'); $request->setData('create_directory', true); $this->module->apiCollectionCreate($request, $response); $collection = $response->getDataArray('')['response']; self::assertTrue(\is_dir(__DIR__ . '/../../../Files/test/path')); Directory::delete(__DIR__ . '/../../../Files/test/path'); } /** * @covers \Modules\Media\Controller\ApiController */ #[\PHPUnit\Framework\Attributes\Group('module')] public function testApiCollectionFromMedia() : void { $media = new Media(); $media->createdBy = new NullAccount(1); $media->description = 'desc'; $media->descriptionRaw = 'descRaw'; $media->setPath('some/path'); $media->size = 11; $media->extension = 'png'; $media->name = 'Media for collection'; $id = MediaMapper::create()->execute($media); self::assertGreaterThan(0, $media->id); self::assertEquals($id, $media->id); $collection = $this->module->createMediaCollectionFromMedia('Collection With Media', '', [$media], 1); self::assertEquals('Collection With Media', $collection->name); self::assertCount(1, $collection->getSources()); self::assertInstanceOf( NullCollection::class, $this->module->createMediaCollectionFromMedia('Collection With Media', '', [], 1) ); Directory::delete(__DIR__ . '/../../../Files/test/path'); } }