magento2-docker/dev/tests/api-functional/testsuite/Magento/Integration/Model/IntegrationTest.php

111 lines
4.0 KiB
PHP
Executable File

<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Integration\Model;
use Magento\Framework\App\ObjectManager;
use Magento\Integration\Api\OauthServiceInterface;
use Magento\TestFramework\Helper\Bootstrap;
use Magento\TestFramework\Authentication\OauthHelper;
class IntegrationTest extends \Magento\TestFramework\TestCase\WebapiAbstract
{
/** @var \Magento\Integration\Model\Integration */
protected $integration;
protected function setUp(): void
{
$objectManager = Bootstrap::getObjectManager();
/** @var $integrationService \Magento\Integration\Api\IntegrationServiceInterface */
$integrationService = $objectManager->get(\Magento\Integration\Api\IntegrationServiceInterface::class);
$params = [
'all_resources' => true,
'integration_id' => 1,
'status' => Integration::STATUS_ACTIVE,
'name' => 'Test Integration1'
];
$this->integration = $integrationService->update($params);
parent::setUp();
}
protected function tearDown(): void
{
$this->integration = null;
OauthHelper::clearApiAccessCredentials();
parent::tearDown();
}
public function testConfigBasedIntegrationCreation()
{
$this->assertEquals('test-integration@magento.com', $this->integration->getEmail());
$this->assertEquals('http://example.com/endpoint1', $this->integration->getEndpoint());
$this->assertEquals('Test Integration1', $this->integration->getName());
$this->assertEquals(Integration::TYPE_CONFIG, $this->integration->getSetupType());
}
/**
* Test simple request data
*
* @depends testConfigBasedIntegrationCreation
*/
public function testGetServiceCall()
{
$this->_markTestAsRestOnly();
$itemId = 1;
$name = 'Test';
$serviceInfo = [
'rest' => [
'resourcePath' => '/V1/testmodule4/' . $itemId,
'httpMethod' => \Magento\Webapi\Model\Rest\Config::HTTP_METHOD_GET,
],
];
$item = $this->_webApiCall($serviceInfo, [], null, null, $this->integration);
$this->assertEquals($itemId, $item['entity_id'], 'id field returned incorrectly');
$this->assertEquals($name, $item['name'], 'name field returned incorrectly');
}
/**
* Test Integration access token cannot be used as Bearer token by default
* @magentoConfigFixture default_store oauth/consumer/enable_integration_as_bearer 0
*/
public function testIntegrationAsBearerTokenDefault()
{
$this->_markTestAsRestOnly();
$oauthService = ObjectManager::getInstance()->get(OauthServiceInterface::class);
$accessToken = $oauthService->getAccessToken($this->integration->getConsumerId());
$serviceInfo = [
'rest' => [
'token' => $accessToken,
'resourcePath' => '/V1/store/storeViews',
'httpMethod' => \Magento\Webapi\Model\Rest\Config::HTTP_METHOD_GET,
],
];
self::expectException(\Exception::class);
self::expectExceptionMessage('The consumer isn\'t authorized to access %resources.');
$this->_webApiCall($serviceInfo);
}
/**
* Test Integration access token can be used as Bearer token when explicitly enabled
*
* @doesNotPerformAssertions
*/
public function testIntegrationAsBearerTokenEnabled()
{
$this->_markTestAsRestOnly();
$oauthService = ObjectManager::getInstance()->get(OauthServiceInterface::class);
$accessToken = $oauthService->getAccessToken($this->integration->getConsumerId());
$serviceInfo = [
'rest' => [
'token' => $accessToken->getToken(),
'resourcePath' => '/V1/store/storeViews',
'httpMethod' => \Magento\Webapi\Model\Rest\Config::HTTP_METHOD_GET,
],
];
$this->_webApiCall($serviceInfo);
}
}