public function testFormSignatureWithLockedAndExcluded()
{
$form = new Form(array('context' => $this->context));
$validator = 'lithium\\tests\\mocks\\security\\validation\\MockFormSignature';
$helper = new Security(array('context' => $this->context, 'classes' => array('formSignature' => $validator)));
$helper->sign($form);
ob_start();
$content = array($form->create(null, array('url' => 'http:///')), $form->text('email', array('value' => 'foo@bar')), $form->password('pass'), $form->hidden('id', array('value' => 23)), $form->text('foo', array('value' => 'bar', 'exclude' => true)), $form->hidden('active', array('value' => 'true', 'exclude' => true, 'locked' => false)), $form->end());
ob_get_clean();
$result = $validator::$compile[0]['in'];
$expected = array('fields' => array('email', 'pass'), 'excluded' => array('foo', 'active'), 'locked' => array('id' => 23));
$compiledSignature = $validator::$compile[0]['out'];
$this->assertEqual($expected, $result);
$request = new Request(array('data' => array('security' => array('signature' => $compiledSignature))));
$validator::check($request);
$expected = $compiledSignature;
$result = $validator::$parse[0]['in']['signature'];
$this->assertEqual($expected, $result);
$result = $validator::$parse[0]['out'];
$expected = array('excluded' => array('active', 'foo'), 'locked' => array('id' => 23));
$this->assertEqual($expected, $result);
$validator::reset();
}