101 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			101 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
<?php
 | 
						|
/**
 | 
						|
 * Copyright © Magento, Inc. All rights reserved.
 | 
						|
 * See COPYING.txt for license details.
 | 
						|
 */
 | 
						|
namespace Magento\Analytics\Api;
 | 
						|
 | 
						|
use Magento\Analytics\Model\FileInfoManager;
 | 
						|
use Magento\Framework\UrlInterface;
 | 
						|
use Magento\Framework\Webapi\Rest\Request;
 | 
						|
use Magento\Store\Model\StoreManagerInterface;
 | 
						|
use Magento\TestFramework\Helper\Bootstrap;
 | 
						|
use Magento\TestFramework\TestCase\WebapiAbstract;
 | 
						|
 | 
						|
/**
 | 
						|
 * Class LinkProviderTest.
 | 
						|
 *
 | 
						|
 * Checks that api for providing link to encrypted archive works.
 | 
						|
 */
 | 
						|
class LinkProviderTest extends WebapiAbstract
 | 
						|
{
 | 
						|
    const SERVICE_VERSION = 'V1';
 | 
						|
    const SERVICE_NAME = 'analyticsLinkProviderV1';
 | 
						|
    const RESOURCE_PATH = '/V1/analytics/link';
 | 
						|
 | 
						|
    /**
 | 
						|
     * @var \Magento\TestFramework\ObjectManager
 | 
						|
     */
 | 
						|
    protected $objectManager;
 | 
						|
 | 
						|
    /**
 | 
						|
     * @return void
 | 
						|
     */
 | 
						|
    protected function setUp(): void
 | 
						|
    {
 | 
						|
        $this->objectManager = Bootstrap::getObjectManager();
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @magentoApiDataFixture Magento/Analytics/_files/create_link.php
 | 
						|
     */
 | 
						|
    public function testGetAll()
 | 
						|
    {
 | 
						|
        $objectManager = Bootstrap::getObjectManager();
 | 
						|
 | 
						|
        /**
 | 
						|
         * @var $fileInfoManager FileInfoManager
 | 
						|
         */
 | 
						|
        $fileInfoManager = $objectManager->create(FileInfoManager::class);
 | 
						|
 | 
						|
        $storeManager = $objectManager->create(StoreManagerInterface::class);
 | 
						|
 | 
						|
        $fileInfo = $fileInfoManager->load();
 | 
						|
 | 
						|
        $serviceInfo = [
 | 
						|
            'rest' => [
 | 
						|
                'resourcePath' => static::RESOURCE_PATH,
 | 
						|
                'httpMethod' => Request::HTTP_METHOD_GET,
 | 
						|
            ],
 | 
						|
            'soap' => [
 | 
						|
                'service' => static::SERVICE_NAME,
 | 
						|
                'serviceVersion' => static::SERVICE_VERSION,
 | 
						|
                'operation' => static::SERVICE_NAME . 'Get',
 | 
						|
            ],
 | 
						|
        ];
 | 
						|
        if (!$this->isTestBaseUrlSecure()) {
 | 
						|
            try {
 | 
						|
                $this->_webApiCall($serviceInfo);
 | 
						|
            } catch (\Exception $e) {
 | 
						|
                $this->assertStringContainsString(
 | 
						|
                    'Operation allowed only in HTTPS',
 | 
						|
                    $e->getMessage()
 | 
						|
                );
 | 
						|
                return;
 | 
						|
            }
 | 
						|
            $this->fail("Exception 'Operation allowed only in HTTPS' should be thrown");
 | 
						|
        } else {
 | 
						|
            $response = $this->_webApiCall($serviceInfo);
 | 
						|
            $this->assertCount(2, $response);
 | 
						|
            $this->assertEquals(
 | 
						|
                base64_encode($fileInfo->getInitializationVector()),
 | 
						|
                $response['initialization_vector']
 | 
						|
            );
 | 
						|
            $this->assertEquals(
 | 
						|
                $storeManager->getStore()->getBaseUrl(
 | 
						|
                    UrlInterface::URL_TYPE_MEDIA
 | 
						|
                ) . $fileInfo->getPath(),
 | 
						|
                $response['url']
 | 
						|
            );
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @return bool
 | 
						|
     */
 | 
						|
    private function isTestBaseUrlSecure()
 | 
						|
    {
 | 
						|
        return strpos(TESTS_BASE_URL, 'https://') !== false;
 | 
						|
    }
 | 
						|
}
 |