*/
namespace OC\Core\Controller;
+use OC\AppFramework\Http\Request;
use OC\Authentication\Login\Chain;
use OC\Authentication\Login\LoginData;
use OC\Authentication\WebAuthn\Manager as WebAuthnManager;
$this->session->set('clearingExecutionContexts', '1');
$this->session->close();
- if ($this->request->getServerProtocol() === 'https') {
- // This feature is available only in secure contexts
+ if (!$this->request->isUserAgent([Request::USER_AGENT_CHROME, Request::USER_AGENT_ANDROID_MOBILE_CHROME])) {
$response->addHeader('Clear-Site-Data', '"cache", "storage"');
}
->with('nc_token')
->willReturn(null);
$this->request
- ->method('getServerProtocol')
- ->willReturn('https');
+ ->expects($this->once())
+ ->method('isUserAgent')
+ ->willReturn(false);
$this->config
->expects($this->never())
->method('deleteUserValue');
$this->assertEquals($expected, $this->loginController->logout());
}
+ public function testLogoutNoClearSiteData() {
+ $this->request
+ ->expects($this->once())
+ ->method('getCookie')
+ ->with('nc_token')
+ ->willReturn(null);
+ $this->request
+ ->expects($this->once())
+ ->method('isUserAgent')
+ ->willReturn(true);
+ $this->urlGenerator
+ ->expects($this->once())
+ ->method('linkToRouteAbsolute')
+ ->with('core.login.showLoginForm')
+ ->willReturn('/login');
+
+ $expected = new RedirectResponse('/login');
+ $this->assertEquals($expected, $this->loginController->logout());
+ }
+
public function testLogoutWithToken() {
$this->request
->expects($this->once())
->willReturn('MyLoginToken');
$this->request
->expects($this->once())
- ->method('getServerProtocol')
- ->willReturn('https');
+ ->method('isUserAgent')
+ ->willReturn(false);
$user = $this->createMock(IUser::class);
$user
->expects($this->once())