Skip to content

Commit

Permalink
On ignore les requetes options lors des checks
Browse files Browse the repository at this point in the history
  • Loading branch information
Guillaume DUBOST committed Apr 19, 2019
1 parent 54608d5 commit 49223e0
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 10 deletions.
12 changes: 6 additions & 6 deletions composer.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 5 additions & 1 deletion features/suites/test.feature
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,17 @@ Scénario: On test que le service est bien présent
Etant donné que je veux récupérer un service "doctrine.etna_debug_service"
Alors ca devrait s'être bien déroulé


Scénario: on test une requète sur notre api de test alors qu'on n'a pas le droit.
Etant donné que j'ai le droit de faire 0 requetes SQL
Quand je fais un GET sur /product
Alors ca ne devrait pas s'être bien déroulé
Et l'exception devrait avoir comme message "Too many SQL queries (1)"

Scénario: ignorer les éventuelles requêtes SQL lors d'un appel OPTIONS
Etant donné que j'ai le droit de faire 0 requetes SQL
Quand je fais un OPTIONS sur /product
Alors ca devrait s'être bien déroulé

Scénario: on test une simple requête sur notre api de test sans restriction
Quand je fais un GET sur /product
Alors ca devrait s'être bien déroulé
Expand Down
15 changes: 12 additions & 3 deletions src/Services/EtnaDoctrineService.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\HttpKernel\KernelEvents;

/**
Expand Down Expand Up @@ -59,6 +60,10 @@ public function __construct(EntityManagerInterface $em)
*/
public function onKernelResponse(FilterResponseEvent $event): void
{
if (!is_a($this->debug, DebugStack::class)) {
return;
}

$debug = $this->debug;

$response = $event->getResponse();
Expand All @@ -75,11 +80,15 @@ public function onKernelResponse(FilterResponseEvent $event): void
/**
* Subscriber sur les Appels controller
* reset la debug stack et la rajoute à l'entityManager.
*
* @param GetResponseEvent $event Les données liées à l'évènement
*/
public function onKernelRequest(): void
public function onKernelRequest(GetResponseEvent $event): void
{
$this->debug = new DebugStack();
$this->em->getConnection()->getConfiguration()->setSQLLogger($this->debug);
if ('OPTIONS' !== $event->getRequest()->getMethod()) {
$this->debug = new DebugStack();
$this->em->getConnection()->getConfiguration()->setSQLLogger($this->debug);
}
}

/**
Expand Down

0 comments on commit 49223e0

Please sign in to comment.