Akron | 9490e3b | 2019-10-17 12:26:29 +0200 | [diff] [blame] | 1 | use Mojo::Base -strict; |
| 2 | use Test::More; |
| 3 | use Test::Mojo; |
Akron | a24af0a | 2021-01-11 17:38:40 +0100 | [diff] [blame] | 4 | use Mojo::File qw/path/; |
Akron | 9490e3b | 2019-10-17 12:26:29 +0200 | [diff] [blame] | 5 | |
| 6 | # Test the documentation |
| 7 | |
| 8 | my $t = Test::Mojo->new('Kalamar'); |
| 9 | |
| 10 | my $app = $t->app; |
| 11 | |
| 12 | is($app->under_construction, '<p>Under Construction!</p>'); |
| 13 | |
Akron | 3cfa26d | 2019-10-24 15:17:34 +0200 | [diff] [blame] | 14 | is($app->embedded_link_to('doc', 'privacy', 'privacy'), '<a class="embedded-link" href="/doc/privacy">privacy</a>'); |
| 15 | is($app->embedded_link_to('doc', 'privacy', 'korap', 'privacy'), '<a class="embedded-link" href="/doc/korap/privacy">privacy</a>'); |
Akron | 9490e3b | 2019-10-17 12:26:29 +0200 | [diff] [blame] | 16 | |
| 17 | |
| 18 | my $c = $app->build_controller; |
| 19 | $c->title('Example'); |
| 20 | is($c->page_title, '<h2 id="page-top">Example</h2>'); |
| 21 | |
Akron | 90be03b | 2020-02-03 16:13:37 +0100 | [diff] [blame] | 22 | $t->get_ok('/' => { 'X-Forwarded-Host' => 'korap2.ids-mannheim.de'}) |
| 23 | ->attr_is('meta[property="og:url"]', 'content', '//korap2.ids-mannheim.de/') |
| 24 | ; |
| 25 | |
Akron | b7b91c5 | 2021-01-27 17:46:52 +0100 | [diff] [blame] | 26 | # Test csp |
Akron | bc6b3f2 | 2021-01-13 14:53:12 +0100 | [diff] [blame] | 27 | $t->get_ok('/') |
| 28 | ->header_like('Content-Security-Policy', qr!default-src 'self';!) |
| 29 | ->header_like('Content-Security-Policy', qr!media-src 'none';!) |
| 30 | ->header_like('Content-Security-Policy', qr!object-src 'self';!) |
Akron | b7b91c5 | 2021-01-27 17:46:52 +0100 | [diff] [blame] | 31 | ->header_like('Content-Security-Policy', qr!nonce-!) |
| 32 | ->content_like(qr/<script nonce/) |
| 33 | ->content_like(qr/document\.body\.classList\.remove\(\'no-js\'\);/) |
Akron | 807225b | 2021-01-13 18:00:13 +0100 | [diff] [blame] | 34 | ->header_is('X-Content-Type-Options', 'nosniff') |
Akron | 5b6d727 | 2021-01-21 11:26:02 +0100 | [diff] [blame] | 35 | ->header_is('Access-Control-Allow-Methods','GET, POST, OPTIONS') |
Akron | 88fc41c | 2021-01-21 15:25:49 +0100 | [diff] [blame] | 36 | ->header_is('X-Frame-Options', 'sameorigin') |
Akron | 52b32d0 | 2021-01-21 17:37:19 +0100 | [diff] [blame^] | 37 | ->header_is('X-XSS-Protection', '1; mode=block') |
Akron | bc6b3f2 | 2021-01-13 14:53:12 +0100 | [diff] [blame] | 38 | ; |
| 39 | |
Akron | a24af0a | 2021-01-11 17:38:40 +0100 | [diff] [blame] | 40 | # Test additions |
| 41 | $t = Test::Mojo->new('Kalamar' => { |
| 42 | 'Localize' => { |
| 43 | dict => { |
| 44 | en_howToCite => 'Citation Help', |
| 45 | de_howToCite => 'Zitierhilfe', |
| 46 | en_recentCorpusPub => 'Recent publications to refer to DeReKo as linguistic research data', |
| 47 | de_recentCorpusPub => 'Neuere Publikationen zu DeReKo als linguistische Forschungsdatengrundlage', |
| 48 | en_recentToolPub => 'Recent publications to refer to KorAP as a tool for research', |
| 49 | de_recentToolPub => 'Neuere Publikationen zu KorAP als Forschungswerkzeug', |
| 50 | } |
| 51 | }, |
| 52 | 'TagHelpers-ContentBlock' => { |
| 53 | footer => [ |
| 54 | { |
| 55 | inline => '<%= link_to loc("howToCite") => url_for(doc => { page => "faq" })->fragment("howToCite") %>', |
| 56 | position => 75 |
| 57 | } |
| 58 | ], |
| 59 | faq => [ |
| 60 | { |
| 61 | position => 50, |
| 62 | inline => <<'HOWTOCITE' |
| 63 | <section> |
| 64 | <h3 id="howToCite"><%= loc 'howToCite' %></h3> |
| 65 | %= include 'custom/partial/citation' |
| 66 | </section> |
| 67 | HOWTOCITE |
| 68 | } |
| 69 | ] |
| 70 | } |
| 71 | }); |
| 72 | |
| 73 | push @{$t->app->renderer->paths}, path(path(__FILE__)->dirname); |
| 74 | |
| 75 | $t->get_ok('/') |
| 76 | ->text_is('footer a:nth-child(1)', 'Citation Help') |
| 77 | ->attr_like('footer a:nth-child(1)', 'href', qr'/doc/+faq#howToCite'); |
| 78 | |
| 79 | $t->get_ok('/doc//faq#howToCite') |
| 80 | ->text_is('#howToCite', 'Citation Help') |
| 81 | ->text_is('section > section h4', 'Recent publications to refer to DeReKo as linguistic research data') |
| 82 | ; |
| 83 | |
Akron | 9490e3b | 2019-10-17 12:26:29 +0200 | [diff] [blame] | 84 | done_testing; |
| 85 | |
| 86 | 1; |