0

A similar problem to mine is in this thread, but it doesn't use Zend_Session so is different from my issue.

I have successfully got PHPUnit working using Zend Framework's ControllerTestCase class. I can log in a user and write successful tests for that log in, so that is fine:

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

I cannot figure out how to log out the user though. Even if I specifically try by doing:

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

This should log out the user, even dispatching the test to the logout URL does not work.

I have checked my code to make sure that a use POSTing new credentials is logged in and any existing Session data is overwritten by the new log in credentials. This does not log in a new user either when running the test.

  • Has anyone attempted this and succeeded?

  • How can I log out the user so that a new POST log ins another user?

Thanks.

Community
  • 1
  • 1
Jake N
  • 10,535
  • 11
  • 66
  • 112

1 Answers1

1

I'll assume you're using Zend_Auth for the authentication and if I understood you correctly (I haven't had my first coffee yet), you want to test that after a log out, a second user can log in.

AFAIK, Z_A doesn't use the default session namespace by default, but another one (I think it's even Zend_Auth). If you're logging out a user, all you need to do is to call the clearIdentity() method on the Zend_Auth object.

I personally never tested logging in/out functionality, but you can write a test case that first logs in a user, assert that he's logged in and/or that Zend_Auth has an identity, clear the identity, assert that Zend_Auth doesn't have an identity, log in the second user, assert again.

HTH :)

Edit: Here's a link to a test case for testing login stuff: http://zendframeworkstorefront.googlecode.com/svn/trunk/tests/application/controllers/customerControllerTest.php it's from Keith Pope's "Storefront" application.

robertbasic
  • 4,325
  • 1
  • 27
  • 25
  • This is what I needed. Took me a while to getting around to trying it, but using `clearIdentity()` worked perfectly. – Jake N Sep 10 '10 at 10:58