PHP Classes

File: test/ParserTest.php

Recommend this page to a friend!
  Classes of Scott Arciszewski   PHP CSP Header Builder   test/ParserTest.php   Download  
File: test/ParserTest.php
Role: Class source
Content type: text/plain
Description: Class source
Class: PHP CSP Header Builder
Generate Content Security Policy headers
Author: By
Last change:
Date: 5 months ago
Size: 1,988 bytes
 

Contents

Class file image Download
<?php

namespace ParagonIE\CSPBuilderTest;

use
PHPUnit\Framework\TestCase;
use
ParagonIE\CSPBuilder\CSPBuilder;

/**
 * Class ParserTest
 * @package ParagonIE\CSPBuilderTest
 */
class ParserTest extends TestCase
{
   
/**
     * @covers CSPBuilder::fromHeader()
     * @dataProvider cspDirectivesProvider
     */
   
public function testParsesCspHeader(string $header): void
   
{
       
$csp = CSPBuilder::fromHeader($header)
            ->
disableHttpsTransformOnHttpsConnections()
            ->
disableOldBrowserSupport()
        ;

       
$result = $csp->compile();

       
$this->assertSame($header, $result);
    }

    public static function
cspDirectivesProvider(): \Generator
   
{
        yield [
"default-src 'self'"];
        yield [
"script-src 'none'"];
        yield [
"script-src 'unsafe-eval'"];
        yield [
"script-src 'unsafe-inline'"];
        yield [
"style-src 'none'"];
        yield [
"style-src 'self'"];
        yield [
"style-src 'unsafe-inline'"];
        yield [
"script-src 'self' example.com"];
        yield [
"script-src 'self' example.com; style-src 'self'"];
        yield [
"script-src 'self' example.com; style-src 'self' 'unsafe-inline'"];
        yield [
"script-src 'self' example.com; style-src 'self' 'unsafe-inline'; upgrade-insecure-requests"];
        yield [
"frame-ancestors 'none'; script-src 'self' example.com"];
        yield [
"img-src 'self' data:; script-src 'self' example.com"];
        yield [
"frame-ancestors 'self' https://example.org https://example.com https://store.example.com"];
        yield [
"default-src 'self'; script-src https://example.com"];
        yield [
"base-uri 'self'; report-uri https://endpoint.com; report-to csp-endpoint"];
        yield [
"font-src https://example.com/"];
        yield [
"script-src 'unsafe-hashed-attributes'"];
        yield [
"plugin-types application/x-java-applet"];
        yield [
"form-action 'none'; sandbox allow-scripts; style-src-attr 'none'; worker-src https://example.com/"];
    }
}