]> BookStack Code Mirror - bookstack/blobdiff - tests/Uploads/DrawioTest.php
Added better drawing load failure handling
[bookstack] / tests / Uploads / DrawioTest.php
index 080f05d7402f8971db9eff17d0d86459b03124bb..3c208f54d713d43a4c4affca8302e4fe907cfe90 100644 (file)
@@ -12,12 +12,13 @@ class DrawioTest extends TestCase
 
     public function test_get_image_as_base64()
     {
-        $page = Page::first();
+        $page = $this->entities->page();
         $this->asAdmin();
         $imageName = 'first-image.png';
 
         $this->uploadImage($imageName, $page->id);
-        $image = Image::first();
+        /** @var Image $image */
+        $image = Image::query()->first();
         $image->type = 'drawio';
         $image->save();
 
@@ -27,9 +28,29 @@ class DrawioTest extends TestCase
         ]);
     }
 
+    public function test_non_accessible_image_returns_404_error_and_message()
+    {
+        $page = $this->entities->page();
+        $this->asEditor();
+        $imageName = 'non-accessible-image.png';
+
+        $this->uploadImage($imageName, $page->id);
+        /** @var Image $image */
+        $image = Image::query()->first();
+        $image->type = 'drawio';
+        $image->save();
+        $this->permissions->disableEntityInheritedPermissions($page);
+
+        $imageGet = $this->getJson("/images/drawio/base64/{$image->id}");
+        $imageGet->assertNotFound();
+        $imageGet->assertJson([
+            'message' => 'Drawing data could not be loaded. The drawing file might no longer exist or you may not have permission to access it.',
+        ]);
+    }
+
     public function test_drawing_base64_upload()
     {
-        $page = Page::first();
+        $page = $this->entities->page();
         $editor = $this->users->editor();
         $this->actingAs($editor);
 
@@ -57,7 +78,7 @@ class DrawioTest extends TestCase
     public function test_drawio_url_can_be_configured()
     {
         config()->set('services.drawio', 'http://cats.com?dog=tree');
-        $page = Page::first();
+        $page = $this->entities->page();
         $editor = $this->users->editor();
 
         $resp = $this->actingAs($editor)->get($page->getUrl('/edit'));
@@ -67,7 +88,7 @@ class DrawioTest extends TestCase
     public function test_drawio_url_can_be_disabled()
     {
         config()->set('services.drawio', true);
-        $page = Page::first();
+        $page = $this->entities->page();
         $editor = $this->users->editor();
 
         $resp = $this->actingAs($editor)->get($page->getUrl('/edit'));