public function testClosures()
{
$request = new Request(array('params' => array('controller' => 'test_controllers', 'action' => 'test_action')));
$user = $request->data = array('username' => 'test');
$authSuccess = array('checkSession' => false, 'success' => true);
$request->params['match'] = true;
$request->params['allow'] = true;
$result = Access::check('test_closures', $user, $request, $authSuccess);
$this->assertIdentical(array(), $result);
$request->params['match'] = true;
$request->params['allow'] = false;
$expected = array('message' => 'Test allow options set.', 'redirect' => '/');
$result = Access::check('test_closures', $user, $request, $authSuccess);
$this->assertIdentical($expected, $result);
$request->params = array('controller' => 'TestControllers', 'action' => 'bad_action');
$request->params['match'] = true;
$request->params['allow'] = true;
$result = Access::check('test_closures', $user, $request, $authSuccess);
$expected = array('message' => 'You are not permitted to access this area.', 'redirect' => '/');
$this->assertIdentical($expected, $result);
$request->params['allow'] = true;
$result = Access::check('test_allow_closure', $user, $request, $authSuccess);
$expected = array();
$this->assertIdentical($expected, $result);
$request->params['allow'] = false;
$result = Access::check('test_allow_closure', $user, $request, $authSuccess);
$expected = array('message' => 'Test allow options set.', 'redirect' => '/');
$this->assertIdentical($expected, $result);
$request->params['allow'] = true;
$request->params['allow_match'] = true;
$result = Access::check('test_allow_closure_match', $user, $request, $authSuccess);
$expected = array();
$this->assertIdentical($expected, $result);
$request->params['allow'] = false;
$request->params['allow_match'] = true;
$result = Access::check('test_allow_closure_match', $user, $request, $authSuccess);
$expected = array('message' => 'Test allow options set 2.', 'redirect' => '/');
$this->assertIdentical($expected, $result);
$request->params['allow'] = true;
$request->params['allow_match'] = false;
$result = Access::check('test_allow_closure_match', $user, $request, $authSuccess);
$expected = array('message' => 'You are not permitted to access this area.', 'redirect' => '/');
$this->assertIdentical($expected, $result);
}