| use Mojo::Base -strict; |
| use Test::More; |
| use Test::Mojo; |
| use Mojo::File qw/path/; |
| |
| # Test the documentation |
| |
| my $t = Test::Mojo->new('Kalamar'); |
| |
| my $app = $t->app; |
| |
| is($app->under_construction, '<p>Under Construction!</p>'); |
| |
| is($app->embedded_link_to('doc', 'privacy', 'privacy'), '<a class="embedded-link" href="/doc/privacy">privacy</a>'); |
| is($app->embedded_link_to('doc', 'privacy', 'korap', 'privacy'), '<a class="embedded-link" href="/doc/korap/privacy">privacy</a>'); |
| |
| |
| my $c = $app->build_controller; |
| $c->title('Example'); |
| is($c->page_title, '<h2 id="page-top">Example</h2>'); |
| |
| $t->get_ok('/' => { 'X-Forwarded-Host' => 'korap2.ids-mannheim.de'}) |
| ->attr_is('meta[property="og:url"]', 'content', '//korap2.ids-mannheim.de/') |
| ; |
| |
| # Test csp |
| $t->get_ok('/') |
| ->header_like('Content-Security-Policy', qr!default-src 'self';!) |
| ->header_like('Content-Security-Policy', qr!media-src 'none';!) |
| ->header_like('Content-Security-Policy', qr!object-src 'self';!) |
| ->header_like('Content-Security-Policy', qr!nonce-!) |
| ->content_like(qr/<script nonce/) |
| ->content_like(qr/document\.body\.classList\.remove\(\'no-js\'\);/) |
| ->header_is('X-Content-Type-Options', 'nosniff') |
| ->header_is('Access-Control-Allow-Methods','GET, POST, OPTIONS') |
| ->header_is('X-Frame-Options', 'sameorigin') |
| ->header_is('X-XSS-Protection', '1; mode=block') |
| ; |
| |
| # Test additions |
| $t = Test::Mojo->new('Kalamar' => { |
| 'Localize' => { |
| dict => { |
| en_howToCite => 'Citation Help', |
| de_howToCite => 'Zitierhilfe', |
| en_recentCorpusPub => 'Recent publications to refer to DeReKo as linguistic research data', |
| de_recentCorpusPub => 'Neuere Publikationen zu DeReKo als linguistische Forschungsdatengrundlage', |
| en_recentToolPub => 'Recent publications to refer to KorAP as a tool for research', |
| de_recentToolPub => 'Neuere Publikationen zu KorAP als Forschungswerkzeug', |
| } |
| }, |
| 'TagHelpers-ContentBlock' => { |
| footer => [ |
| { |
| inline => '<%= link_to loc("howToCite") => url_for(doc => { page => "faq" })->fragment("howToCite") %>', |
| position => 75 |
| } |
| ], |
| faq => [ |
| { |
| position => 50, |
| inline => <<'HOWTOCITE' |
| <section> |
| <h3 id="howToCite"><%= loc 'howToCite' %></h3> |
| %= include 'custom/partial/citation' |
| </section> |
| HOWTOCITE |
| } |
| ] |
| } |
| }); |
| |
| push @{$t->app->renderer->paths}, path(path(__FILE__)->dirname); |
| |
| $t->get_ok('/') |
| ->text_is('footer a:nth-child(1)', 'Citation Help') |
| ->attr_like('footer a:nth-child(1)', 'href', qr'/doc/+faq#howToCite'); |
| |
| $t->get_ok('/doc//faq#howToCite') |
| ->text_is('#howToCite', 'Citation Help') |
| ->text_is('section > section h4', 'Recent publications to refer to DeReKo as linguistic research data') |
| ; |
| |
| done_testing; |
| |
| 1; |