2010-08-26 6 views
0

Un problème similaire à la mienne est dans ce thread, mais il n'utilise pas Zend_Session donc est différent de mon problème.Zend_Test - Se connecter et se déconnecter de différents utilisateurs pour PHPUnit Testing

J'ai réussi à faire fonctionner PHPUnit en utilisant la classe ControllerTestCase de Zend Framework. Je peux connecter un utilisateur et écrire des tests réussis pour ce journal, donc c'est très bien:

$this->request->setMethod('POST')->setPost(array('username' => $user, 'password' => $password)); 

Je ne peux pas comprendre comment déconnecter l'utilisateur si. Même si je tente spécifiquement en faisant:

$namespace = new Zend_Session_Namespace("Default"); 
$namespace->username = false; 
$namespace->passsword = false; 

Cela devrait déconnecter l'utilisateur, l'envoi même le test à l'URL de fermeture de session ne fonctionne pas.

J'ai vérifié mon code pour m'assurer qu'une utilisation POSTing de nouvelles informations d'identification est enregistrée et que toutes les données de session existantes sont remplacées par les nouvelles informations d'identification de connexion. Cela ne connecte pas un nouvel utilisateur lors de l'exécution du test.

  • Est-ce que quelqu'un a essayé cela et a réussi?

  • Comment puis-je déconnecter l'utilisateur afin qu'un nouveau POST se connecte à un autre utilisateur?

Merci.

Répondre

1

Je suppose que vous utilisez Zend_Auth pour l'authentification et si je vous ai bien compris (je n'ai pas encore eu mon premier café), vous voulez tester qu'après une déconnexion, un deuxième utilisateur peut se connecter AFAIK, Z_A n'utilise pas l'espace de noms de session par défaut par défaut, mais un autre (je pense que c'est Zend_Auth). Si vous déconnectez un utilisateur, tout ce que vous devez faire est d'appeler la méthode clearIdentity() sur l'objet Zend_Auth. Personnellement, je n'ai jamais testé la fonctionnalité de connexion/déconnexion, mais vous pouvez écrire un cas de test qui se connecte d'abord à un utilisateur, affirmer qu'il est connecté et/ou que Zend_Auth a une identité, effacer l'identité, affirmer que Zend_Auth ne N'ayez pas d'identité, connectez-vous au second utilisateur, réaffirmez-le.

HTH :)

Edit: Voici un lien vers un test pour des trucs de connexion de test: il est http://zendframeworkstorefront.googlecode.com/svn/trunk/tests/application/controllers/customerControllerTest.php de la demande "Storefront" de Keith Pope.

+0

C'est ce dont j'avais besoin. Cela m'a pris un peu de temps pour essayer, mais utiliser 'clearIdentity()' fonctionnait parfaitement. –

Questions connexes