summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Cornutt <enygma@phpdeveloper.org>2015-02-19 11:25:32 -0500
committerChris Cornutt <enygma@phpdeveloper.org>2015-02-19 11:25:32 -0500
commit4e10a0bf1e86cc70f2b1f31f41075cdcc3b44a3e (patch)
tree74a6494d30e16a5124e65c74269e3beaa1e80815
parent09bad647e2e2a29fd4eb1b72abf28fe780328a94 (diff)
downloadgatekeeper-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.php172
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