From 6df0ce2b5f9f19f08b9bbd40e9b1015cbef842ca Mon Sep 17 00:00:00 2001 From: Panji Setya Nur Prawira Date: Wed, 3 Jun 2020 21:11:42 +0700 Subject: [PATCH] Fix generate html facade (#55) * Fix escaped quote when render html * Update test --- src/Sri.php | 9 +++++---- tests/GenerateSriHtmlTest.php | 6 +++--- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/Sri.php b/src/Sri.php index 90c64c6..1d95d7f 100644 --- a/src/Sri.php +++ b/src/Sri.php @@ -3,6 +3,7 @@ namespace Elhebert\SubresourceIntegrity; use Exception; +use Illuminate\Support\HtmlString; use Illuminate\Support\Str; class Sri @@ -17,21 +18,21 @@ public function __construct(string $algorithm) : 'sha256'; } - public function html(string $path, bool $useCredentials = false): string + public function html(string $path, bool $useCredentials = false): HtmlString { if (! config('subresource-integrity.enabled')) { - return ''; + return new HtmlString(''); } try { $integrity = $this->hash($path); } catch (\Exception $e) { - return ''; + return new HtmlString(''); } $crossOrigin = $useCredentials ? 'use-credentials' : 'anonymous'; - return "integrity='{$integrity}' crossorigin='{$crossOrigin}'"; + return new HtmlString('integrity="'.$integrity.'" crossorigin="'.$crossOrigin.'"'); } public function hash(string $path): string diff --git a/tests/GenerateSriHtmlTest.php b/tests/GenerateSriHtmlTest.php index 9542e97..9116c9c 100644 --- a/tests/GenerateSriHtmlTest.php +++ b/tests/GenerateSriHtmlTest.php @@ -18,7 +18,7 @@ public function it_generates_html_code_with_integrity() $hash = hash('sha256', file_get_contents('./tests/files/app.css'), true); $base64Hash = base64_encode($hash); - $this->assertStringContainsString("integrity='sha256-{$base64Hash}'", Sri::html('files/app.css')); + $this->assertStringContainsString('integrity="sha256-'.$base64Hash.'"', Sri::html('files/app.css')); } /** @test */ @@ -27,8 +27,8 @@ public function it_generate_html_code_with_credentials_and_integrity() $hash = hash('sha256', file_get_contents('./tests/files/app.css'), true); $base64Hash = base64_encode($hash); - $this->assertStringContainsString("integrity='sha256-{$base64Hash}'", Sri::html('files/app.css', true)); - $this->assertStringContainsString("crossorigin='use-credentials'", Sri::html('files/app.css', true)); + $this->assertStringContainsString('integrity="sha256-'.$base64Hash.'"', Sri::html('files/app.css', true)); + $this->assertStringContainsString('crossorigin="use-credentials"', Sri::html('files/app.css', true)); } /** @test */