From 7dd4314feabb6d2bda676b96a3e9f3f23c23ae4d Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Mon, 13 Oct 2014 16:31:26 +0200 Subject: [PATCH] Add unit test --- tests/lib/user/session.php | 96 +++++++++++++++++++++++++------------- 1 file changed, 63 insertions(+), 33 deletions(-) diff --git a/tests/lib/user/session.php b/tests/lib/user/session.php index 2845a9c964..5126049d77 100644 --- a/tests/lib/user/session.php +++ b/tests/lib/user/session.php @@ -9,6 +9,9 @@ namespace Test\User; +use OC\Session\Memory; +use OC\User\User; + class Session extends \PHPUnit_Framework_TestCase { public function testGetUser() { $session = $this->getMock('\OC\Session\Memory', array(), array('')); @@ -54,26 +57,26 @@ class Session extends \PHPUnit_Framework_TestCase { $session = $this->getMock('\OC\Session\Memory', array(), array('')); $session->expects($this->exactly(2)) ->method('set') - ->with($this->callback(function($key) { - switch($key) { - case 'user_id': - case 'loginname': - return true; - break; - default: - return false; - break; - } - }, - 'foo')); + ->with($this->callback(function ($key) { + switch ($key) { + case 'user_id': + case 'loginname': + return true; + break; + default: + return false; + break; + } + }, + 'foo')); $managerMethods = get_class_methods('\OC\User\Manager'); //keep following methods intact in order to ensure hooks are //working $doNotMock = array('__construct', 'emit', 'listen'); - foreach($doNotMock as $methodName) { + foreach ($doNotMock as $methodName) { $i = array_search($methodName, $managerMethods, true); - if($i !== false) { + if ($i !== false) { unset($managerMethods[$i]); } } @@ -110,9 +113,9 @@ class Session extends \PHPUnit_Framework_TestCase { //keep following methods intact in order to ensure hooks are //working $doNotMock = array('__construct', 'emit', 'listen'); - foreach($doNotMock as $methodName) { + foreach ($doNotMock as $methodName) { $i = array_search($methodName, $managerMethods, true); - if($i !== false) { + if ($i !== false) { unset($managerMethods[$i]); } } @@ -145,9 +148,9 @@ class Session extends \PHPUnit_Framework_TestCase { //keep following methods intact in order to ensure hooks are //working $doNotMock = array('__construct', 'emit', 'listen'); - foreach($doNotMock as $methodName) { + foreach ($doNotMock as $methodName) { $i = array_search($methodName, $managerMethods, true); - if($i !== false) { + if ($i !== false) { unset($managerMethods[$i]); } } @@ -192,23 +195,23 @@ class Session extends \PHPUnit_Framework_TestCase { $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; - default: - return false; - } - }, - 'foo')); + ->with($this->callback(function ($key) { + switch ($key) { + case 'user_id': + return true; + default: + return false; + } + }, + 'foo')); $managerMethods = get_class_methods('\OC\User\Manager'); //keep following methods intact in order to ensure hooks are //working $doNotMock = array('__construct', 'emit', 'listen'); - foreach($doNotMock as $methodName) { + foreach ($doNotMock as $methodName) { $i = array_search($methodName, $managerMethods, true); - if($i !== false) { + if ($i !== false) { unset($managerMethods[$i]); } } @@ -254,9 +257,9 @@ class Session extends \PHPUnit_Framework_TestCase { //keep following methods intact in order to ensure hooks are //working $doNotMock = array('__construct', 'emit', 'listen'); - foreach($doNotMock as $methodName) { + foreach ($doNotMock as $methodName) { $i = array_search($methodName, $managerMethods, true); - if($i !== false) { + if ($i !== false) { unset($managerMethods[$i]); } } @@ -296,9 +299,9 @@ class Session extends \PHPUnit_Framework_TestCase { //keep following methods intact in order to ensure hooks are //working $doNotMock = array('__construct', 'emit', 'listen'); - foreach($doNotMock as $methodName) { + foreach ($doNotMock as $methodName) { $i = array_search($methodName, $managerMethods, true); - if($i !== false) { + if ($i !== false) { unset($managerMethods[$i]); } } @@ -327,4 +330,31 @@ class Session extends \PHPUnit_Framework_TestCase { $this->assertSame($granted, false); } + + public function testActiveUserAfterSetSession() { + $users = array( + 'foo' => new User('foo', null), + 'bar' => new User('bar', null) + ); + + $manager = $this->getMockBuilder('\OC\User\Manager') + ->disableOriginalConstructor() + ->getMock(); + + $manager->expects($this->any()) + ->method('get') + ->will($this->returnCallback(function ($uid) use ($users) { + return $users[$uid]; + })); + + $session = new Memory(''); + $session->set('user_id', 'foo'); + $userSession = new \OC\User\Session($manager, $session); + $this->assertEquals($users['foo'], $userSession->getUser()); + + $session2 = new Memory(''); + $session2->set('user_id', 'bar'); + $userSession->setSession($session2); + $this->assertEquals($users['bar'], $userSession->getUser()); + } }