public function testGetUser() { $token = new \OC\Authentication\Token\DefaultToken(); $token->setLoginName('User123'); $expectedUser = $this->getMock('\\OCP\\IUser'); $expectedUser->expects($this->any())->method('getUID')->will($this->returnValue('user123')); $session = $this->getMock('\\OC\\Session\\Memory', array(), array('')); $session->expects($this->at(0))->method('get')->with('user_id')->will($this->returnValue($expectedUser->getUID())); $sessionId = 'abcdef12345'; $manager = $this->getMockBuilder('\\OC\\User\\Manager')->disableOriginalConstructor()->getMock(); $session->expects($this->once())->method('getId')->will($this->returnValue($sessionId)); $this->tokenProvider->expects($this->once())->method('getToken')->will($this->returnValue($token)); $session->expects($this->at(2))->method('get')->with('last_login_check')->will($this->returnValue(null)); // No check has been run yet $this->tokenProvider->expects($this->once())->method('getPassword')->with($token, $sessionId)->will($this->returnValue('password123')); $manager->expects($this->once())->method('checkPassword')->with('User123', 'password123')->will($this->returnValue(true)); $expectedUser->expects($this->once())->method('isEnabled')->will($this->returnValue(true)); $session->expects($this->at(3))->method('set')->with('last_login_check', 10000); $session->expects($this->at(4))->method('get')->with('last_token_update')->will($this->returnValue(null)); // No check run so far $this->tokenProvider->expects($this->once())->method('updateToken')->with($token); $session->expects($this->at(5))->method('set')->with('last_token_update', $this->equalTo(10000)); $manager->expects($this->any())->method('get')->with($expectedUser->getUID())->will($this->returnValue($expectedUser)); $userSession = new \OC\User\Session($manager, $session, $this->timeFactory, $this->tokenProvider, $this->config); $user = $userSession->getUser(); $this->assertSame($expectedUser, $user); }
public function testGetUser() { $token = new \OC\Authentication\Token\DefaultToken(); $token->setLoginName('User123'); $token->setLastCheck(200); $expectedUser = $this->getMock('\\OCP\\IUser'); $expectedUser->expects($this->any())->method('getUID')->will($this->returnValue('user123')); $session = $this->getMock('\\OC\\Session\\Memory', array(), array('')); $session->expects($this->at(0))->method('get')->with('user_id')->will($this->returnValue($expectedUser->getUID())); $sessionId = 'abcdef12345'; $manager = $this->getMockBuilder('\\OC\\User\\Manager')->disableOriginalConstructor()->getMock(); $session->expects($this->at(1))->method('get')->with('app_password')->will($this->returnValue(null)); // No password set -> browser session $session->expects($this->once())->method('getId')->will($this->returnValue($sessionId)); $this->tokenProvider->expects($this->once())->method('getToken')->with($sessionId)->will($this->returnValue($token)); $this->tokenProvider->expects($this->once())->method('getPassword')->with($token, $sessionId)->will($this->returnValue('passme')); $manager->expects($this->once())->method('checkPassword')->with('User123', 'passme')->will($this->returnValue(true)); $expectedUser->expects($this->once())->method('isEnabled')->will($this->returnValue(true)); $this->tokenProvider->expects($this->once())->method('updateTokenActivity')->with($token); $manager->expects($this->any())->method('get')->with($expectedUser->getUID())->will($this->returnValue($expectedUser)); $userSession = new \OC\User\Session($manager, $session, $this->timeFactory, $this->tokenProvider, $this->config); $user = $userSession->getUser(); $this->assertSame($expectedUser, $user); $this->assertSame(10000, $token->getLastCheck()); }
public function testLoginValidPasswordEnabled() { $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')); $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) { $i = array_search($methodName, $managerMethods, true); if ($i !== false) { unset($managerMethods[$i]); } } $manager = $this->getMock('\\OC\\User\\Manager', $managerMethods, array()); $backend = $this->getMock('OC_User_Dummy'); $user = $this->getMock('\\OC\\User\\User', array(), array('foo', $backend)); $user->expects($this->once())->method('isEnabled')->will($this->returnValue(true)); $user->expects($this->any())->method('getUID')->will($this->returnValue('foo')); $user->expects($this->once())->method('updateLastLoginTimestamp'); $manager->expects($this->once())->method('checkPassword')->with('foo', 'bar')->will($this->returnValue($user)); $userSession = new \OC\User\Session($manager, $session); $userSession->login('foo', 'bar'); $this->assertEquals($user, $userSession->getUser()); }
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()); }