accessibility_scanner-8.x-1.0-alpha8/tests/src/Unit/Plugin/CaptureUtility/AxeCoreCliCaptureUtilityTest.php
tests/src/Unit/Plugin/CaptureUtility/AxeCoreCliCaptureUtilityTest.php
<?php namespace Drupal\Tests\accessibility_scanner\Unit\Plugin\CaptureUtility; use Drupal\Core\StringTranslation\StringTranslationTrait; use Drupal\Tests\UnitTestCase; use Drupal\accessibility_scanner\Plugin\CaptureUtility\AxeCoreCliCaptureUtility; /** * Tests the AxeCoreCliCaptureResponse class. * * @group accessibility_scanner * @requires module web_page_archive */ class AxeCoreCliCaptureUtilityTest extends UnitTestCase { use StringTranslationTrait; /** * Helper function to retrieve a mock capture utility. */ public function getMockCaptureUtility($system_config = []) { $configuration = []; $plugin_id = ''; $plugin_definition = []; $logger = $this->getMockBuilder('\Psr\Log\LoggerInterface') ->getMock(); $config = $this->getMockBuilder('\Drupal\Core\Config\ImmutableConfig') ->disableOriginalConstructor() ->getMock(); $config->expects($this->any()) ->method('get') ->will($this->returnValue($system_config)); $config_factory = $this->getMockBuilder('\Drupal\Core\Config\ConfigFactoryInterface') ->getMock(); $config_factory->expects($this->any()) ->method('get') ->will($this->returnValue($config)); $file_system = $this->getMockBuilder('\Drupal\Core\File\FileSystemInterface') ->getMock(); return new AxeCoreCliCaptureUtility($configuration, $plugin_id, $plugin_definition, $logger, $config_factory, $file_system); } /** * Test get AxeCoreCliCaptureResponse::checkValidAxeBinary(). */ public function testCheckValidAxeBinaryThrowsExceptionWithNoFileSpecified() { $capture_utility = $this->getMockCaptureUtility(); $this->expectException(\Exception::class); $this->expectExceptionMessage('No @axe-core/cli binary provided.'); $capture_utility->checkValidAxeBinary(); } /** * Test get AxeCoreCliCaptureResponse::checkValidAxeBinary(). */ public function testCheckValidAxeBinaryThrowsExceptionWithMissingFile() { $capture_utility = $this->getMockCaptureUtility([ 'axecore_cli_binary' => '/file/does/not/exist', ]); $this->expectException(\Exception::class); $this->expectExceptionMessage('Provided @axe-core/cli binary does not exist. Please check the specified path is correct.'); $capture_utility->checkValidAxeBinary(); } /** * Test get AxeCoreCliCaptureResponse::checkValidAxeBinary(). */ public function testCheckValidAxeBinaryThrowsExceptionWithNonExecutableFile() { $f = tmpfile(); $file = stream_get_meta_data($f)['uri']; $capture_utility = $this->getMockCaptureUtility([ 'axecore_cli_binary' => $file, ]); $this->expectException(\Exception::class); $this->expectExceptionMessage('Provided @axe-core/cli binary is not executable. Please check permissions.'); $capture_utility->checkValidAxeBinary(); fclose($f); } /** * Test get AxeCoreCliCaptureResponse::checkValidAxeBinary(). */ public function testCheckValidAxeBinaryDoesNotThrowExceptionWithExecutableFile() { $f = tmpfile(); $file = stream_get_meta_data($f)['uri']; chmod($file, 0755); $capture_utility = $this->getMockCaptureUtility([ 'axecore_cli_binary' => $file, ]); $this->assertNotNull($capture_utility->checkValidAxeBinary()); fclose($f); } /** * Test get AxeCoreCliCaptureResponse::checkValidAxeBinary(). */ public function testCheckValidAxeBinaryThrowsExceptionWithMissingChecksum() { $f = tmpfile(); $file = stream_get_meta_data($f)['uri']; chmod($file, 0755); $capture_utility = $this->getMockCaptureUtility([ 'axecore_cli_binary' => $file, 'axecore_cli_binary_verify_checksum' => TRUE, 'axecore_cli_binary_checksum' => '', ]); $this->expectException(\Exception::class); $this->expectExceptionMessage('Provided @axe-code/cli binary does not match expected checksum: '); $capture_utility->checkValidAxeBinary(); fclose($f); } /** * Test get AxeCoreCliCaptureResponse::checkValidAxeBinary(). */ public function testCheckValidAxeBinaryThrowsExceptionWithMismatchingChecksum() { $f = tmpfile(); $file = stream_get_meta_data($f)['uri']; chmod($file, 0755); $capture_utility = $this->getMockCaptureUtility([ 'axecore_cli_binary' => $file, 'axecore_cli_binary_verify_checksum' => TRUE, 'axecore_cli_binary_checksum' => 'abc123', ]); $this->expectException(\Exception::class); $this->expectExceptionMessage('Provided @axe-code/cli binary does not match expected checksum: abc123'); $capture_utility->checkValidAxeBinary(); fclose($f); } /** * Test get AxeCoreCliCaptureResponse::checkValidAxeBinary(). */ public function testCheckValidAxeBinaryDoesNotThrowExceptionWithMatchingChecksum() { $f = tmpfile(); $file = stream_get_meta_data($f)['uri']; chmod($file, 0755); $capture_utility = $this->getMockCaptureUtility([ 'axecore_cli_binary' => $file, 'axecore_cli_binary_verify_checksum' => TRUE, 'axecore_cli_binary_checksum' => md5_file($file), ]); $this->assertNotNull($capture_utility->checkValidAxeBinary()); fclose($f); } /** * Test AxeCoreCliCaptureUtility::encodeSelectors(). */ public function testSelectorsAreProperlyEncoded() { $string = implode(PHP_EOL, [ ' ', '.abc', ' .def ', '.ghi, .jkl ,.mno', '.pq .rs', '', PHP_EOL . ' .tuv ' . PHP_EOL, ]); $capture_utility = $this->getMockCaptureUtility(); $expected = '.abc,.def,.ghi,.jkl,.mno,.pq .rs,.tuv'; $this->assertEquals($expected, $capture_utility->encodeSelectors($string)); } /** * Test AxeCoreCliCaptureUtility::decodeSelectors(). */ public function testSelectorsAreProperlyDecoded() { $string = ' .abc, .def ,.ghi,.jkl,.mno,.pq .rs,' . PHP_EOL . '.tuv '; $capture_utility = $this->getMockCaptureUtility(); $expected = implode(PHP_EOL, [ '.abc', '.def', '.ghi', '.jkl', '.mno', '.pq .rs', '.tuv', ]); $this->assertEquals($expected, $capture_utility->decodeSelectors($string)); } }