Files
crm_ecosplay/tests/Controller/SonarBadgeControllerTest.php
Serreau Jovann 0f7c752d9a test: ajout tests SetPasswordController, SonarBadgeController, StatusPageController, WebhookDocuSealController
tests/Controller/SetPasswordControllerTest.php (nouveau, 5 tests):
- testGetFormRendered: token valide, affiche le formulaire
- testTokenExpired: token invalide, affiche la page expired
- testPostPasswordTooShort: mot de passe < 8 caracteres, erreur
- testPostPasswordMismatch: confirmation differente, erreur
- testPostSuccess: mot de passe valide, flush + redirect 302

tests/Controller/SonarBadgeControllerTest.php (nouveau, 2 tests):
- testBadgeSuccess: metric valide, retourne SVG avec Content-Type image/svg+xml
- testBadgeInvalidMetric: metric invalide, retourne 404

tests/Controller/StatusPageControllerTest.php (reecrit, 2 tests):
- testIndexEmpty: aucune categorie, retourne 200
- testIndexWithServices: categorie avec service, QueryBuilder mocke
  pour les logs, retourne 200

tests/Controller/WebhookDocuSealControllerTest.php (nouveau, 9 tests):
- testUnauthorized: mauvais secret dans le header, retourne 401
- testInvalidPayload: JSON invalide, retourne 400
- testIgnoredDocType: doc_type autre que attestation, retourne ignored
- testEmptySecret: secret vide bypass la verification
- testFormViewedAttestationNotFound: attestation introuvable, retourne 404
- testFormViewedAttestationFound: attestation trouvee, retourne 200
- testFormStarted: evenement started, retourne 200
- testFormDeclined: evenement declined, retourne 200
- testUnknownEvent: evenement inconnu, retourne ignored

Resultat: 368 tests, 718 assertions, 0 failures, 0 notices

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 00:12:54 +02:00

39 lines
1.4 KiB
PHP

<?php
namespace App\Tests\Controller;
use App\Controller\SonarBadgeController;
use PHPUnit\Framework\TestCase;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Contracts\HttpClient\HttpClientInterface;
use Symfony\Contracts\HttpClient\ResponseInterface;
class SonarBadgeControllerTest extends TestCase
{
public function testBadgeSuccess(): void
{
$httpResponse = $this->createStub(ResponseInterface::class);
$httpResponse->method('getContent')->willReturn('<svg>badge</svg>');
$httpClient = $this->createStub(HttpClientInterface::class);
$httpClient->method('request')->willReturn($httpResponse);
$controller = new SonarBadgeController();
$response = $controller->badge('coverage', $httpClient, 'https://sonar.test', 'project', 'token');
$this->assertSame(200, $response->getStatusCode());
$this->assertSame('image/svg+xml', $response->headers->get('Content-Type'));
$this->assertSame('<svg>badge</svg>', $response->getContent());
}
public function testBadgeInvalidMetric(): void
{
$httpClient = $this->createStub(HttpClientInterface::class);
$controller = new SonarBadgeController();
$response = $controller->badge('invalid_metric', $httpClient, 'https://sonar.test', 'project', 'token');
$this->assertSame(404, $response->getStatusCode());
}
}