Skip to content

Commit

Permalink
Fix generate html facade (#55)
Browse files Browse the repository at this point in the history
* Fix escaped quote when render html

* Update test
  • Loading branch information
PanjiNamjaElf committed Jun 3, 2020
1 parent 6aa763a commit 6df0ce2
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 7 deletions.
9 changes: 5 additions & 4 deletions src/Sri.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
namespace Elhebert\SubresourceIntegrity;

use Exception;
use Illuminate\Support\HtmlString;
use Illuminate\Support\Str;

class Sri
Expand All @@ -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
Expand Down
6 changes: 3 additions & 3 deletions tests/GenerateSriHtmlTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -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 */
Expand All @@ -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 */
Expand Down

0 comments on commit 6df0ce2

Please sign in to comment.