| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- <?php
- use PrivateBin\Persistence\ServerSalt;
- class ServerSaltTest extends PHPUnit_Framework_TestCase
- {
- private $_path;
- private $_invalidPath;
- private $_otherPath;
- private $_invalidFile;
- public function setUp()
- {
- /* Setup Routine */
- $this->_path = sys_get_temp_dir() . DIRECTORY_SEPARATOR . 'privatebin_data';
- if (!is_dir($this->_path)) {
- mkdir($this->_path);
- }
- ServerSalt::setPath($this->_path);
- $this->_otherPath = $this->_path . DIRECTORY_SEPARATOR . 'foo';
- $this->_invalidPath = $this->_path . DIRECTORY_SEPARATOR . 'bar';
- if (!is_dir($this->_invalidPath)) {
- mkdir($this->_invalidPath);
- }
- $this->_invalidFile = $this->_invalidPath . DIRECTORY_SEPARATOR . 'salt.php';
- }
- public function tearDown()
- {
- /* Tear Down Routine */
- chmod($this->_invalidPath, 0700);
- Helper::rmDir($this->_path);
- }
- public function testGeneration()
- {
- // generating new salt
- ServerSalt::setPath($this->_path);
- $salt = ServerSalt::get();
- // mcrypt mock
- if (!function_exists('mcrypt_create_iv')) {
- if (!defined('MCRYPT_DEV_URANDOM')) {
- define('MCRYPT_DEV_URANDOM', 1);
- }
- function mcrypt_create_iv($int, $flag)
- {
- $randomSalt = '';
- for ($i = 0; $i < $int; ++$i) {
- $randomSalt .= base_convert(mt_rand(), 10, 16);
- }
- // hex2bin requires an even length, pad if necessary
- if (strlen($randomSalt) % 2) {
- $randomSalt = '0' . $randomSalt;
- }
- return hex2bin($randomSalt);
- }
- $this->assertNotEquals($salt, ServerSalt::generate());
- }
- // try setting a different path and resetting it
- ServerSalt::setPath($this->_otherPath);
- $this->assertNotEquals($salt, ServerSalt::get());
- ServerSalt::setPath($this->_path);
- $this->assertEquals($salt, ServerSalt::get());
- }
- /**
- * @expectedException Exception
- * @expectedExceptionCode 11
- */
- public function testPathShenanigans()
- {
- // try setting an invalid path
- chmod($this->_invalidPath, 0000);
- ServerSalt::setPath($this->_invalidPath);
- ServerSalt::get();
- }
- /**
- * @expectedException Exception
- * @expectedExceptionCode 20
- */
- public function testFileRead()
- {
- // try setting an invalid file
- chmod($this->_invalidPath, 0700);
- file_put_contents($this->_invalidFile, '');
- chmod($this->_invalidFile, 0000);
- ServerSalt::setPath($this->_invalidPath);
- ServerSalt::get();
- }
- /**
- * @expectedException Exception
- * @expectedExceptionCode 13
- */
- public function testFileWrite()
- {
- // try setting an invalid file
- chmod($this->_invalidPath, 0700);
- if (is_file($this->_invalidFile)) {
- chmod($this->_invalidFile, 0600);
- unlink($this->_invalidFile);
- }
- file_put_contents($this->_invalidPath . DIRECTORY_SEPARATOR . '.htaccess', '');
- chmod($this->_invalidPath, 0500);
- ServerSalt::setPath($this->_invalidPath);
- ServerSalt::get();
- }
- /**
- * @expectedException Exception
- * @expectedExceptionCode 10
- */
- public function testPermissionShenanigans()
- {
- // try creating an invalid path
- chmod($this->_invalidPath, 0000);
- ServerSalt::setPath($this->_invalidPath . DIRECTORY_SEPARATOR . 'baz');
- ServerSalt::get();
- }
- }
|