diff options
author | Chris Cornutt <enygma@phpdeveloper.org> | 2015-02-19 11:25:32 -0500 |
---|---|---|
committer | Chris Cornutt <enygma@phpdeveloper.org> | 2015-02-19 11:25:32 -0500 |
commit | 4e10a0bf1e86cc70f2b1f31f41075cdcc3b44a3e (patch) | |
tree | 74a6494d30e16a5124e65c74269e3beaa1e80815 | |
parent | 09bad647e2e2a29fd4eb1b72abf28fe780328a94 (diff) | |
download | gatekeeper-4e10a0bf1e86cc70f2b1f31f41075cdcc3b44a3e.zip gatekeeper-4e10a0bf1e86cc70f2b1f31f41075cdcc3b44a3e.tar.gz gatekeeper-4e10a0bf1e86cc70f2b1f31f41075cdcc3b44a3e.tar.bz2 |
adding more tests for Remember Me handling
-rw-r--r-- | tests/Psecio/Gatekeeper/Session/RememberMeTest.php | 172 |
1 files changed, 172 insertions, 0 deletions
diff --git a/tests/Psecio/Gatekeeper/Session/RememberMeTest.php b/tests/Psecio/Gatekeeper/Session/RememberMeTest.php new file mode 100644 index 0000000..3d94f8e --- /dev/null +++ b/tests/Psecio/Gatekeeper/Session/RememberMeTest.php @@ -0,0 +1,172 @@ +<?php + +namespace Psecio\Gatekeeper\Session; + +class RememberMeTest extends \Psecio\Gatekeeper\Base +{ + private function buildRememberMe($ds, array $methods = array()) + { + $data = array('interval' => '+1 day'); + $rm = $this->getMockBuilder('\Psecio\Gatekeeper\Session\RememberMe') + ->setConstructorArgs(array($ds, $data)) + ->setMethods($methods) + ->getMock(); + + return $rm; + } + + /** + * Test the initialization of a full object with optional user + */ + public function testInitFullObject() + { + $return = true; + $ds = $this->buildMock($return); + $data = array('interval' => 86400); + $user = new \Psecio\Gatekeeper\UserModel($ds, array( + 'id' => 1234 + )); + + $remember = new RememberMe($ds, $data, $user); + $this->assertEquals($remember->getData(), $data); + $this->assertEquals($remember->getUser(), $user); + $this->assertEquals($remember->getExpireInterval(), $data['interval']); + } + + /** + * Test the valid setup of the "remember me" handling for the + * given user (does not set cookies) + */ + public function testSetupUserRememberValid() + { + $ds = $this->buildMock(true); + $data = array('interval' => '+1 day'); + $user = new \Psecio\Gatekeeper\UserModel($ds, array('id' => 1234)); + $token = new \Psecio\Gatekeeper\AuthTokenModel($ds); + + $rm = $this->getMockBuilder('\Psecio\Gatekeeper\Session\RememberMe') + ->setConstructorArgs(array($ds, $data)) + ->setMethods(array('saveToken', 'getUserToken', 'setCookies')) + ->getMock(); + + $rm->method('saveToken')->willReturn($token); + $rm->method('getUserToken')->willReturn($token); + $rm->method('setCookies')->willReturn(true); + + $this->assertTrue($rm->setup($user)); + } + + /** + * Test the setup of "remember me" for a user where the auth + * token has expired + */ + public function testSetupUserRememberExpired() + { + $ds = $this->buildMock(true); + $rm = $this->buildRememberMe( + $ds, array('saveToken', 'getUserToken', 'setCookies', 'deleteToken') + ); + $token = new \Psecio\Gatekeeper\AuthTokenModel($ds, array( + 'expires' => '-1 day' + )); + $user = new \Psecio\Gatekeeper\UserModel($ds, array('id' => 1234)); + + $rm->method('saveToken')->willReturn($token); + $rm->method('getUserToken')->willReturn($token); + $rm->method('setCookies')->willReturn(true); + $rm->method('deleteToken')->willReturn(true); + + $this->assertFalse($rm->setup($user)); + } + + /** + * Test when there's a save error on creating the new remember me auth token + */ + public function testSetupUserRememberNoSave() + { + $ds = $this->buildMock(true); + $rm = $this->buildRememberMe( + $ds, array('saveToken', 'getUserToken') + ); + $user = new \Psecio\Gatekeeper\UserModel($ds, array('id' => 1234)); + $token = new \Psecio\Gatekeeper\AuthTokenModel($ds, array( + 'expires' => '+1 day' + )); + + $rm->method('saveToken')->willReturn(false); + $rm->method('getUserToken')->willReturn($token); + + $this->assertFalse($rm->setup($user)); + } + + /** + * Find a token instance using the token string value + */ + public function testGetTokenByTokenValue() + { + $tokenString = md5('test1234'); + $token = new \Psecio\Gatekeeper\AuthTokenModel($this->buildMock(true), array( + 'expires' => '+1 day' + )); + $ds = $this->buildMock($token); + $rm = $this->buildRememberMe($ds, array('saveToken')); + + $result = $rm->getByToken($tokenString); + $this->assertEquals($result, $token); + } + + /** + * Find a token instance using the token string value + */ + public function testGetTokenByTokenId() + { + $tokenId = 1234; + $token = new \Psecio\Gatekeeper\AuthTokenModel($this->buildMock(true), array( + 'expires' => '+1 day' + )); + $ds = $this->buildMock($token); + $rm = $this->buildRememberMe($ds, array('saveToken')); + + $result = $rm->getById($tokenId); + $this->assertEquals($result, $token); + } + + /** + * Test locating a token by the given user object + */ + public function testGetTokenByUser() + { + $user = new \Psecio\Gatekeeper\UserModel($this->buildMock(true), array('id' => 1234)); + $token = new \Psecio\Gatekeeper\AuthTokenModel($this->buildMock(true), array( + 'expires' => '+1 day', + 'userId' => $user->id + )); + + $ds = $this->buildMock($token); + $rm = $this->buildRememberMe($ds, array('saveToken')); + + $result = $rm->getUserToken($user); + $this->assertEquals($result, $token); + } + + /** + * Test the saving of a token value, that it returns a token instance + * on success + */ + public function testSaveTokenValue() + { + $tokenString = 1234; + $user = new \Psecio\Gatekeeper\UserModel($this->buildMock(true), array('id' => 1234)); + $token = new \Psecio\Gatekeeper\AuthTokenModel($this->buildMock(true), array( + 'expires' => date('Y-m-d H:i:s', time() + 86400), + 'token' => $tokenString, + 'userId' => $user->id + )); + + $ds = $this->buildMock(true, 'save'); + $rm = $this->buildRememberMe($ds, array('deleteToken')); + + $result = $rm->saveToken($tokenString, $user); + $this->assertEquals($result, $token); + } +}
\ No newline at end of file |