123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Integration\Test\Unit\Helper\Oauth;
- /**
- * Test for \Magento\Integration\Model\Oauth\Consumer
- *
- * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
- */
- class ConsumerTest extends \PHPUnit\Framework\TestCase
- {
- /** @var \Magento\Store\Model\StoreManagerInterface */
- protected $_storeManagerMock;
- /** @var \Magento\Integration\Model\Oauth\ConsumerFactory */
- protected $_consumerFactory;
- /** @var \Magento\Integration\Model\Oauth\Consumer */
- protected $_consumerMock;
- /** @var \Magento\Framework\HTTP\ZendClient */
- protected $_httpClientMock;
- /** @var \Magento\Integration\Model\Oauth\TokenFactory */
- protected $_tokenFactory;
- /** @var \Magento\Integration\Model\Oauth\Token */
- protected $_tokenMock;
- /** @var \Magento\Store\Model\Store */
- protected $_storeMock;
- /** @var \Magento\Integration\Helper\Oauth\Data */
- protected $_dataHelper;
- /** @var \Magento\Integration\Api\OauthServiceInterface */
- protected $_oauthService;
- /** @var \Psr\Log\LoggerInterface */
- protected $_loggerMock;
- protected function setUp()
- {
- $this->_consumerFactory = $this->getMockBuilder(\Magento\Integration\Model\Oauth\ConsumerFactory::class)
- ->disableOriginalConstructor()
- ->setMethods(['create'])
- ->getMock();
- $this->_consumerMock = $this->getMockBuilder(
- \Magento\Integration\Model\Oauth\Consumer::class
- )->disableOriginalConstructor()->getMock();
- $this->_consumerFactory->expects(
- $this->any()
- )->method(
- 'create'
- )->will(
- $this->returnValue($this->_consumerMock)
- );
- $this->_tokenFactory = $this->getMockBuilder(
- \Magento\Integration\Model\Oauth\TokenFactory::class
- )->disableOriginalConstructor()->setMethods(['create'])->getMock();
- $this->_tokenMock = $this->getMockBuilder(
- \Magento\Integration\Model\Oauth\Token::class
- )->disableOriginalConstructor()->getMock();
- $this->_tokenFactory->expects($this->any())->method('create')->will($this->returnValue($this->_tokenMock));
- $this->_storeManagerMock = $this->getMockBuilder(
- \Magento\Store\Model\StoreManagerInterface::class
- )->disableOriginalConstructor()->getMockForAbstractClass();
- $this->_storeMock = $this->getMockBuilder(
- \Magento\Store\Model\Store::class
- )->disableOriginalConstructor()->getMock();
- $this->_storeManagerMock->expects(
- $this->any()
- )->method(
- 'getStore'
- )->will(
- $this->returnValue($this->_storeMock)
- );
- $this->_dataHelper = $this->getMockBuilder(
- \Magento\Integration\Helper\Oauth\Data::class
- )->disableOriginalConstructor()->getMock();
- $oauthHelperMock = $this->getMockBuilder(
- \Magento\Framework\Oauth\Helper\Oauth::class
- )->disableOriginalConstructor()->getMock();
- $tokenProviderMock = $this->getMockBuilder(
- \Magento\Integration\Model\Oauth\Token\Provider::class
- )->disableOriginalConstructor()->getMock();
- $this->_httpClientMock = $this->getMockBuilder(
- \Magento\Framework\HTTP\ZendClient::class
- )->disableOriginalConstructor()->getMock();
- $this->_loggerMock = $this->getMockBuilder(
- \Psr\Log\LoggerInterface::class
- )->getMock();
- $this->_oauthService = new \Magento\Integration\Model\OauthService(
- $this->_storeManagerMock,
- $this->_consumerFactory,
- $this->_tokenFactory,
- $this->_dataHelper,
- $this->_httpClientMock,
- $this->_loggerMock,
- $oauthHelperMock,
- $tokenProviderMock
- );
- }
- protected function tearDown()
- {
- unset($this->_storeManagerMock);
- unset($this->_consumerFactory);
- unset($this->_tokenFactory);
- unset($this->_dataHelper);
- unset($this->_httpClientMock);
- unset($this->_loggerMock);
- unset($this->_oauthService);
- }
- public function testCreateConsumer()
- {
- $key = $this->_generateRandomString(\Magento\Framework\Oauth\Helper\Oauth::LENGTH_CONSUMER_KEY);
- $secret = $this->_generateRandomString(\Magento\Framework\Oauth\Helper\Oauth::LENGTH_CONSUMER_SECRET);
- $consumerData = ['name' => 'Integration Name', 'key' => $key, 'secret' => $secret];
- $this->_consumerMock->expects($this->once())->method('setData')->will($this->returnSelf());
- $this->_consumerMock->expects($this->once())->method('save')->will($this->returnSelf());
- /** @var \Magento\Integration\Model\Oauth\Consumer $consumer */
- $consumer = $this->_oauthService->createConsumer($consumerData);
- $this->assertEquals($consumer, $this->_consumerMock, 'Consumer object was expected to be returned');
- }
- public function testPostToConsumer()
- {
- $consumerId = 1;
- $key = $this->_generateRandomString(\Magento\Framework\Oauth\Helper\Oauth::LENGTH_CONSUMER_KEY);
- $secret = $this->_generateRandomString(\Magento\Framework\Oauth\Helper\Oauth::LENGTH_CONSUMER_SECRET);
- $oauthVerifier = $this->_generateRandomString(\Magento\Framework\Oauth\Helper\Oauth::LENGTH_TOKEN_VERIFIER);
- $consumerData = ['entity_id' => $consumerId, 'key' => $key, 'secret' => $secret];
- $this->_consumerMock->expects(
- $this->once()
- )->method(
- 'load'
- )->with(
- $this->equalTo($consumerId)
- )->will(
- $this->returnSelf()
- );
- $dateHelperMock = $this->getMockBuilder(\Magento\Framework\Stdlib\DateTime\DateTime::class)
- ->disableOriginalConstructor()
- ->getMock();
- $dateHelperMock->expects($this->any())->method('gmtDate');
- $dateHelper = new \ReflectionProperty(\Magento\Integration\Model\OauthService::class, '_dateHelper');
- $dateHelper->setAccessible(true);
- $dateHelper->setValue($this->_oauthService, $dateHelperMock);
- $this->_consumerMock->expects($this->once())->method('getId')->will($this->returnValue($consumerId));
- $this->_consumerMock->expects($this->once())->method('getData')->will($this->returnValue($consumerData));
- $this->_httpClientMock->expects(
- $this->once()
- )->method(
- 'setUri'
- )->with(
- 'http://www.magento.com'
- )->will(
- $this->returnSelf()
- );
- $this->_httpClientMock->expects($this->once())->method('setParameterPost')->will($this->returnSelf());
- $this->_tokenMock->expects(
- $this->once()
- )->method(
- 'createVerifierToken'
- )->with(
- $consumerId
- )->will(
- $this->returnSelf()
- );
- $this->_tokenMock->expects($this->any())->method('getVerifier')->will($this->returnValue($oauthVerifier));
- $this->_dataHelper->expects($this->once())->method('getConsumerPostMaxRedirects')->will($this->returnValue(5));
- $this->_dataHelper->expects($this->once())->method('getConsumerPostTimeout')->will($this->returnValue(120));
- $verifier = $this->_oauthService->postToConsumer($consumerId, 'http://www.magento.com');
- $this->assertEquals($oauthVerifier, $verifier, 'Checking Oauth Verifier');
- }
- /**
- * @param $length
- * @return bool|string
- */
- private function _generateRandomString($length)
- {
- return substr(
- str_shuffle(str_repeat('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789', 5)),
- 0,
- $length
- );
- }
- }
|