|
13 | 13 |
|
14 | 14 | namespace Nelmio\SecurityBundle\Tests\Listener;
|
15 | 15 |
|
| 16 | +use Nelmio\SecurityBundle\ContentSecurityPolicy\ConfigurationDirectiveSetBuilder; |
16 | 17 | use Nelmio\SecurityBundle\ContentSecurityPolicy\DirectiveSet;
|
17 | 18 | use Nelmio\SecurityBundle\ContentSecurityPolicy\DirectiveSetBuilderInterface;
|
18 | 19 | use Nelmio\SecurityBundle\ContentSecurityPolicy\NonceGeneratorInterface;
|
@@ -481,6 +482,42 @@ public function testLegacyConstructorCreatesDirectiveSetBuilder(): void
|
481 | 482 | $this->assertSame('script-src https://enforce.deprecation-test.example.com', $response->headers->get('Content-Security-Policy'));
|
482 | 483 | }
|
483 | 484 |
|
| 485 | + public function testChangesThroughGetReportAreReflectedInTheHeader(): void |
| 486 | + { |
| 487 | + $listener = new ContentSecurityPolicyListener( |
| 488 | + new ConfigurationDirectiveSetBuilder(new PolicyManager(), [], 'report'), |
| 489 | + new ConfigurationDirectiveSetBuilder(new PolicyManager(), [], 'enforce'), |
| 490 | + $this->nonceGenerator, |
| 491 | + $this->shaComputer |
| 492 | + ); |
| 493 | + |
| 494 | + $report = $listener->getReport(); |
| 495 | + $report->setDirective('script-src', 'https://example.test'); |
| 496 | + |
| 497 | + $response = $this->callListener($listener, '/', true); |
| 498 | + |
| 499 | + $header = $response->headers->get('Content-Security-Policy-Report-Only'); |
| 500 | + $this->assertSame('script-src https://example.test', $header); |
| 501 | + } |
| 502 | + |
| 503 | + public function testChangesThroughGetEnforcementAreReflectedInTheHeader(): void |
| 504 | + { |
| 505 | + $listener = new ContentSecurityPolicyListener( |
| 506 | + new ConfigurationDirectiveSetBuilder(new PolicyManager(), [], 'report'), |
| 507 | + new ConfigurationDirectiveSetBuilder(new PolicyManager(), [], 'enforce'), |
| 508 | + $this->nonceGenerator, |
| 509 | + $this->shaComputer |
| 510 | + ); |
| 511 | + |
| 512 | + $enforce = $listener->getEnforcement(); |
| 513 | + $enforce->setDirective('script-src', 'https://example.test'); |
| 514 | + |
| 515 | + $response = $this->callListener($listener, '/', true); |
| 516 | + |
| 517 | + $header = $response->headers->get('Content-Security-Policy'); |
| 518 | + $this->assertSame('script-src https://example.test', $header); |
| 519 | + } |
| 520 | + |
484 | 521 | /**
|
485 | 522 | * @param array<string, string|true> $directives
|
486 | 523 | * @param list<string> $contentTypes
|
|
0 commit comments