]> source.dussan.org Git - nextcloud-server.git/commitdiff
unit tests for loginWithCookie()
authorArthur Schiwon <blizzz@owncloud.com>
Thu, 22 May 2014 22:18:07 +0000 (00:18 +0200)
committerArthur Schiwon <blizzz@owncloud.com>
Thu, 22 May 2014 22:18:07 +0000 (00:18 +0200)
tests/lib/user/session.php

index 46b268b3624a6344f21fb7d020017b9768c0e91e..7b9d24103da32acdc504391e4ad737cdc75d4499 100644 (file)
@@ -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);
+
+
+       }
 }