2011-03-29 94 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將 嘗試驗證您輸入的登錄 憑據 準確通過比較它們是什麼 已存儲在您的用戶模型中。 但是,在某些情況下,您可能需要 做一些額外的工作 來確定正確的憑證。通過 設置這個變量爲 之一的幾個不同的值,你可以做 不同的事情。