file_encrypt-8.x-1.x-dev/tests/src/Functional/ImageFileUploadTest.php

tests/src/Functional/ImageFileUploadTest.php
<?php

namespace Drupal\Tests\file_encrypt\Functional;

use Drupal\Component\Utility\UrlHelper;
use Drupal\field\Entity\FieldConfig;
use Drupal\field\Entity\FieldStorageConfig;
use Drupal\file\Entity\File;
use Drupal\image\Entity\ImageStyle;
use Drupal\node\Entity\Node;
use Drupal\node\Entity\NodeType;

/**
 * Tests uploading images as well as viewing files on the rendered entity.
 *
 * @group file_encrypt
 */
class ImageFileUploadTest extends FunctionalTestBase {

  /**
   * {@inheritdoc}
   */
  protected function setUp(): void {
    parent::setUp();

    NodeType::create([
      'type' => 'page',
    ])->save();

    FieldStorageConfig::create([
      'entity_type' => 'node',
      'field_name' => 'field_test_image',
      'type' => 'image',
      'settings' => [
        'uri_scheme' => 'encrypt',
      ],
      'third_party_settings' => [
        'file_encrypt' => [
          'encryption_profile' => 'encryption_profile_1',
        ],
      ],
    ])->save();

    FieldConfig::create([
      'entity_type' => 'node',
      'field_name' => 'field_test_image',
      'bundle' => 'page',
      'settings' => [
        'file_directory' => 'encryption_profile_1',
        'file_extensions' => 'png',
      ],
    ])->save();

    $this->drupalGetTestFiles('text');

    $form_display = \Drupal::service('entity_display.repository')->getFormDisplay('node', 'page', 'default');
    $form_display->setComponent('field_test_image', [
      'type' => 'image_image',
    ]);
    $form_display->save();

    $style = ImageStyle::create([
      'name' => 'test',
      'label' => 'Test',
      'effects' => [],
    ]);
    $effect = [
      'id' => 'image_crop',
      'data' => [
        'width' => 200,
        'height' => 200,
      ],
      'weight' => 0,
    ];
    $style->addImageEffect($effect);
    $style->save();

    $view_display = \Drupal::service('entity_display.repository')->getViewDisplay('node', 'page', 'default');
    $view_display->setComponent('field_test_image', [
      'type' => 'image',
      'settings' => [
        'image_style' => 'test',
      ],
    ]);
    $view_display->save();
  }

  /**
   * Tests uploading an actual file.
   */
  public function testImageUpload() {
    $account = $this->drupalCreateUser(['create page content']);
    $this->drupalLogin($account);

    $text_files = $this->drupalGetTestFiles('image');
    $image_file = File::create((array) current($text_files));
    $image_file->getFileUri();

    $assert = $this->assertSession();
    $this->drupalGet('node/add/page');
    $assert->statusCodeEquals(200);
    $edit = [
      'title[0][value]' => 'Test title',
      'files[field_test_image_0]' => \Drupal::service('file_system')->realpath($image_file->getFileUri()),
    ];
    $this->submitForm($edit, 'Save');
    $this->submitForm([
      'field_test_image[0][alt]' => 'Alternative text',
    ], 'Save');

    // Ensure the file was saved.
    $nodes = Node::loadMultiple();
    $this->assertCount(1, $nodes);
    $last_node = end($nodes);
    $this->assertEquals('encrypt://encryption_profile_1/image-test_0.png', $last_node->field_test_image->entity->getFileUri());

    // Ensure the file was visible.
    $node = $this->getSession()->getPage()->find('css', 'img');
    $this->assertNotNull($node);
    $image_src = $node->getAttribute('src');
    $this->assertStringContainsString('/encrypt/files/styles/test/encrypt/encryption_profile_1/image-test_0.png', $image_src);

    // Ensure the image is actually 200x200 pixes wide.
    $parse_result = UrlHelper::parse($image_src);
    $this->drupalGet($parse_result['path'], ['query' => $parse_result['query']]);
    $this->assertSession()->statusCodeEquals(200);
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc