Support CSP in Matomo/Piwik plugin
Change-Id: Ie80c6ffca714460c310e2b55ad9b3b63f5ae71ad
diff --git a/t/plugin/piwik.t b/t/plugin/piwik.t
index 5559cc6..a2ad05c 100644
--- a/t/plugin/piwik.t
+++ b/t/plugin/piwik.t
@@ -3,12 +3,12 @@
use Test::Mojo;
# Test the documentation
-my $t = Test::Mojo->new('Kalamar');
-
-$t->app->plugin('Piwik' => {
- url => 'https://piwik.korap.ids-mannheim.de/',
- site_id => 1,
- embed => 1
+my $t = Test::Mojo->new('Kalamar' => {
+ 'Piwik' => {
+ url => 'https://piwik.korap.ids-mannheim.de/',
+ site_id => 1,
+ embed => 1
+ }
});
# Load piwik
@@ -18,27 +18,63 @@
->status_is(200)
->text_like('section[name=piwik-opt-out] h3', qr!can I opt-out!)
->element_exists('section[name=piwik-opt-out] iframe')
+ ->content_unlike(qr!var _paq!)
+ ->content_unlike(qr!window\.addEventListener\('korapRequest!)
+ ->content_unlike(qr!setDocumentTitle!)
+ ->content_unlike(qr!setCustomUrl!)
+ ->content_unlike(qr!trackPageView!)
+ ->element_exists('script[src$="/js/tracking.js"]')
+ ;
+
+$t = Test::Mojo->new('Kalamar' => {
+ 'Piwik' => {
+ url => 'https://piwik.korap.ids-mannheim.de/',
+ site_id => 1,
+ embed => 1,
+ append => 'console.log("fun")'
+ }
+});
+
+$t->app->plugin('Kalamar::Plugin::Piwik');
+
+is($t->app->piwik_tag('as-script'), '<script src="/js/tracking.js"></script>' .
+ '<script src="https://piwik.korap.ids-mannheim.de/piwik.js" async defer></script>');
+
+$t->get_ok('/doc/faq')
+ ->status_is(200)
+ ->text_like('section[name=piwik-opt-out] h3', qr!can I opt-out!)
+ ->element_exists('section[name=piwik-opt-out] iframe')
+ ->element_exists('script[src$="/js/tracking.js"]')
+ ->content_unlike(qr!_paq!)
+ ->header_like('Content-Security-Policy',qr!connect-src 'self' [^;]*?https://piwik\.korap\.ids-mannheim\.de/!)
+ ->header_like('Content-Security-Policy',qr!img-src 'self' [^;]*?https://piwik\.korap\.ids-mannheim\.de/!)
+ ->header_like('Content-Security-Policy',qr!script-src 'self' [^;]*?https://piwik.korap.ids-mannheim.de/!)
+ ;
+
+$t->get_ok('/js/tracking.js')
+ ->status_is(200)
->content_like(qr!var _paq!)
- ->content_like(qr!window\.addEventListener\('korapRequest!)
- ->content_like(qr!setDocumentTitle!)
- ->content_like(qr!setCustomUrl!)
- ->content_like(qr!trackPageView!)
+ ->content_like(qr!;console\.log\("fun"\)!)
+ ->content_like(qr!;window\.addEventListener\('korapRequest!)
;
# No embedding
-$t->app->plugin('Piwik' => {
- url => 'https://piwik.korap.ids-mannheim.de/',
- site_id => 1,
- embed => 0
+$t = Test::Mojo->new('Kalamar' => {
+ 'Piwik' => {
+ url => 'https://piwik.korap.ids-mannheim.de/',
+ site_id => 1,
+ embed => 0
+ }
});
+$t->app->plugin('Kalamar::Plugin::Piwik');
$t->get_ok('/doc/faq')
->status_is(200)
->text_like('section[name=piwik-opt-out] h3', qr!can I opt-out!)
->element_exists_not('section[name=piwik-opt-out] iframe')
- ->content_unlike(qr!var _paq!)
+ ->content_unlike(qr!_paq!)
->content_unlike(qr!window\.addEventListener\('korapRequest!)
+ ->element_exists_not('script[src$="/js/tracking.js"]')
;
-
-done_testing();
+done_testing;