|
|
|
@ -23,8 +23,9 @@ |
|
|
|
namespace Tests\Core\Controller; |
|
|
|
|
|
|
|
use OC\AppFramework\Http; |
|
|
|
use OC\Authentication\Token\IToken; |
|
|
|
use OC\Core\Controller\TokenController; |
|
|
|
use OCP\AppFramework\Http\Response; |
|
|
|
use OCP\AppFramework\Http\JSONResponse; |
|
|
|
use Test\TestCase; |
|
|
|
|
|
|
|
class TokenControllerTest extends TestCase { |
|
|
|
@ -34,6 +35,7 @@ class TokenControllerTest extends TestCase { |
|
|
|
private $request; |
|
|
|
private $userManager; |
|
|
|
private $tokenProvider; |
|
|
|
private $twoFactorAuthManager; |
|
|
|
private $secureRandom; |
|
|
|
|
|
|
|
protected function setUp() { |
|
|
|
@ -43,17 +45,17 @@ class TokenControllerTest extends TestCase { |
|
|
|
$this->userManager = $this->getMockBuilder('\OC\User\Manager') |
|
|
|
->disableOriginalConstructor() |
|
|
|
->getMock(); |
|
|
|
$this->tokenProvider = $this->getMockBuilder('\OC\Authentication\Token\DefaultTokenProvider') |
|
|
|
$this->tokenProvider = $this->getMock('\OC\Authentication\Token\IProvider'); |
|
|
|
$this->twoFactorAuthManager = $this->getMockBuilder('\OC\Authentication\TwoFactorAuth\Manager') |
|
|
|
->disableOriginalConstructor() |
|
|
|
->getMock(); |
|
|
|
$this->secureRandom = $this->getMock('\OCP\Security\ISecureRandom'); |
|
|
|
|
|
|
|
$this->tokenController = new TokenController('core', $this->request, $this->userManager, $this->tokenProvider, |
|
|
|
$this->secureRandom); |
|
|
|
$this->tokenController = new TokenController('core', $this->request, $this->userManager, $this->tokenProvider, $this->twoFactorAuthManager, $this->secureRandom); |
|
|
|
} |
|
|
|
|
|
|
|
public function testWithoutCredentials() { |
|
|
|
$expected = new Response(); |
|
|
|
$expected = new JSONResponse(); |
|
|
|
$expected->setStatus(Http::STATUS_UNPROCESSABLE_ENTITY); |
|
|
|
|
|
|
|
$actual = $this->tokenController->generateToken(null, null); |
|
|
|
@ -66,7 +68,7 @@ class TokenControllerTest extends TestCase { |
|
|
|
->method('checkPassword') |
|
|
|
->with('john', 'passme') |
|
|
|
->will($this->returnValue(false)); |
|
|
|
$expected = new Response(); |
|
|
|
$expected = new JSONResponse(); |
|
|
|
$expected->setStatus(Http::STATUS_UNAUTHORIZED); |
|
|
|
|
|
|
|
$actual = $this->tokenController->generateToken('john', 'passme'); |
|
|
|
@ -83,13 +85,17 @@ class TokenControllerTest extends TestCase { |
|
|
|
$user->expects($this->once()) |
|
|
|
->method('getUID') |
|
|
|
->will($this->returnValue('john')); |
|
|
|
$this->twoFactorAuthManager->expects($this->once()) |
|
|
|
->method('isTwoFactorAuthenticated') |
|
|
|
->with($user) |
|
|
|
->will($this->returnValue(false)); |
|
|
|
$this->secureRandom->expects($this->once()) |
|
|
|
->method('generate') |
|
|
|
->with(128) |
|
|
|
->will($this->returnValue('verysecurerandomtoken')); |
|
|
|
$this->tokenProvider->expects($this->once()) |
|
|
|
->method('generateToken') |
|
|
|
->with('verysecurerandomtoken', 'john', 'john', '123456', 'unknown client', \OC\Authentication\Token\IToken::PERMANENT_TOKEN); |
|
|
|
->with('verysecurerandomtoken', 'john', 'john', '123456', 'unknown client', IToken::PERMANENT_TOKEN); |
|
|
|
$expected = [ |
|
|
|
'token' => 'verysecurerandomtoken' |
|
|
|
]; |
|
|
|
@ -99,4 +105,24 @@ class TokenControllerTest extends TestCase { |
|
|
|
$this->assertEquals($expected, $actual); |
|
|
|
} |
|
|
|
|
|
|
|
public function testWithValidCredentialsBut2faEnabled() { |
|
|
|
$user = $this->getMock('\OCP\IUser'); |
|
|
|
$this->userManager->expects($this->once()) |
|
|
|
->method('checkPassword') |
|
|
|
->with('john', '123456') |
|
|
|
->will($this->returnValue($user)); |
|
|
|
$this->twoFactorAuthManager->expects($this->once()) |
|
|
|
->method('isTwoFactorAuthenticated') |
|
|
|
->with($user) |
|
|
|
->will($this->returnValue(true)); |
|
|
|
$this->secureRandom->expects($this->never()) |
|
|
|
->method('generate'); |
|
|
|
$expected = new JSONResponse(); |
|
|
|
$expected->setStatus(Http::STATUS_UNAUTHORIZED); |
|
|
|
|
|
|
|
$actual = $this->tokenController->generateToken('john', '123456'); |
|
|
|
|
|
|
|
$this->assertEquals($expected, $actual); |
|
|
|
} |
|
|
|
|
|
|
|
} |