public function testEncryptedStrategy()
{
$this->skipIf(!MockEncrypt::enabled(), 'The Mcrypt extension is not installed or enabled.');
$key = 'foobar';
$adapter = new Memory();
Session::config(array('primary' => array('adapter' => $adapter, 'filters' => array(), 'strategies' => array('lithium\\tests\\mocks\\storage\\session\\strategy\\MockEncrypt' => array('secret' => $key)))));
$value = array('foo' => 'bar');
Session::write('test', $value);
$this->assertEqual(array('foo' => 'bar'), Session::read('test'));
$this->assertTrue(Session::check('test'));
$this->assertTrue(Session::check('test', array('strategies' => false)));
$encrypted = Session::read('test', array('strategies' => false));
$this->assertNotEqual($value, $encrypted);
$this->assertTrue(is_string($encrypted));
$result = Session::read('test');
$this->assertEqual($value, $result);
$result = Session::clear(array('strategies' => false));
$this->assertNull(Session::read('test'));
$this->assertFalse(Session::check('test'));
$this->assertFalse(Session::check('test', array('strategies' => false)));
$savedData = array('test' => $value);
$encrypt = new MockEncrypt(array('secret' => $key));
$result = $encrypt->encrypt($savedData);
$this->assertEqual($encrypted, $result);
$result = $encrypt->decrypt($encrypted);
$this->assertEqual($savedData, $result);
}