partkeepr

fork of partkeepr
git clone https://git.e1e0.net/partkeepr.git
Log | Files | Refs | Submodules | README | LICENSE

commit 06548535750d8c6c33693b355bbd1e19ac37d36d
parent 2027845663d26fcc7db2b3a0397c56d9dd60743b
Author: Felicitus <felicitus@felicitus.org>
Date:   Sun, 13 Sep 2015 13:26:16 +0200

Refactored upload for new DunglasApiBundle version, added unit test for uploading

Diffstat:
Msrc/PartKeepr/ImageBundle/Response/TemporaryImageUploadResponse.php | 3---
Msrc/PartKeepr/UploadedFileBundle/Controller/FileController.php | 4++--
Msrc/PartKeepr/UploadedFileBundle/Controller/TemporaryFileController.php | 16++++++++++++----
Asrc/PartKeepr/UploadedFileBundle/Tests/UploadTest.php | 82+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 96 insertions(+), 9 deletions(-)

diff --git a/src/PartKeepr/ImageBundle/Response/TemporaryImageUploadResponse.php b/src/PartKeepr/ImageBundle/Response/TemporaryImageUploadResponse.php @@ -1,9 +1,6 @@ <?php namespace PartKeepr\ImageBundle\Response; - -use PartKeepr\ImageBundle\Entity\TempImage; - class TemporaryImageUploadResponse { /** diff --git a/src/PartKeepr/UploadedFileBundle/Controller/FileController.php b/src/PartKeepr/UploadedFileBundle/Controller/FileController.php @@ -2,11 +2,11 @@ namespace PartKeepr\UploadedFileBundle\Controller; use Doctrine\ORM\EntityManager; -use Nelmio\ApiDocBundle\Tests\Fixtures\Controller\ResourceController; use PartKeepr\UploadedFileBundle\Entity\UploadedFile; +use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\HttpFoundation\Response; -abstract class FileController extends ResourceController +abstract class FileController extends Controller { /** * Returns the full path for the file diff --git a/src/PartKeepr/UploadedFileBundle/Controller/TemporaryFileController.php b/src/PartKeepr/UploadedFileBundle/Controller/TemporaryFileController.php @@ -1,6 +1,8 @@ <?php namespace PartKeepr\UploadedFileBundle\Controller; +use Dunglas\ApiBundle\Action\ActionUtilTrait; +use Dunglas\ApiBundle\Api\ResourceInterface; use FOS\RestBundle\Controller\Annotations\RequestParam; use FOS\RestBundle\Controller\Annotations\View; use Nelmio\ApiDocBundle\Annotation\ApiDoc; @@ -14,10 +16,12 @@ use Symfony\Component\HttpFoundation\Response; class TemporaryFileController extends FileController { + use ActionUtilTrait; + /** * Handles a temporary file upload * - * @RequestParam(name="url",description="An URL where the file is located") + * @RequestParam(name="url",description="An URL where the file is located",strict=false) * @ApiDoc(section="file",output="PartKeepr\UploadedFileBundleBundle\Response\TemporaryFileUploadResponse") * @View() * @@ -47,11 +51,15 @@ class TemporaryFileController extends FileController $this->getDoctrine()->getManager()->persist($uploadedFile); $this->getDoctrine()->getManager()->flush(); - $resource = $this->getResource($request); + /** + * @var ResourceInterface $resourceType + */ + list($resourceType) = $this->extractAttributes($request); + $serializedData = $this->get('serializer')->normalize( $uploadedFile, - 'json-ld', - $resource->getNormalizationContext() + 'jsonld', + $resourceType->getNormalizationContext() ); return new JsonResponse(new TemporaryImageUploadResponse($serializedData)); diff --git a/src/PartKeepr/UploadedFileBundle/Tests/UploadTest.php b/src/PartKeepr/UploadedFileBundle/Tests/UploadTest.php @@ -0,0 +1,81 @@ +<?php +namespace PartKeepr\UploadedFileBundle\Tests; + + +use Liip\FunctionalTestBundle\Test\WebTestCase; +use Symfony\Component\HttpFoundation\File\UploadedFile; + +class UploadTest extends WebTestCase +{ + public function testUploadAction() + { + $client = static::createClient(); + + $file = __DIR__."/Fixtures/files/uploadtest.png"; + $originalFilename = 'uploadtest.png'; + $mimeType = "image/png"; + $extension = "png"; + + $image = new UploadedFile( + $file, + $originalFilename, + $mimeType, + filesize($file) + ); + + $client->request( + 'POST', + '/api/temp_uploaded_files/upload', + array(), + array('userfile' => $image) + ); + + $response = json_decode($client->getResponse()->getContent()); + + $this->assertObjectHasAttribute("success", $response); + $this->assertObjectHasAttribute("image", $response); + $this->assertObjectHasAttribute("response", $response); + + $this->assertEquals(true, $response->success); + + $propertiesToCheck = array( + "@context", + "@id", + "@type", + "originalFilename", + "size", + "type", + "filename", + "mimeType", + "extension", + "description", + "legacyExtension", + ); + + foreach ($propertiesToCheck as $property) { + $this->assertObjectHasAttribute($property, $response->image); + $this->assertObjectHasAttribute($property, $response->response); + } + + $this->assertEquals(filesize($file), $response->image->size); + $this->assertEquals(filesize($file), $response->response->size); + + $this->assertEquals($originalFilename, $response->image->originalFilename); + $this->assertEquals($originalFilename, $response->response->originalFilename); + + $this->assertEquals($mimeType, $response->image->mimeType); + $this->assertEquals($mimeType, $response->response->mimeType); + + $this->assertEquals($extension, $response->image->extension); + $this->assertEquals($extension, $response->response->extension); + + $this->assertEquals("tempfile", $response->image->type); + $this->assertEquals("tempfile", $response->response->type); + + $property = "@type"; + + $this->assertEquals("TempUploadedFile", $response->image->$property); + $this->assertEquals("TempUploadedFile", $response->response->$property); + + } +}+ \ No newline at end of file