. */ namespace SP\Tests\Core\Crypt; use Defuse\Crypto\Exception\CryptoException; use Defuse\Crypto\Exception\EnvironmentIsBrokenException; use PHPUnit\Framework\TestCase; use SP\Core\Crypt\Vault; use SP\Util\PasswordUtil; /** * Class VaultTest * * @package SP\Tests */ class VaultTest extends TestCase { /** * @var string */ private $key; /** * Sets up the fixture, for example, open a network connection. * This method is called before a test is executed. * * @throws EnvironmentIsBrokenException */ protected function setUp(): void { $this->key = PasswordUtil::generateRandomBytes(); } /** * @throws CryptoException */ public function testGetData() { $vault = new Vault(); $vault->saveData('prueba', $this->key); $this->assertEquals('prueba', $vault->getData($this->key)); $randomData = PasswordUtil::generateRandomBytes(); $vault = new Vault(); $vault->saveData($randomData, $this->key); $this->assertEquals($randomData, $vault->getData($this->key)); } /** * @throws CryptoException */ public function testGetTimeSet() { $vault = new Vault(); $vault->saveData('test', $this->key); $this->assertTrue($vault->getTimeSet() !== 0); } /** * @throws CryptoException */ public function testReKey() { $vault = new Vault(); $vault->saveData('prueba', $this->key); $this->assertEquals('prueba', $vault->getData($this->key)); $vault->reKey(1234, $this->key); $this->assertEquals('prueba', $vault->getData(1234)); } /** * @throws CryptoException */ public function testGetTimeUpdated() { $vault = new Vault(); $vault->saveData('test', $this->key); $this->assertTrue($vault->getTimeUpdated() === 0); $vault->reKey(1234, $this->key); $this->assertTrue(is_int($vault->getTimeUpdated())); $this->assertTrue($vault->getTimeUpdated() > 0); } }