2011-03-29 86 views
6

我想测试登录功能,如果它工作propperly,只允许合法用户和活跃用户在CakePHP的测试登录

我的用户固定装置包括:

array(
     'password' => '*emptyPasswordHash*', // empty password 
     'username' => 'Lorem', 
     'balance' => 0, 
     'currency' => 'USD', 
     'id' => 1, 
     'user_group_id' => 3, //Customer 
     'active' => 1, 
     'hash' => 'LoremHash' 
    ), 

我的测试功能如下:

function testLogin() { 
      //test valid login 
      $result = $this->testAction('/users/login', array(
       'data' => array(
        'User' => array(
         'username' => 'Lorem', 
         'pass' => '', 
         'remember' => true 
       )), 
       'method' => 'post', 
       'return' => 'view' 
      )); 

      debug($result); 

}

登录表单具有3个输入:usernamepasswordremember

我在UsersController::beforeFilter设置$this->Auth->autoRedirect = false;,我做了一些饼干设置的东西

当我debug($this->data);UsersController::login()它显示了完全相同的数据测试和normaly登录时的时候。但是,当测试登录失败,我得到$this->Auth->loginError消息,而不是登录。

如何正确测试登录操作?

回答

1

,如果你使用的蛋糕验证组件和不砍它你不需要......

https://github.com/cakephp/cakephp/blob/master/cake/tests/cases/libs/controller/components/auth.test.php#L545

,如果你真的想,怎么看待亲做吧:)

+0

链接不再有效... :( – 2013-02-21 06:24:48

+0

https://github.com/cakephp/cakephp/blob/26d526f6240239094aa714b86093cd36fbb9a1f3/cake/tests/cases/libs/controller/components/auth.test.php#L561 – dogmatic69 2013-03-05 14:09:09

0

难道您还可以设置自定义功能,如中描述的CakePHP manual

通常情况下,AuthComponent将 尝试验证您输入的登录 凭据 准确通过比较它们是什么 已存储在您的用户模型中。 但是,在某些情况下,您可能需要 做一些额外的工作 来确定正确的凭证。通过 设置这个变量为 之一的几个不同的值,你可以做 不同的事情。