function ImageUploadAccessTest::testCkeditor5ImageUploadRoute

Same name in other branches
  1. 9 core/modules/ckeditor5/tests/src/Functional/ImageUploadAccessTest.php \Drupal\Tests\ckeditor5\Functional\ImageUploadAccessTest::testCkeditor5ImageUploadRoute()
  2. 11.x core/modules/ckeditor5/tests/src/Functional/ImageUploadAccessTest.php \Drupal\Tests\ckeditor5\Functional\ImageUploadAccessTest::testCkeditor5ImageUploadRoute()

Test access to the CKEditor 5 image upload controller.

File

core/modules/ckeditor5/tests/src/Functional/ImageUploadAccessTest.php, line 21

Class

ImageUploadAccessTest
Test image upload access.

Namespace

Drupal\Tests\ckeditor5\Functional

Code

public function testCkeditor5ImageUploadRoute() : void {
    $this->createBasicFormat();
    $url = $this->getUploadUrl();
    $test_image = file_get_contents(current($this->getTestFiles('image'))->uri);
    // With no text editor, expect a 404.
    $response = $this->uploadRequest($url, $test_image, 'test.jpg');
    $this->assertSame(404, $response->getStatusCode());
    $editor = $this->createEditorWithUpload([
        'status' => FALSE,
    ]);
    // Ensure that images cannot be uploaded when image upload is disabled.
    $response = $this->uploadRequest($url, $test_image, 'test.jpg');
    $this->assertSame(403, $response->getStatusCode());
    $editor->setImageUploadSettings([
        'status' => TRUE,
        'scheme' => 'public',
        'directory' => 'inline-images',
        'max_size' => '',
        'max_dimensions' => [
            'width' => 0,
            'height' => 0,
        ],
    ])
        ->save();
    $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, FileExists::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();
    $response = $this->uploadRequest($url, $test_image, 'test.jpg');
    $this->assertSame(403, $response->getStatusCode());
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.