SecurityTest.php 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\Xml\Test\Unit;
  7. use Magento\Framework\Xml\Security;
  8. /**
  9. * Class SecurityTest
  10. *
  11. * Test for class \Magento\Framework\Xml\Security
  12. */
  13. class SecurityTest extends \PHPUnit\Framework\TestCase
  14. {
  15. /**
  16. * @var Security
  17. */
  18. protected $security;
  19. /**
  20. * Set up
  21. *
  22. * @return void
  23. */
  24. protected function setUp()
  25. {
  26. $this->security = new Security();
  27. }
  28. /**
  29. * Run test scan method
  30. *
  31. * @param string $xmlContent
  32. * @param bool $expectedResult
  33. *
  34. * @dataProvider dataProviderTestScan
  35. */
  36. public function testScan($xmlContent, $expectedResult)
  37. {
  38. $this->assertEquals($expectedResult, $this->security->scan($xmlContent));
  39. }
  40. /**
  41. * Data provider for testScan
  42. *
  43. * @return array
  44. */
  45. public function dataProviderTestScan()
  46. {
  47. return [
  48. [
  49. 'xmlContent' => '<?xml version="1.0"?><test></test>',
  50. 'expectedResult' => true
  51. ],
  52. [
  53. 'xmlContent' => '<!DOCTYPE note SYSTEM "Note.dtd"><?xml version="1.0"?><test></test>',
  54. 'expectedResult' => false
  55. ],
  56. [
  57. 'xmlContent' => '<?xml version="1.0"?>
  58. <!DOCTYPE test [
  59. <!ENTITY value "value">
  60. <!ENTITY value1 "&value;&value;&value;&value;&value;&value;&value;&value;&value;&value;">
  61. <!ENTITY value2 "&value1;&value1;&value1;&value1;&value1;&value1;&value1;&value1;&value1;&value1;">
  62. ]>
  63. <test>&value2;</test>',
  64. 'expectedResult' => false
  65. ],
  66. [
  67. 'xmlContent' => '<!DOCTYPE html><?xml version="1.0"?><test></test>',
  68. 'expectedResult' => false
  69. ],
  70. [
  71. 'xmlContent' => '',
  72. 'expectedResult' => false
  73. ]
  74. ];
  75. }
  76. }