test: update test suite

This commit is contained in:
Maël Gangloff 2025-10-16 02:31:08 +02:00
parent cd454750cf
commit afd736882e
No known key found for this signature in database
GPG Key ID: 11FDC81C24A7F629
3 changed files with 81 additions and 7 deletions

View File

@ -5,15 +5,19 @@ namespace App\Controller;
use KnpU\OAuth2ClientBundle\Client\ClientRegistry;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Bundle\SecurityBundle\Security;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\Routing\RouterInterface;
class HomeController extends AbstractController
{
public function __construct(private readonly RouterInterface $router)
{
public function __construct(
private readonly RouterInterface $router,
private readonly ParameterBagInterface $parameterBag,
) {
}
#[Route(path: '/', name: 'index')]
@ -25,8 +29,11 @@ class HomeController extends AbstractController
#[Route(path: '/login/oauth', name: 'oauth_connect')]
public function connectAction(ClientRegistry $clientRegistry): Response
{
if ($this->parameterBag->get('oauth_enabled')) {
return $clientRegistry->getClient('oauth')->redirect([], []);
}
throw new NotFoundHttpException();
}
#[Route(path: '/logout', name: 'logout')]
public function logout(Security $security): ?RedirectResponse

View File

@ -7,18 +7,15 @@ use App\Entity\Connector;
use App\Factory\UserFactory;
use App\Tests\AuthenticatedUserTrait;
use Zenstruck\Foundry\Test\Factories;
use Zenstruck\Foundry\Test\ResetDatabase;
final class ConnectorControllerTest extends ApiTestCase
{
use ResetDatabase;
use Factories;
use AuthenticatedUserTrait;
public function testGetConnectorCollection(): void
{
$testUser = UserFactory::createOne();
$client = ConnectorControllerTest::createClientWithCredentials(ConnectorControllerTest::getToken($testUser));
$client = ConnectorControllerTest::createClientWithCredentials(ConnectorControllerTest::getToken(UserFactory::createOne()));
$response = $client->request('GET', '/api/connectors');
@ -26,4 +23,50 @@ final class ConnectorControllerTest extends ApiTestCase
$this->assertMatchesResourceCollectionJsonSchema(Connector::class);
$this->assertCount(0, $response->toArray()['hydra:member']);
}
public function testCreateConnectorInvalidAuthData(): void
{
$client = ConnectorControllerTest::createClientWithCredentials(ConnectorControllerTest::getToken(UserFactory::createOne()));
$client->request('POST', '/api/connectors', ['json' => [
'authData' => [
'waiveRetractationPeriod' => true,
'acceptConditions' => true,
'ownerLegalAge' => true,
'token' => '',
],
'provider' => 'gandi',
]]);
$this->assertResponseStatusCodeSame(400);
}
public function testCreateConnectorInvalidConsent(): void
{
$client = ConnectorControllerTest::createClientWithCredentials(ConnectorControllerTest::getToken(UserFactory::createOne()));
$client->request('POST', '/api/connectors', ['json' => [
'authData' => [
'waiveRetractationPeriod' => true,
'acceptConditions' => true,
'ownerLegalAge' => false,
'token' => '',
],
'provider' => 'gandi',
]]);
$this->assertResponseStatusCodeSame(451);
}
public function testCreateConnectorInvalidAuthDataAdditionalKey(): void
{
$client = ConnectorControllerTest::createClientWithCredentials(ConnectorControllerTest::getToken(UserFactory::createOne()));
$client->request('POST', '/api/connectors', ['json' => [
'authData' => [
'waiveRetractationPeriod' => true,
'acceptConditions' => true,
'ownerLegalAge' => true,
'token' => '',
'unknownKey' => 'hello',
],
'provider' => 'gandi',
]]);
$this->assertResponseStatusCodeSame(400);
}
}

View File

@ -0,0 +1,24 @@
<?php
namespace App\Tests\Controller;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
class HomeControllerTest extends WebTestCase
{
public function testIndex(): void
{
$client = static::createClient();
$client->request('GET', '/');
$this->assertResponseIsSuccessful();
}
public function testConnectSsoReturnNotFound(): void
{
$client = static::createClient();
$client->request('GET', '/login/oauth');
$this->assertResponseStatusCodeSame(404);
}
}