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 {
|
||||
$client = $this->clientMapper->getByIdentifier($client_id);
|
||||
} catch (ClientNotFoundException $e) {
|
||||
$response = new TemplateResponse('core', '404', 'guest');
|
||||
$response->setParams([
|
||||
$params = [
|
||||
'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') {
|
||||
|
|
|
@ -24,15 +24,17 @@
|
|||
|
||||
namespace OCA\OAuth2\Tests\Controller;
|
||||
|
||||
use OCA\Files_Sharing\Tests\TestCase;
|
||||
use OCA\OAuth2\Controller\LoginRedirectorController;
|
||||
use OCA\OAuth2\Db\Client;
|
||||
use OCA\OAuth2\Db\ClientMapper;
|
||||
use OCA\OAuth2\Exceptions\ClientNotFoundException;
|
||||
use OCP\AppFramework\Http\RedirectResponse;
|
||||
use OCP\AppFramework\Http\TemplateResponse;
|
||||
use OCP\IL10N;
|
||||
use OCP\IRequest;
|
||||
use OCP\ISession;
|
||||
use OCP\IURLGenerator;
|
||||
use Test\TestCase;
|
||||
|
||||
/**
|
||||
* @group DB
|
||||
|
@ -114,4 +116,22 @@ class LoginRedirectorControllerTest extends TestCase {
|
|||
$expected = new RedirectResponse('http://foo.bar?error=unsupported_response_type&state=MyState');
|
||||
$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