. */ namespace SP\Tests\Core\Crypt; use RuntimeException; use SP\Core\Crypt\Crypt; use SP\Core\Crypt\Vault; use SP\Domain\Core\Exceptions\CryptException; use SP\Tests\UnitaryTestCase; use PHPUnit\Framework\Attributes\Group; /** * Class VaultTest * */ #[Group('unitary')] class VaultTest extends UnitaryTestCase { /** * @throws CryptException */ public function testGetData() { $data = self::$faker->text; $key = self::$faker->password; $vault = Vault::factory(new Crypt())->saveData($data, $key); $this->assertEquals($data, $vault->getData($key)); } /** * @throws CryptException */ public function testGetDataWithNoData() { $key = self::$faker->password; $vault = Vault::factory(new Crypt()); $this->expectException(RuntimeException::class); $this->expectExceptionMessage('Either data or key must be set'); $vault->getData($key); } /** * @throws CryptException */ public function testGetTimeSet() { $vault = Vault::factory(new Crypt())->saveData(self::$faker->text, self::$faker->password); $this->assertTrue($vault->getTimeSet() !== 0); } /** * @throws CryptException */ public function testReKey() { $data = self::$faker->text; $key = self::$faker->password; $vault = Vault::factory(new Crypt())->saveData($data, $key); $newKey = self::$faker->password; $vaultRekey = $vault->reKey($newKey, $key); $this->assertEquals($data, $vaultRekey->getData($newKey)); $this->assertGreaterThanOrEqual($vault->getTimeSet(), $vaultRekey->getTimeSet()); } }