Merge pull request #19964 from nextcloud/bug/19963/invalid-constructor-template-response
Fix invalid instantiation of TemplateResponse if client not found
This commit is contained in:
commit
7e1bee3389
|
@ -85,11 +85,10 @@ class LoginRedirectorController extends Controller {
|
||||||
try {
|
try {
|
||||||
$client = $this->clientMapper->getByIdentifier($client_id);
|
$client = $this->clientMapper->getByIdentifier($client_id);
|
||||||
} catch (ClientNotFoundException $e) {
|
} catch (ClientNotFoundException $e) {
|
||||||
$response = new TemplateResponse('core', '404', 'guest');
|
$params = [
|
||||||
$response->setParams([
|
|
||||||
'content' => $this->l->t('Your client is not authorized to connect. Please inform the administrator of your client.'),
|
'content' => $this->l->t('Your client is not authorized to connect. Please inform the administrator of your client.'),
|
||||||
]);
|
];
|
||||||
return $response;
|
return new TemplateResponse('core', '404', $params, 'guest');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($response_type !== 'code') {
|
if ($response_type !== 'code') {
|
||||||
|
|
|
@ -24,15 +24,17 @@
|
||||||
|
|
||||||
namespace OCA\OAuth2\Tests\Controller;
|
namespace OCA\OAuth2\Tests\Controller;
|
||||||
|
|
||||||
use OCA\Files_Sharing\Tests\TestCase;
|
|
||||||
use OCA\OAuth2\Controller\LoginRedirectorController;
|
use OCA\OAuth2\Controller\LoginRedirectorController;
|
||||||
use OCA\OAuth2\Db\Client;
|
use OCA\OAuth2\Db\Client;
|
||||||
use OCA\OAuth2\Db\ClientMapper;
|
use OCA\OAuth2\Db\ClientMapper;
|
||||||
|
use OCA\OAuth2\Exceptions\ClientNotFoundException;
|
||||||
use OCP\AppFramework\Http\RedirectResponse;
|
use OCP\AppFramework\Http\RedirectResponse;
|
||||||
|
use OCP\AppFramework\Http\TemplateResponse;
|
||||||
use OCP\IL10N;
|
use OCP\IL10N;
|
||||||
use OCP\IRequest;
|
use OCP\IRequest;
|
||||||
use OCP\ISession;
|
use OCP\ISession;
|
||||||
use OCP\IURLGenerator;
|
use OCP\IURLGenerator;
|
||||||
|
use Test\TestCase;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @group DB
|
* @group DB
|
||||||
|
@ -114,4 +116,22 @@ class LoginRedirectorControllerTest extends TestCase {
|
||||||
$expected = new RedirectResponse('http://foo.bar?error=unsupported_response_type&state=MyState');
|
$expected = new RedirectResponse('http://foo.bar?error=unsupported_response_type&state=MyState');
|
||||||
$this->assertEquals($expected, $this->loginRedirectorController->authorize('MyClientId', 'MyState', 'wrongcode'));
|
$this->assertEquals($expected, $this->loginRedirectorController->authorize('MyClientId', 'MyState', 'wrongcode'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testClientNotFound() {
|
||||||
|
$clientNotFound = new ClientNotFoundException('could not find client test123', 0);
|
||||||
|
$this->clientMapper
|
||||||
|
->expects($this->once())
|
||||||
|
->method('getByIdentifier')
|
||||||
|
->willThrowException($clientNotFound);
|
||||||
|
$this->session
|
||||||
|
->expects($this->never())
|
||||||
|
->method('set');
|
||||||
|
|
||||||
|
$response = $this->loginRedirectorController->authorize('MyClientId', 'MyState', 'wrongcode');
|
||||||
|
$this->assertInstanceOf(TemplateResponse::class, $response);
|
||||||
|
|
||||||
|
/** @var TemplateResponse $response */
|
||||||
|
$this->assertEquals('404', $response->getTemplateName());
|
||||||
|
$this->assertEquals('guest', $response->getRenderAs());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue