Spamworldpro Mini Shell
Spamworldpro


Server : Apache
System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64
User : corals ( 1002)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/corals/old/vendor/magento/module-aws-s3/Test/Mftf/Helper/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/old/vendor/magento/module-aws-s3/Test/Mftf/Helper/S3FileAssertions.php
<?php
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
declare(strict_types=1);

namespace Magento\AwsS3\Test\Mftf\Helper;

use Aws\S3\S3Client;
use Codeception\Lib\ModuleContainer;
use League\Flysystem\AwsS3V3\AwsS3V3Adapter;
use League\Flysystem\PathPrefixer;
use Magento\AwsS3\Driver\AwsS3;
use Magento\FunctionalTestingFramework\Helper\Helper;
use Magento\Framework\Filesystem\DriverInterface;
use Magento\RemoteStorage\Driver\Adapter\MetadataProvider;

/**
 * Class for MFTF helpers for doing file assertions using S3.
 */
class S3FileAssertions extends Helper
{
    /**
     * @var DriverInterface $driver
     */
    private $driver;

    /**
     * Call the parent constructor then create the AwsS3 driver from environment variables
     *
     * @param ModuleContainer $moduleContainer
     * @param array|null $config
     * @return void
     */
    public function __construct(ModuleContainer $moduleContainer, ?array $config = null)
    {
        parent::__construct($moduleContainer, $config);

        $region = getenv('REMOTE_STORAGE_AWSS3_REGION');
        $prefix = getenv('REMOTE_STORAGE_AWSS3_PREFIX');
        $bucket = getenv('REMOTE_STORAGE_AWSS3_BUCKET');
        $accessKey = getenv('REMOTE_STORAGE_AWSS3_ACCESS_KEY');
        $secretKey = getenv('REMOTE_STORAGE_AWSS3_SECRET_KEY');

        $config = [
            'version' => 'latest',
            'credentials' => [
                'key' => $accessKey,
                'secret' => $secretKey
            ],
            'bucket' => $bucket,
            'region' => $region
        ];

        if (empty($config['credentials']['key']) || empty($config['credentials']['secret'])) {
            unset($config['credentials']);
        }

        $client = new S3Client($config);
        $adapter = new AwsS3V3Adapter($client, $config['bucket'], $prefix);
        $prefixer = new PathPrefixer($prefix);
        $objectUrl = $client->getObjectUrl($config['bucket'], ltrim($prefixer->prefixPath('.'), '/'));
        $metadataProvider = new MetadataProvider($adapter, new DummyMetadataCache());
        $s3Driver = new AwsS3($adapter, new MockTestLogger(), $objectUrl, $metadataProvider);

        $this->driver = $s3Driver;
    }

    /**
     * Create a file in the S3 bucket
     *
     * @param string $filePath
     * @param string $text
     * @return void
     *
     * @throws \Magento\Framework\Exception\FileSystemException
     */
    public function createTextFile($filePath, $text): void
    {
        $this->driver->filePutContents($filePath, $text);
    }

    /**
     * Delete a file from the S3 bucket if it exists
     *
     * @param string $filePath
     * @return void
     *
     * @throws \Magento\Framework\Exception\FileSystemException
     */
    public function deleteFileIfExists($filePath): void
    {
        if ($this->driver->isExists($filePath)) {
            $this->driver->deleteFile($filePath);
        }
    }

    /**
     * Copy source into destination
     *
     * @param string $source
     * @param string $destination
     * @return void
     *
     * @throws \Magento\Framework\Exception\FileSystemException
     */
    public function copy($source, $destination): void
    {
        $this->driver->copy($source, $destination);
    }

    /**
     * Copy file from the local source into AWS S3 $destination
     *
     * @param string $source local FS path to the file which should be copied
     * @param string $destination path on AWS S3 where the file should be paste
     * @return void
     *
     * @throws \Magento\Framework\Exception\FileSystemException
     */
    public function copyFromLocal($source, $destination): void
    {
        $this->driver->filePutContents(
            $destination,
            file_get_contents((substr($source, 0, 1) === '/') ? $source : MAGENTO_BP . '/' . $source)
        );
    }

    /**
     * Create directory in the S3 bucket
     *
     * @param string $path
     * @param int $permissions
     * @return void
     *
     * @throws \Magento\Framework\Exception\FileSystemException
     */
    public function createDirectory($path, $permissions = 0777): void
    {
        $this->driver->createDirectory($path, $permissions);
    }

    /**
     * Recursive delete directory in the S3 bucket
     *
     * @param string $path
     * @return void
     *
     * @throws \Magento\Framework\Exception\FileSystemException
     */
    public function deleteDirectory($path): void
    {
        if ($this->driver->isDirectory($path)) {
            $this->driver->deleteDirectory($path);
        }
    }

    /**
     * Assert a file exists on the remote storage system
     *
     * @param string $filePath
     * @param string $message
     * @return void
     *
     * @throws \Magento\Framework\Exception\FileSystemException
     */
    public function assertFileExists($filePath, $message = ''): void
    {
        $this->assertTrue($this->driver->isExists($filePath), "Failed asserting $filePath exists. " . $message);
    }

