TemporaryFileControllerTest.php (5178B)
1 <?php 2 3 namespace PartKeepr\UploadedFileBundle\Tests; 4 5 use PartKeepr\CoreBundle\Tests\WebTestCase; 6 use Symfony\Component\HttpFoundation\File\UploadedFile; 7 8 class TemporaryFileControllerTest extends WebTestCase 9 { 10 public function setUp() 11 { 12 $this->loadFixtures([]); 13 } 14 15 public function testUploadAction() 16 { 17 $client = static::makeClient(true); 18 19 $file = __DIR__.'/Fixtures/files/uploadtest.png'; 20 $originalFilename = 'uploadtest.png'; 21 $mimeType = 'image/png'; 22 $extension = 'png'; 23 24 $image = new UploadedFile( 25 $file, 26 $originalFilename, 27 $mimeType, 28 filesize($file) 29 ); 30 31 $client->request( 32 'POST', 33 '/api/temp_uploaded_files/upload', 34 [], 35 ['userfile' => $image] 36 ); 37 38 $this->assertEquals(200, $client->getResponse()->getStatusCode()); 39 $response = json_decode($client->getResponse()->getContent()); 40 41 $this->assertObjectHasAttribute('success', $response); 42 $this->assertObjectHasAttribute('image', $response); 43 $this->assertObjectHasAttribute('response', $response); 44 45 $this->assertEquals(true, $response->success); 46 47 $propertiesToCheck = [ 48 '@context', 49 '@id', 50 '@type', 51 'originalFilename', 52 'size', 53 'type', 54 'filename', 55 'mimeType', 56 'extension', 57 'description', 58 'legacyExtension', 59 ]; 60 61 foreach ($propertiesToCheck as $property) { 62 $this->assertObjectHasAttribute($property, $response->image); 63 $this->assertObjectHasAttribute($property, $response->response); 64 } 65 66 $this->assertEquals(filesize($file), $response->image->size); 67 $this->assertEquals(filesize($file), $response->response->size); 68 69 $this->assertEquals($originalFilename, $response->image->originalFilename); 70 $this->assertEquals($originalFilename, $response->response->originalFilename); 71 72 $this->assertEquals($mimeType, $response->image->mimeType); 73 $this->assertEquals($mimeType, $response->response->mimeType); 74 75 $this->assertEquals($extension, $response->image->extension); 76 $this->assertEquals($extension, $response->response->extension); 77 78 $this->assertEquals('tempfile', $response->image->type); 79 $this->assertEquals('tempfile', $response->response->type); 80 81 $property = '@type'; 82 83 $this->assertEquals('TempUploadedFile', $response->image->$property); 84 $this->assertEquals('TempUploadedFile', $response->response->$property); 85 } 86 87 public function testURLUploadAction() 88 { 89 $client = static::makeClient(true); 90 91 $client->request( 92 'POST', 93 '/api/temp_uploaded_files/upload', 94 ['url' => 'https://www.partkeepr.org/images/pklogo.svg'] 95 ); 96 97 $response = json_decode($client->getResponse()->getContent()); 98 99 $this->assertObjectHasAttribute('success', $response); 100 $this->assertObjectHasAttribute('image', $response); 101 $this->assertObjectHasAttribute('response', $response); 102 } 103 104 public function testUploadException() 105 { 106 $client = static::makeClient(true); 107 108 $client->request( 109 'POST', 110 '/api/temp_uploaded_files/upload', 111 [] 112 ); 113 114 $response = json_decode($client->getResponse()->getContent()); 115 116 $attribute = '@type'; 117 118 $this->assertObjectHasAttribute($attribute, $response); 119 $this->assertEquals('Error', $response->$attribute); 120 } 121 122 public function testWebcamUploadAction() 123 { 124 $client = static::makeClient(true); 125 126 $file = __DIR__.'/Fixtures/files/uploadtest.png'; 127 $mimeType = 'image/png'; 128 $extension = 'png'; 129 130 $contents = file_get_contents($file); 131 132 $fileString = 'data:image/png;base64,'.base64_encode($contents); 133 134 $client->request( 135 'POST', 136 '/api/temp_uploaded_files/webcamUpload', 137 [], 138 [], 139 [], 140 $fileString 141 ); 142 143 $response = json_decode($client->getResponse()->getContent()); 144 145 $propertiesToCheck = [ 146 '@context', 147 '@id', 148 '@type', 149 'originalFilename', 150 'size', 151 'type', 152 'filename', 153 'mimeType', 154 'extension', 155 'description', 156 'legacyExtension', 157 ]; 158 159 foreach ($propertiesToCheck as $property) { 160 $this->assertObjectHasAttribute($property, $response); 161 } 162 163 $this->assertEquals(filesize($file), $response->size); 164 $this->assertEquals($mimeType, $response->mimeType); 165 $this->assertEquals('webcam.png', $response->originalFilename); 166 $this->assertEquals($extension, $response->extension); 167 $this->assertEquals('tempfile', $response->type); 168 169 $property = '@type'; 170 $this->assertEquals('TempUploadedFile', $response->$property); 171 } 172 173 public function testGetFile() 174 { 175 } 176 }