set('URLQueryEncryptionSecretKey', str_repeat('a', 32)); $crypto = new Crypto(); $encrypted = $crypto->encrypt('test'); self::assertNotSame('test', $encrypted); self::assertSame('test', $crypto->decrypt($encrypted)); self::assertArrayNotHasKey('URLQueryEncryptionSecretKey', $_SESSION); } public function testWithValidKeyFromSession(): void { $_SESSION = ['URLQueryEncryptionSecretKey' => str_repeat('a', 32)]; Config::getInstance()->set('URLQueryEncryptionSecretKey', ''); $crypto = new Crypto(); $encrypted = $crypto->encrypt('test'); self::assertNotSame('test', $encrypted); self::assertSame('test', $crypto->decrypt($encrypted)); self::assertArrayHasKey('URLQueryEncryptionSecretKey', $_SESSION); } public function testWithNewSessionKey(): void { $_SESSION = []; Config::getInstance()->set('URLQueryEncryptionSecretKey', ''); $crypto = new Crypto(); $encrypted = $crypto->encrypt('test'); self::assertNotSame('test', $encrypted); self::assertSame('test', $crypto->decrypt($encrypted)); self::assertArrayHasKey('URLQueryEncryptionSecretKey', $_SESSION); self::assertSame(32, mb_strlen($_SESSION['URLQueryEncryptionSecretKey'], '8bit')); } public function testDecryptWithInvalidKey(): void { $_SESSION = []; $config = Config::getInstance(); $config->set('URLQueryEncryptionSecretKey', str_repeat('a', 32)); $crypto = new Crypto(); $encrypted = $crypto->encrypt('test'); self::assertNotSame('test', $encrypted); self::assertSame('test', $crypto->decrypt($encrypted)); $config->set('URLQueryEncryptionSecretKey', str_repeat('b', 32)); $crypto = new Crypto(); self::assertNull($crypto->decrypt($encrypted)); } }