123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 |
- <?php
- /**
- * Test WebAPI authentication helper.
- *
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Framework\Oauth\Test\Unit\Helper;
- use Magento\Framework\App\Request\Http;
- use Magento\Framework\Phrase;
- class RequestTest extends \PHPUnit\Framework\TestCase
- {
- /** @var \Magento\Framework\Oauth\Helper\Request */
- protected $oauthRequestHelper;
- /** @var \Magento\Framework\App\Response\Http */
- protected $response;
- /**
- * @return void
- */
- protected function setUp()
- {
- $this->oauthRequestHelper = new \Magento\Framework\Oauth\Helper\Request();
- $this->response =
- $this->createPartialMock(\Magento\Framework\HTTP\PhpEnvironment\Response::class, ['setHttpResponseCode']);
- }
- /**
- * @return void
- */
- protected function tearDown()
- {
- unset($this->oauthRequestHelper, $this->response);
- }
- /**
- * @param \Exception $exception
- * @param array $expected
- * @return void
- * @dataProvider dataProviderForPrepareErrorResponseTest
- */
- public function testPrepareErrorResponse($exception, $expected)
- {
- $this->response
- ->expects($this->once())
- ->method('setHttpResponseCode')
- ->with($expected[1]);
- $errorResponse = $this->oauthRequestHelper->prepareErrorResponse($exception, $this->response);
- $this->assertEquals(['oauth_problem' => $expected[0]], $errorResponse);
- }
- /**
- * @return array
- */
- public function dataProviderForPrepareErrorResponseTest()
- {
- return [
- [
- new \Magento\Framework\Oauth\OauthInputException(new Phrase('msg')),
- ['msg', \Magento\Framework\Oauth\Helper\Request::HTTP_BAD_REQUEST],
- ],
- [
- new \Exception('msg'),
- ['internal_error&message=msg', \Magento\Framework\Oauth\Helper\Request::HTTP_INTERNAL_ERROR]
- ],
- [
- new \Exception(),
- [
- 'internal_error&message=empty_message',
- \Magento\Framework\Oauth\Helper\Request::HTTP_INTERNAL_ERROR
- ]
- ]
- ];
- }
- /**
- * @param string $url
- * @param string $host
- * @return void
- * @dataProvider hostsDataProvider
- */
- public function testGetRequestUrl($url, $host)
- {
- $httpRequestMock = $this->createPartialMock(
- \Magento\Framework\App\Request\Http::class,
- ['getHttpHost', 'getScheme', 'getRequestUri']
- );
- $httpRequestMock->expects($this->any())->method('getHttpHost')->will($this->returnValue($host));
- $httpRequestMock->expects($this->any())->method('getScheme')->will($this->returnValue('http'));
- $httpRequestMock->expects($this->any())->method('getRequestUri')->will($this->returnValue('/'));
- $this->assertEquals($url, $this->oauthRequestHelper->getRequestUrl($httpRequestMock));
- }
- /**
- * @return array
- */
- public function hostsDataProvider()
- {
- return [
- 'hostWithoutPort' => [
- 'url' => 'http://localhost/',
- 'host' => 'localhost'
- ],
- 'hostWithPort' => [
- 'url' => 'http://localhost:81/',
- 'host' => 'localhost:81'
- ]
- ];
- }
- /**
- * Test that the OAuth parameters are correctly extracted from the Authorization header.
- *
- * @param $authHeaderValue
- * @param $expectedParams
- * @dataProvider dataProviderForTestPrepareRequestOAuthHeader
- */
- public function testPrepareRequestOAuthHeader($authHeaderValue, $expectedParams)
- {
- $httpRequestMock = $this->getMockBuilder(Http::class)
- ->disableOriginalConstructor()
- ->getMock();
- $httpRequestMock->expects($this->once())->method('getScheme')->willReturn('https');
- $httpRequestMock->expects($this->once())->method('getHttpHost')->willReturn('example.com');
- $httpRequestMock->expects($this->once())->method('getRequestUri')->willReturn('/');
- $httpRequestMock->expects($this->any())
- ->method('getHeader')
- ->willReturnCallback(function ($header) use ($authHeaderValue) {
- switch ($header) {
- case 'Authorization':
- return $authHeaderValue;
- case \Zend_Http_Client::CONTENT_TYPE:
- return \Zend_Http_Client::ENC_URLENCODED;
- default:
- return null;
- }
- });
- $this->assertEquals($expectedParams, $this->oauthRequestHelper->prepareRequest($httpRequestMock));
- }
- /**
- * @return array
- */
- public function dataProviderForTestPrepareRequestOAuthHeader()
- {
- return [
- [
- null,
- []
- ],
- [
- '',
- []
- ],
- [
- 'OAuth oauth_consumer_key="x",oauth_token="x", Basic d2luZHNvcm0yOldpTmRzb1JTbWlUSDAwMTQ=',
- ['oauth_consumer_key' => 'x', 'oauth_token' => 'x']
- ],
- [
- 'Basic d2luZHNvcm0yOldpTmRzb1JTbWlUSDAwMTQ=, OAuth oauth_consumer_key="x",oauth_token="x"',
- ['oauth_consumer_key' => 'x', 'oauth_token' => 'x']
- ],
- [
- 'Basic d2luZHNvcm0yOldpTmRzb1JTbWlUSDAwMTQ=, oauth oauth_consumer_key="x", oauth_token="x"',
- ['oauth_consumer_key' => 'x', 'oauth_token' => 'x']
- ],
- [
- 'oauth oauth_consumer_key="x", oauth_token="x", Basic d2luZHNvcm0yOldpTmRzb1JTbWlUSDAwMTQ=',
- ['oauth_consumer_key' => 'x', 'oauth_token' => 'x']
- ]
- ];
- }
- }
|