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.

1 Answer 1

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.

Sign up to request clarification or add additional context in comments.

1 Comment

This is what I needed. Took me a while to getting around to trying it, but using clearIdentity() worked perfectly.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.