    /**
     * Asserts that a file with the given glob pattern exists in the given path on the remote storage system
     *
     * @param string $path
     * @param string $pattern
     * @param string $message
     *
     * @throws \Magento\Framework\Exception\FileSystemException
     */
    public function assertGlobbedFileExists($path, $pattern, $message = ''): void
    {
        $files = $this->driver->search($pattern, $path);
        $this->assertNotEmpty(
            $files,
            "Failed asserting file matching glob pattern \"$pattern\" at location \"$path\" is not empty. " . $message
        );
    }

    /**
     * Asserts that a directory exists on the remote storage system
     *
     * @param string $path
     * @param string $message
     * @return void
     *
     * @throws \Magento\Framework\Exception\FileSystemException
     */
    public function assertDirectoryExists($path, $message = ''): void
    {
        $this->assertTrue($this->driver->isDirectory($path), "Failed asserting $path exists. " . $message);
    }

    /**
     * Asserts that a directory does not exist on the remote storage system
     *
     * @param string $path
     * @param string $message
     * @return void
     *
     * @throws \Magento\Framework\Exception\FileSystemException
     */
    public function assertDirectoryDoesNotExist($path, $message = ''): void
    {
        $this->assertFalse($this->driver->isDirectory($path), "Failed asserting $path does not exist. " . $message);
    }

    /**
     * Assert a file does not exist on the remote storage system
     *
     * @param string $filePath
     * @param string $message
     * @return void
     *
     * @throws \Magento\Framework\Exception\FileSystemException
     */
    public function assertFileDoesNotExist($filePath, $message = ''): void
    {
        $this->assertFalse($this->driver->isExists($filePath), $message);
    }

    /**
     * Assert a file on the remote storage system has no contents
     *
     * @param string $filePath
     * @param string $message
     * @return void
     *
     * @throws \Magento\Framework\Exception\FileSystemException
     */
    public function assertFileEmpty($filePath, $message = ''): void
    {
        $this->assertEmpty(
            $this->driver->fileGetContents($filePath),
            "Failed asserting $filePath is empty. " . $message
        );
    }

    /**
     * Assert a file on the remote storage system is not empty
     *
     * @param string $filePath
     * @param string $message
     * @return void
     *
     * @throws \Magento\Framework\Exception\FileSystemException
     */
    public function assertFileNotEmpty($filePath, $message = ''): void
    {
        $this->assertNotEmpty(
            $this->driver->fileGetContents($filePath),
            "Failed asserting $filePath is not empty. " . $message
        );
    }

    /**
     * Assert a file on the remote storage system contains a given string
     *
     * @param string $filePath
     * @param string $text
     * @param string $message
     * @return void
     *
     * @throws \Magento\Framework\Exception\FileSystemException
     */
    public function assertFileContainsString($filePath, $text, $message = ''): void
    {
        $this->assertStringContainsString(
            $text,
            $this->driver->fileGetContents($filePath),
            "Failed asserting $filePath contains $text. " . $message
        );
    }

    /**
     * Asserts that a file with the given glob pattern at the given path
     * on the remote storage system contains a given string
     *
     * @param string $path
     * @param string $pattern
     * @param string $text
     * @param int $fileIndex
     * @param string $message
     * @return void
     *
     * @throws \Magento\Framework\Exception\FileSystemException
     */
    public function assertGlobbedFileContainsString($path, $pattern, $text, $fileIndex = 0, $message = ''): void
    {
        $files = $this->driver->search($pattern, $path);
        $this->assertStringContainsString(
            $text,
            $this->driver->fileGetContents($files[$fileIndex] ?? ''),
            "Failed asserting file of index \"$fileIndex\" matching glob pattern \"$pattern\""
            . " at location \"$path\" contains $text. " . $message
        );
    }

    /**
     * Assert a file on the remote storage system does not contain a given string
     *
     * @param string $filePath
     * @param string $text
     * @param string $message
     * @return void
     *
     * @throws \Magento\Framework\Exception\FileSystemException
     */
    public function assertFileDoesNotContainString($filePath, $text, $message = ''): void
    {
        $this->assertStringNotContainsString(
            $text,
            $this->driver->fileGetContents($filePath),
            "Failed asserting $filePath does not contain $text. " . $message
        );
    }

    /**
     * Asserts that a directory on the remote storage system is empty
     *
     * @param string $path
     * @param string $message
     * @return void
     *
     * @throws \Magento\Framework\Exception\FileSystemException
     */
    public function assertDirectoryEmpty($path, $message = ''): void
    {
        $this->assertEmpty($this->driver->readDirectory($path), "Failed asserting $path is empty. " . $message);
    }

    /**
     * Asserts that a directory on the remote storage system is not empty
     *
     * @param string $path
     * @param string $message
     * @return void
     *
     * @throws \Magento\Framework\Exception\FileSystemException
     */
    public function assertDirectoryNotEmpty($path, $message = ''): void
    {
        $this->assertNotEmpty($this->driver->readDirectory($path), "Failed asserting $path is not empty. " . $message);
    }
}

Spamworldpro Mini