/tests/ZendTest/Filter/File/DecryptTest.php

https://bitbucket.org/gencer/zf2 · PHP · 142 lines · 95 code · 25 blank · 22 comment · 5 complexity · 4a9667160c651989dbf8b9b86c6a5803 MD5 · raw file

  1. <?php
  2. /**
  3. * Zend Framework (http://framework.zend.com/)
  4. *
  5. * @link http://github.com/zendframework/zf2 for the canonical source repository
  6. * @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com)
  7. * @license http://framework.zend.com/license/new-bsd New BSD License
  8. */
  9. namespace ZendTest\Filter\File;
  10. use Zend\Filter\File\Decrypt as FileDecrypt;
  11. use Zend\Filter\File\Encrypt as FileEncrypt;
  12. /**
  13. * @group Zend_Filter
  14. */
  15. class DecryptTest extends \PHPUnit_Framework_TestCase
  16. {
  17. public function setUp()
  18. {
  19. if (!extension_loaded('mcrypt')) {
  20. $this->markTestSkipped('This filter needs the mcrypt extension');
  21. }
  22. if (file_exists(dirname(__DIR__).'/_files/newencryption.txt')) {
  23. unlink(dirname(__DIR__).'/_files/newencryption.txt');
  24. }
  25. if (file_exists(dirname(__DIR__).'/_files/newencryption2.txt')) {
  26. unlink(dirname(__DIR__).'/_files/newencryption2.txt');
  27. }
  28. }
  29. public function tearDown()
  30. {
  31. if (file_exists(dirname(__DIR__).'/_files/newencryption.txt')) {
  32. unlink(dirname(__DIR__).'/_files/newencryption.txt');
  33. }
  34. if (file_exists(dirname(__DIR__).'/_files/newencryption2.txt')) {
  35. unlink(dirname(__DIR__).'/_files/newencryption2.txt');
  36. }
  37. }
  38. /**
  39. * Ensures that the filter follows expected behavior
  40. *
  41. * @return void
  42. */
  43. public function testBasic()
  44. {
  45. $filter = new FileEncrypt();
  46. $filter->setFilename(dirname(__DIR__).'/_files/newencryption.txt');
  47. $this->assertEquals(
  48. dirname(__DIR__).'/_files/newencryption.txt',
  49. $filter->getFilename());
  50. $filter->setKey('1234567890123456');
  51. $filter->filter(dirname(__DIR__).'/_files/encryption.txt');
  52. $filter = new FileDecrypt();
  53. $this->assertNotEquals(
  54. 'Encryption',
  55. file_get_contents(dirname(__DIR__).'/_files/newencryption.txt'));
  56. $filter->setKey('1234567890123456');
  57. $this->assertEquals(
  58. dirname(__DIR__).'/_files/newencryption.txt',
  59. $filter->filter(dirname(__DIR__).'/_files/newencryption.txt'));
  60. $this->assertEquals(
  61. 'Encryption',
  62. trim(file_get_contents(dirname(__DIR__).'/_files/newencryption.txt')));
  63. }
  64. public function testEncryptionWithDecryption()
  65. {
  66. $filter = new FileEncrypt();
  67. $filter->setFilename(dirname(__DIR__).'/_files/newencryption.txt');
  68. $filter->setKey('1234567890123456');
  69. $this->assertEquals(dirname(__DIR__).'/_files/newencryption.txt',
  70. $filter->filter(dirname(__DIR__).'/_files/encryption.txt'));
  71. $this->assertNotEquals(
  72. 'Encryption',
  73. file_get_contents(dirname(__DIR__).'/_files/newencryption.txt'));
  74. $filter = new FileDecrypt();
  75. $filter->setFilename(dirname(__DIR__).'/_files/newencryption2.txt');
  76. $this->assertEquals(
  77. dirname(__DIR__).'/_files/newencryption2.txt',
  78. $filter->getFilename());
  79. $filter->setKey('1234567890123456');
  80. $input = $filter->filter(dirname(__DIR__).'/_files/newencryption.txt');
  81. $this->assertEquals(dirname(__DIR__).'/_files/newencryption2.txt', $input);
  82. $this->assertEquals(
  83. 'Encryption',
  84. trim(file_get_contents(dirname(__DIR__).'/_files/newencryption2.txt')));
  85. }
  86. /**
  87. * @return void
  88. */
  89. public function testNonExistingFile()
  90. {
  91. $filter = new FileDecrypt();
  92. $filter->setVector('1234567890123456');
  93. $this->setExpectedException('\Zend\Filter\Exception\InvalidArgumentException', 'not found');
  94. $filter->filter(dirname(__DIR__).'/_files/nofile.txt');
  95. }
  96. public function returnUnfilteredDataProvider()
  97. {
  98. return array(
  99. array(null),
  100. array(new \stdClass()),
  101. array(array(
  102. dirname(__DIR__).'/_files/nofile.txt',
  103. dirname(__DIR__).'/_files/nofile2.txt'
  104. ))
  105. );
  106. }
  107. /**
  108. * @dataProvider returnUnfilteredDataProvider
  109. * @return void
  110. */
  111. public function testReturnUnfiltered($input)
  112. {
  113. $filter = new FileDecrypt();
  114. $filter->setKey('1234567890123456');
  115. $this->assertEquals($input, $filter($input));
  116. }
  117. }