123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Captcha\Test\Unit\Helper;
- use Magento\Framework\App\Filesystem\DirectoryList;
- /**
- * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
- */
- class DataTest extends \PHPUnit\Framework\TestCase
- {
- /**
- * @var \PHPUnit_Framework_MockObject_MockObject
- */
- protected $_filesystem;
- /**
- * @var \Magento\Captcha\Helper\Data
- */
- protected $helper;
- /**
- * @var \Magento\Framework\App\Config\ScopeConfigInterface | \PHPUnit_Framework_MockObject_MockObject
- */
- protected $configMock;
- /**
- * @var \Magento\Captcha\Model\CaptchaFactory | \PHPUnit_Framework_MockObject_MockObject
- */
- protected $factoryMock;
- protected function setUp()
- {
- $objectManagerHelper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
- $className = \Magento\Captcha\Helper\Data::class;
- $arguments = $objectManagerHelper->getConstructArguments($className);
- /** @var \Magento\Framework\App\Helper\Context $context */
- $context = $arguments['context'];
- $this->configMock = $context->getScopeConfig();
- $this->_filesystem = $arguments['filesystem'];
- $storeManager = $arguments['storeManager'];
- $storeManager->expects($this->any())->method('getWebsite')->will($this->returnValue($this->_getWebsiteStub()));
- $storeManager->expects($this->any())->method('getStore')->will($this->returnValue($this->_getStoreStub()));
- $this->factoryMock = $arguments['factory'];
- $this->helper = $objectManagerHelper->getObject($className, $arguments);
- }
- /**
- * @covers \Magento\Captcha\Helper\Data::getCaptcha
- */
- public function testGetCaptcha()
- {
- $this->configMock->expects(
- $this->once()
- )->method(
- 'getValue'
- )->with(
- 'customer/captcha/type'
- )->will(
- $this->returnValue('zend')
- );
- $this->factoryMock->expects(
- $this->once()
- )->method(
- 'create'
- )->with(
- $this->equalTo('Zend')
- )->will(
- $this->returnValue(
- new \Magento\Captcha\Model\DefaultModel(
- $this->createMock(\Magento\Framework\Session\SessionManager::class),
- $this->createMock(\Magento\Captcha\Helper\Data::class),
- $this->createPartialMock(\Magento\Captcha\Model\ResourceModel\LogFactory::class, ['create']),
- 'user_create'
- )
- )
- );
- $this->assertInstanceOf(\Magento\Captcha\Model\DefaultModel::class, $this->helper->getCaptcha('user_create'));
- }
- /**
- * @covers \Magento\Captcha\Helper\Data::getConfig
- */
- public function testGetConfigNode()
- {
- $this->configMock->expects(
- $this->once()
- )->method(
- 'getValue'
- )->with(
- 'customer/captcha/enable',
- \Magento\Store\Model\ScopeInterface::SCOPE_STORE
- )->will(
- $this->returnValue('1')
- );
- $this->helper->getConfig('enable');
- }
- public function testGetFonts()
- {
- $fontPath = 'path/to/fixture.ttf';
- $expectedFontPath = 'lib/' . $fontPath;
- $libDirMock = $this->createMock(\Magento\Framework\Filesystem\Directory\Read::class);
- $libDirMock->expects($this->once())
- ->method('getAbsolutePath')
- ->with($fontPath)
- ->will($this->returnValue($expectedFontPath));
- $this->_filesystem->expects($this->once())
- ->method('getDirectoryRead')
- ->with(DirectoryList::LIB_INTERNAL)
- ->will($this->returnValue($libDirMock));
- $configData = ['font_code' => ['label' => 'Label', 'path' => $fontPath]];
- $this->configMock->expects(
- $this->any()
- )->method(
- 'getValue'
- )->with(
- 'captcha/fonts',
- 'default'
- )->will(
- $this->returnValue($configData)
- );
- $fonts = $this->helper->getFonts();
- $this->assertArrayHasKey('font_code', $fonts);
- // fixture
- $this->assertArrayHasKey('label', $fonts['font_code']);
- $this->assertArrayHasKey('path', $fonts['font_code']);
- $this->assertEquals('Label', $fonts['font_code']['label']);
- $this->assertEquals($expectedFontPath, $fonts['font_code']['path']);
- }
- /**
- * @covers \Magento\Captcha\Model\DefaultModel::getImgDir
- * @covers \Magento\Captcha\Helper\Data::getImgDir
- */
- public function testGetImgDir()
- {
- $dirWriteMock = $this->createPartialMock(
- \Magento\Framework\Filesystem\Directory\Write::class,
- ['changePermissions', 'create', 'getAbsolutePath']
- );
- $this->_filesystem->expects(
- $this->once()
- )->method(
- 'getDirectoryWrite'
- )->with(
- DirectoryList::MEDIA
- )->will(
- $this->returnValue($dirWriteMock)
- );
- $dirWriteMock->expects(
- $this->once()
- )->method(
- 'getAbsolutePath'
- )->with(
- '/captcha/base'
- )->will(
- $this->returnValue(TESTS_TEMP_DIR . '/captcha/base')
- );
- $this->assertFileNotExists(TESTS_TEMP_DIR . '/captcha');
- $result = $this->helper->getImgDir();
- $this->assertStringStartsWith(TESTS_TEMP_DIR, $result);
- $this->assertStringEndsWith('captcha/base/', $result);
- }
- /**
- * @covers \Magento\Captcha\Model\DefaultModel::getImgUrl
- * @covers \Magento\Captcha\Helper\Data::getImgUrl
- */
- public function testGetImgUrl()
- {
- $this->assertEquals($this->helper->getImgUrl(), 'http://localhost/pub/media/captcha/base/');
- }
- /**
- * Create Website Stub
- *
- * @return \Magento\Store\Model\Website
- */
- protected function _getWebsiteStub()
- {
- $website = $this->createPartialMock(\Magento\Store\Model\Website::class, ['getCode', '__wakeup']);
- $website->expects($this->any())->method('getCode')->will($this->returnValue('base'));
- return $website;
- }
- /**
- * Create store stub
- *
- * @return \Magento\Store\Model\Store
- */
- protected function _getStoreStub()
- {
- $store = $this->createMock(\Magento\Store\Model\Store::class);
- $store->expects($this->any())->method('getBaseUrl')->will($this->returnValue('http://localhost/pub/media/'));
- return $store;
- }
- }
|