162 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			162 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
<?php
 | 
						|
/**
 | 
						|
 * Copyright © Magento, Inc. All rights reserved.
 | 
						|
 * See COPYING.txt for license details.
 | 
						|
 *
 | 
						|
 */
 | 
						|
 | 
						|
namespace Magento\Integration\Controller\Adminhtml;
 | 
						|
 | 
						|
use Magento\Framework\App\Request\Http as HttpRequest;
 | 
						|
use Magento\TestFramework\Bootstrap;
 | 
						|
 | 
						|
/**
 | 
						|
 * \Magento\Integration\Controller\Adminhtml\Integration
 | 
						|
 *
 | 
						|
 * @magentoDataFixture Magento/Integration/_files/integration_all_permissions.php
 | 
						|
 * @magentoAppArea adminhtml
 | 
						|
 * @magentoDbIsolation enabled
 | 
						|
 */
 | 
						|
class IntegrationTest extends \Magento\TestFramework\TestCase\AbstractBackendController
 | 
						|
{
 | 
						|
    /** @var \Magento\Integration\Model\Integration */
 | 
						|
    private $_integration;
 | 
						|
 | 
						|
    /**
 | 
						|
     * @inheritDoc
 | 
						|
     */
 | 
						|
    protected function setUp(): void
 | 
						|
    {
 | 
						|
        parent::setUp();
 | 
						|
        /** @var $integration \Magento\Integration\Model\Integration */
 | 
						|
        $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
 | 
						|
        $integration = $objectManager->create(\Magento\Integration\Model\Integration::class);
 | 
						|
        $this->_integration = $integration->load('Fixture Integration', 'name');
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Test view page.
 | 
						|
     */
 | 
						|
    public function testIndexAction()
 | 
						|
    {
 | 
						|
        $this->dispatch('backend/admin/integration/index');
 | 
						|
        $response = $this->getResponse()->getBody();
 | 
						|
 | 
						|
        $this->assertStringContainsString('Integrations', $response);
 | 
						|
        $this->assertEquals(
 | 
						|
            1,
 | 
						|
            \Magento\TestFramework\Helper\Xpath::getElementsCountForXpath(
 | 
						|
                '//*[@id="integrationGrid"]',
 | 
						|
                $response
 | 
						|
            )
 | 
						|
        );
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Test creation form.
 | 
						|
     */
 | 
						|
    public function testNewAction()
 | 
						|
    {
 | 
						|
        $this->dispatch('backend/admin/integration/new');
 | 
						|
        $response = $this->getResponse()->getBody();
 | 
						|
 | 
						|
        $this->assertEquals('new', $this->getRequest()->getActionName());
 | 
						|
        $this->assertStringContainsString('entry-edit form-inline', $response);
 | 
						|
        $this->assertStringContainsString('New Integration', $response);
 | 
						|
        $this->assertEquals(
 | 
						|
            1,
 | 
						|
            \Magento\TestFramework\Helper\Xpath::getElementsCountForXpath(
 | 
						|
                '//*[@id="integration_properties_base_fieldset"]',
 | 
						|
                $response
 | 
						|
            )
 | 
						|
        );
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Test update form.
 | 
						|
     */
 | 
						|
    public function testEditAction()
 | 
						|
    {
 | 
						|
        $integrationId = $this->_integration->getId();
 | 
						|
        $this->getRequest()->setParam('id', $integrationId);
 | 
						|
        $this->dispatch('backend/admin/integration/edit');
 | 
						|
        $response = $this->getResponse()->getBody();
 | 
						|
        $saveLink = 'integration/save/';
 | 
						|
 | 
						|
        $this->assertStringContainsString('entry-edit form-inline', $response);
 | 
						|
        $this->assertStringContainsString(
 | 
						|
            'Edit "' . $this->_integration->getName() . '" Integration',
 | 
						|
            $response
 | 
						|
        );
 | 
						|
        $this->assertStringContainsString($saveLink, $response);
 | 
						|
        $this->assertEquals(
 | 
						|
            1,
 | 
						|
            \Magento\TestFramework\Helper\Xpath::getElementsCountForXpath(
 | 
						|
                '//*[@id="integration_properties_base_fieldset"]',
 | 
						|
                $response
 | 
						|
            )
 | 
						|
        );
 | 
						|
        $this->assertEquals(
 | 
						|
            1,
 | 
						|
            \Magento\TestFramework\Helper\Xpath::getElementsCountForXpath(
 | 
						|
                '//*[@id="integration_edit_tabs_info_section_content"]',
 | 
						|
                $response
 | 
						|
            )
 | 
						|
        );
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Test saving.
 | 
						|
     */
 | 
						|
    public function testSaveActionUpdateIntegration()
 | 
						|
    {
 | 
						|
        $integrationId = $this->_integration->getId();
 | 
						|
        $integrationName = $this->_integration->getName();
 | 
						|
        $this->getRequest()->setParam('id', $integrationId);
 | 
						|
        $url = 'http://magento.ll/endpoint_url';
 | 
						|
        $this->getRequest()->setMethod(HttpRequest::METHOD_POST);
 | 
						|
        $this->getRequest()->setPostValue(
 | 
						|
            [
 | 
						|
                'name' => $integrationName,
 | 
						|
                'email' => 'test@magento.com',
 | 
						|
                'authentication' => '1',
 | 
						|
                'endpoint' => $url,
 | 
						|
                'current_password' => Bootstrap::ADMIN_PASSWORD,
 | 
						|
            ]
 | 
						|
        );
 | 
						|
        $this->dispatch('backend/admin/integration/save');
 | 
						|
        $this->assertSessionMessages(
 | 
						|
            $this->equalTo(["The integration '{$integrationName}' has been saved."]),
 | 
						|
            \Magento\Framework\Message\MessageInterface::TYPE_SUCCESS
 | 
						|
        );
 | 
						|
        $this->assertRedirect($this->stringContains('backend/admin/integration/index/'));
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Test saving.
 | 
						|
     */
 | 
						|
    public function testSaveActionNewIntegration()
 | 
						|
    {
 | 
						|
        $url = 'http://magento.ll/endpoint_url';
 | 
						|
        // phpcs:ignore Magento2.Security.InsecureFunction
 | 
						|
        $integrationName = md5(rand());
 | 
						|
        $this->getRequest()->setMethod(HttpRequest::METHOD_POST);
 | 
						|
        $this->getRequest()->setPostValue(
 | 
						|
            [
 | 
						|
                'name' => $integrationName,
 | 
						|
                'email' => 'test@magento.com',
 | 
						|
                'authentication' => '1',
 | 
						|
                'endpoint' => $url,
 | 
						|
                'current_password' => Bootstrap::ADMIN_PASSWORD,
 | 
						|
            ]
 | 
						|
        );
 | 
						|
        $this->dispatch('backend/admin/integration/save');
 | 
						|
 | 
						|
        $this->assertSessionMessages(
 | 
						|
            $this->equalTo(["The integration '{$integrationName}' has been saved."]),
 | 
						|
            \Magento\Framework\Message\MessageInterface::TYPE_SUCCESS
 | 
						|
        );
 | 
						|
        $this->assertRedirect($this->stringContains('backend/admin/integration/index/'));
 | 
						|
    }
 | 
						|
}
 |