diff options
author | Joas Schilling <coding@schilljs.com> | 2018-01-12 09:39:21 +0100 |
---|---|---|
committer | Morris Jobke <hey@morrisjobke.de> | 2018-01-15 00:50:52 +0100 |
commit | 7789fbdea6445f39da3866f9de4b7b2208f64ea7 (patch) | |
tree | 0566d207f2b99cea574b5d052ec11ad4e0b11cdb /tests/Core | |
parent | cc742ce9e7a2df00f4309e4b3b9fc8d5642ff59f (diff) | |
download | nextcloud-server-7789fbdea6445f39da3866f9de4b7b2208f64ea7.tar.gz nextcloud-server-7789fbdea6445f39da3866f9de4b7b2208f64ea7.zip |
Add unit test
Signed-off-by: Joas Schilling <coding@schilljs.com>
Diffstat (limited to 'tests/Core')
-rw-r--r-- | tests/Core/Controller/ClientFlowLoginControllerTest.php | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/tests/Core/Controller/ClientFlowLoginControllerTest.php b/tests/Core/Controller/ClientFlowLoginControllerTest.php index 21673863223..0e048538223 100644 --- a/tests/Core/Controller/ClientFlowLoginControllerTest.php +++ b/tests/Core/Controller/ClientFlowLoginControllerTest.php @@ -587,4 +587,127 @@ class ClientFlowLoginControllerTest extends TestCase { $expected = new Http\RedirectResponse('nc://login/server:http://example.com&user:MyLoginName&password:MyGeneratedToken'); $this->assertEquals($expected, $this->clientFlowLoginController->generateAppPassword('MyStateToken')); } + + public function dataGeneratePasswordWithHttpsProxy() { + return [ + [ + [ + ['X-Forwarded-Proto', 'http'], + ['X-Forwarded-Ssl', 'off'], + ], + 'http', + 'http', + ], + [ + [ + ['X-Forwarded-Proto', 'http'], + ['X-Forwarded-Ssl', 'off'], + ], + 'https', + 'https', + ], + [ + [ + ['X-Forwarded-Proto', 'https'], + ['X-Forwarded-Ssl', 'off'], + ], + 'http', + 'https', + ], + [ + [ + ['X-Forwarded-Proto', 'https'], + ['X-Forwarded-Ssl', 'on'], + ], + 'http', + 'https', + ], + [ + [ + ['X-Forwarded-Proto', 'http'], + ['X-Forwarded-Ssl', 'on'], + ], + 'http', + 'https', + ], + ]; + } + + /** + * @dataProvider dataGeneratePasswordWithHttpsProxy + * @param array $headers + * @param string $protocol + * @param string $expected + */ + public function testGeneratePasswordWithHttpsProxy(array $headers, $protocol, $expected) { + $this->session + ->expects($this->once()) + ->method('get') + ->with('client.flow.state.token') + ->willReturn('MyStateToken'); + $this->session + ->expects($this->once()) + ->method('remove') + ->with('client.flow.state.token'); + $this->session + ->expects($this->once()) + ->method('getId') + ->willReturn('SessionId'); + $myToken = $this->createMock(IToken::class); + $myToken + ->expects($this->once()) + ->method('getLoginName') + ->willReturn('MyLoginName'); + $this->tokenProvider + ->expects($this->once()) + ->method('getToken') + ->with('SessionId') + ->willReturn($myToken); + $this->tokenProvider + ->expects($this->once()) + ->method('getPassword') + ->with($myToken, 'SessionId') + ->willReturn('MyPassword'); + $this->random + ->expects($this->once()) + ->method('generate') + ->with(72) + ->willReturn('MyGeneratedToken'); + $user = $this->createMock(IUser::class); + $user + ->expects($this->once()) + ->method('getUID') + ->willReturn('MyUid'); + $this->userSession + ->expects($this->once()) + ->method('getUser') + ->willReturn($user); + $this->tokenProvider + ->expects($this->once()) + ->method('generateToken') + ->with( + 'MyGeneratedToken', + 'MyUid', + 'MyLoginName', + 'MyPassword', + 'unknown', + IToken::PERMANENT_TOKEN, + IToken::DO_NOT_REMEMBER + ); + $this->request + ->expects($this->once()) + ->method('getServerProtocol') + ->willReturn($protocol); + $this->request + ->expects($this->once()) + ->method('getServerHost') + ->willReturn('example.com'); + $this->request + ->expects($this->atLeastOnce()) + ->method('getHeader') + ->willReturnMap($headers); + + $expected = new Http\RedirectResponse('nc://login/server:' . $expected . '://example.com&user:MyLoginName&password:MyGeneratedToken'); + $this->assertEquals($expected, $this->clientFlowLoginController->generateAppPassword('MyStateToken')); + } } |