]> BookStack Code Mirror - bookstack/blobdiff - tests/Uploads/ImageTest.php
Allow uploads of files containing dots in filename. Closes BookStackApp/BookStack...
[bookstack] / tests / Uploads / ImageTest.php
index 9b0e004b1f7a3cbe8718edc382eb40cbcfdcc581..55d580e46eab38b4d791419d2c0e274bf51164e9 100644 (file)
@@ -165,7 +165,7 @@ class ImageTest extends TestCase
         $this->assertFalse(file_exists(public_path($relPath)), 'Uploaded php file was uploaded but should have been stopped');
     }
 
-    public function test_files_with_double_extensions_cannot_be_uploaded()
+    public function test_files_with_double_extensions_will_get_sanitized()
     {
         $page = Page::first();
         $admin = $this->getAdmin();
@@ -177,9 +177,17 @@ class ImageTest extends TestCase
 
         $file = $this->newTestImageFromBase64('bad-phtml-png.base64', $fileName);
         $upload = $this->withHeader('Content-Type', 'image/png')->call('POST', '/images/gallery', ['uploaded_to' => $page->id], [], ['file' => $file], []);
-        $upload->assertStatus(302);
+        $upload->assertStatus(200);
+
+        $lastImage = Image::query()->latest('id')->first();
+        $newFileName = explode('.', basename($lastImage->path))[0];
+
+        $this->assertEquals($lastImage->name, 'bad-phtml.png');
+        $this->assertFalse(file_exists(public_path($relPath)), 'Uploaded image file name was not stripped of dots');
+
+        $this->assertTrue(strlen($newFileName) > 0, 'File name was reduced to nothing');
 
-        $this->assertFalse(file_exists(public_path($relPath)), 'Uploaded double extension file was uploaded but should have been stopped');
+        $this->deleteImage($lastImage->path);
     }
 
     public function test_url_entities_removed_from_filenames()
@@ -428,4 +436,4 @@ class ImageTest extends TestCase
         $this->deleteImage($relPath);
     }
 
-}
\ No newline at end of file
+}