From c46fada6b3338b045d3104f71e4e43558eca5453 Mon Sep 17 00:00:00 2001 From: Arthur Schiwon Date: Fri, 23 May 2014 00:18:07 +0200 Subject: [PATCH] unit tests for loginWithCookie() --- tests/lib/user/session.php | 114 +++++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) diff --git a/tests/lib/user/session.php b/tests/lib/user/session.php index 46b268b362..7b9d24103d 100644 --- a/tests/lib/user/session.php +++ b/tests/lib/user/session.php @@ -151,4 +151,118 @@ class Session extends \PHPUnit_Framework_TestCase { $userSession = new \OC\User\Session($manager, $session); $userSession->login('foo', 'bar'); } + + public function testRememberLoginValidToken() { + $session = $this->getMock('\OC\Session\Memory', array(), array('')); + $session->expects($this->exactly(1)) + ->method('set') + ->with($this->callback(function($key) { + switch($key) { + case 'user_id': + return true; + break; + default: + return false; + break; + } + }, + 'foo')); + + $manager = $this->getMock('\OC\User\Manager'); + + $backend = $this->getMock('OC_User_Dummy'); + + $user = $this->getMock('\OC\User\User', array(), array('foo', $backend)); + + $user->expects($this->any()) + ->method('getUID') + ->will($this->returnValue('foo')); + + $manager->expects($this->once()) + ->method('get') + ->with('foo') + ->will($this->returnValue($user)); + + //prepare login token + $token = 'goodToken'; + \OC_Preferences::setValue('foo', 'login_token', $token, time()); + + $userSession = $this->getMock( + '\OC\User\Session', + //override, otherwise tests will fail because of setcookie() + array('setMagicInCookie'), + //there are passed as parameters to the constructor + array($manager, $session)); + + $granted = $userSession->loginWithCookie('foo', $token); + //clean up token + \OC_Preferences::deleteKey('foo', 'login_token', $token); + + $this->assertSame($granted, true); + } + + public function testRememberLoginInvalidToken() { + $session = $this->getMock('\OC\Session\Memory', array(), array('')); + $session->expects($this->never()) + ->method('set'); + + $manager = $this->getMock('\OC\User\Manager'); + + $backend = $this->getMock('OC_User_Dummy'); + + $user = $this->getMock('\OC\User\User', array(), array('foo', $backend)); + + $user->expects($this->any()) + ->method('getUID') + ->will($this->returnValue('foo')); + + $manager->expects($this->once()) + ->method('get') + ->with('foo') + ->will($this->returnValue($user)); + + //prepare login token + $token = 'goodToken'; + \OC_Preferences::setValue('foo', 'login_token', $token, time()); + + $userSession = new \OC\User\Session($manager, $session); + $granted = $userSession->loginWithCookie('foo', 'badToken'); + //clean up token + \OC_Preferences::deleteKey('foo', 'login_token', $token); + + $this->assertSame($granted, false); + } + + public function testRememberLoginInvalidUser() { + $session = $this->getMock('\OC\Session\Memory', array(), array('')); + $session->expects($this->never()) + ->method('set'); + + $manager = $this->getMock('\OC\User\Manager'); + + $backend = $this->getMock('OC_User_Dummy'); + + $user = $this->getMock('\OC\User\User', array(), array('foo', $backend)); + + $user->expects($this->never()) + ->method('getUID'); + + $manager->expects($this->once()) + ->method('get') + ->with('foo') + ->will($this->returnValue(null)); + + //prepare login token + $token = 'goodToken'; + \OC_Preferences::setValue('foo', 'login_token', $token, time()); + + $userSession = new \OC\User\Session($manager, $session); + $granted = $userSession->loginWithCookie('foo', $token); + //clean up token + \OC_Preferences::deleteKey('foo', 'login_token', $token); + + $this->assertSame($granted, false); + + + } }