diff --git a/core/modules/ckeditor5/src/Controller/CKEditor5ImageController.php b/core/modules/ckeditor5/src/Controller/CKEditor5ImageController.php index 9d4a6c674e9cf5aacb911a9b4aeee5414dbe05b5..ba6cdce28b584e0cc7a6ccc444e15ab659406d4c 100644 --- a/core/modules/ckeditor5/src/Controller/CKEditor5ImageController.php +++ b/core/modules/ckeditor5/src/Controller/CKEditor5ImageController.php @@ -164,7 +164,7 @@ public function upload(Request $request) { $lock_id = $this->generateLockIdFromFileUri($file_uri); if (!$this->lock->acquire($lock_id)) { - throw new HttpException(503, sprintf('File "%s" is already locked for writing.'), NULL, ['Retry-After' => 1]); + throw new HttpException(503, sprintf('File "%s" is already locked for writing.', $file_uri), NULL, ['Retry-After' => 1]); } // Begin building file entity. diff --git a/core/modules/ckeditor5/tests/src/Functional/ImageUploadAccessTest.php b/core/modules/ckeditor5/tests/src/Functional/ImageUploadAccessTest.php index b6c99ebc132450e497ee0f7d7b4d0b3645fc7dc9..ba239cc17fa7340b133930bac2ddb4257fa49d07 100644 --- a/core/modules/ckeditor5/tests/src/Functional/ImageUploadAccessTest.php +++ b/core/modules/ckeditor5/tests/src/Functional/ImageUploadAccessTest.php @@ -2,6 +2,9 @@ namespace Drupal\Tests\ckeditor5\Functional; +use Drupal\Component\Utility\Crypt; +use Drupal\Core\File\FileSystemInterface; + /** * Test image upload access. * @@ -42,6 +45,15 @@ public function testCkeditor5ImageUploadRoute() { $response = $this->uploadRequest($url, $test_image, 'test.jpg'); $this->assertSame(201, $response->getStatusCode()); + // Ensure lock failures are reported correctly. + $d = 'public://inline-images/test.jpg'; + $f = $this->container->get('file_system')->getDestinationFilename($d, FileSystemInterface::EXISTS_RENAME); + $this->container->get('lock') + ->acquire('file:ckeditor5:' . Crypt::hashBase64($f)); + $response = $this->uploadRequest($url, $test_image, 'test.jpg'); + $this->assertSame(503, $response->getStatusCode()); + $this->assertStringContainsString('File "public://inline-images/test_0.jpg" is already locked for writing.', (string) $response->getBody()); + // Ensure that users without permissions to the text format cannot upload // images. $this->drupalLogout();