| Akron | b80341d | 2018-10-15 19:46:23 +0200 | [diff] [blame] | 1 | use Mojo::Base -strict; | 
|  | 2 | use Test::Mojo; | 
|  | 3 | use Test::More; | 
|  | 4 | use Mojo::File qw/path/; | 
|  | 5 |  | 
|  | 6 |  | 
|  | 7 | ##################### | 
|  | 8 | # Start Fake server # | 
|  | 9 | ##################### | 
| Akron | 63d963b | 2019-07-05 15:35:51 +0200 | [diff] [blame^] | 10 | my $mount_point = '/realapi/'; | 
| Akron | b80341d | 2018-10-15 19:46:23 +0200 | [diff] [blame] | 11 | $ENV{KALAMAR_API} = $mount_point; | 
|  | 12 |  | 
|  | 13 | my $t = Test::Mojo->new('Kalamar'); | 
|  | 14 |  | 
|  | 15 | # Mount fake backend | 
|  | 16 | # Get the fixture path | 
| Akron | 73f3608 | 2018-10-25 15:34:59 +0200 | [diff] [blame] | 17 | my $fixtures_path = path(Mojo::File->new(__FILE__)->dirname, 'server'); | 
| Akron | b80341d | 2018-10-15 19:46:23 +0200 | [diff] [blame] | 18 | my $fake_backend = $t->app->plugin( | 
|  | 19 | Mount => { | 
|  | 20 | $mount_point => | 
| Akron | 73f3608 | 2018-10-25 15:34:59 +0200 | [diff] [blame] | 21 | $fixtures_path->child('mock.pl') | 
| Akron | b80341d | 2018-10-15 19:46:23 +0200 | [diff] [blame] | 22 | } | 
|  | 23 | ); | 
|  | 24 | # Configure fake backend | 
|  | 25 | $fake_backend->pattern->defaults->{app}->log($t->app->log); | 
|  | 26 |  | 
|  | 27 | # Query passed | 
| Akron | 8ea8429 | 2018-10-24 13:41:52 +0200 | [diff] [blame] | 28 | $t->get_ok('/corpus/WPD15/232/39681/p2133-2134?spans=false&foundry=*') | 
| Akron | b80341d | 2018-10-15 19:46:23 +0200 | [diff] [blame] | 29 | ->status_is(200) | 
|  | 30 | ->json_is('/textSigle', 'WPD15/232/39681') | 
| Akron | b8d0b40 | 2018-10-18 23:51:52 +0200 | [diff] [blame] | 31 | ->json_like('/snippet', qr!<span class=\"context-left\">!) | 
| Akron | 8ea8429 | 2018-10-24 13:41:52 +0200 | [diff] [blame] | 32 | ->header_isnt('X-Kalamar-Cache', 'true') | 
| Akron | b80341d | 2018-10-15 19:46:23 +0200 | [diff] [blame] | 33 | ; | 
|  | 34 |  | 
| Akron | 8ea8429 | 2018-10-24 13:41:52 +0200 | [diff] [blame] | 35 | $t->get_ok('/corpus/GOE/AGF/02286/p75682-75683') | 
| Akron | b8d0b40 | 2018-10-18 23:51:52 +0200 | [diff] [blame] | 36 | ->status_is(200) | 
|  | 37 | ->json_is('/textSigle', 'GOE/AGF/02286') | 
|  | 38 | ->json_is('/title','Materialien zur Geschichte der Farbenlehre') | 
|  | 39 | ; | 
|  | 40 |  | 
|  | 41 | # TODO: | 
|  | 42 | #   It's surprising, that it doesn't return a 404! | 
| Akron | 8ea8429 | 2018-10-24 13:41:52 +0200 | [diff] [blame] | 43 | $t->get_ok('/corpus/notfound/X/X/p0-1') | 
| Akron | b8d0b40 | 2018-10-18 23:51:52 +0200 | [diff] [blame] | 44 | ->status_is(200) | 
|  | 45 | ->json_is('/textSigle', 'NOTFOUND/X/X') | 
|  | 46 | ->json_is('/corpusID', undef) | 
|  | 47 | ; | 
|  | 48 |  | 
|  | 49 | # TODO: | 
|  | 50 | #   Should probably return a 500! | 
| Akron | 8ea8429 | 2018-10-24 13:41:52 +0200 | [diff] [blame] | 51 | $t->get_ok('/corpus/fail/x/x/p0-0') | 
| Akron | b8d0b40 | 2018-10-18 23:51:52 +0200 | [diff] [blame] | 52 | ->status_is(200) | 
|  | 53 | ->json_is('/notifications/0/0', 'error') | 
| Akron | 2e2098e | 2018-10-24 20:16:24 +0200 | [diff] [blame] | 54 | ->json_like('/notifications/0/1', qr!Unable to load query response from .+?response_matchinfo_fail_x_x_p0-0\.json!) | 
| Akron | b8d0b40 | 2018-10-18 23:51:52 +0200 | [diff] [blame] | 55 | ; | 
|  | 56 |  | 
|  | 57 | # TODO: | 
|  | 58 | #   Should probably return a 4xx! | 
| Akron | 8ea8429 | 2018-10-24 13:41:52 +0200 | [diff] [blame] | 59 | $t->get_ok('/corpus/GOE/AGF/02286/p-2-0') | 
| Akron | b8d0b40 | 2018-10-18 23:51:52 +0200 | [diff] [blame] | 60 | ->status_is(200) | 
|  | 61 | ->json_is('/notifications/0/0', 'error') | 
|  | 62 | ->json_is('/notifications/0/1', '730: Invalid match identifier') | 
|  | 63 | ; | 
|  | 64 |  | 
|  | 65 | # TODO: | 
|  | 66 | #   It's surprising, that it doesn't return a 404! | 
| Akron | 8ea8429 | 2018-10-24 13:41:52 +0200 | [diff] [blame] | 67 | $t->get_ok('/corpus/notfound2/X/X/p0-1') | 
| Akron | 7093b81 | 2018-10-19 17:28:21 +0200 | [diff] [blame] | 68 | ->status_is(404) | 
| Akron | b8d0b40 | 2018-10-18 23:51:52 +0200 | [diff] [blame] | 69 | ->json_is('/notifications/0/0', 'error') | 
|  | 70 | ->json_is('/notifications/0/1', '404: Not Found') | 
|  | 71 | ; | 
|  | 72 |  | 
| Akron | 8ea8429 | 2018-10-24 13:41:52 +0200 | [diff] [blame] | 73 | $t->get_ok('/corpus/brokenerr/X/X/p0-1') | 
| Akron | d0ec308 | 2018-10-19 18:53:09 +0200 | [diff] [blame] | 74 | ->status_is(409) | 
|  | 75 | ->json_is('/notifications/0/0', 'error') | 
|  | 76 | ->json_is('/notifications/0/1', 'Message structure failed') | 
|  | 77 | ; | 
|  | 78 |  | 
| Akron | 8ea8429 | 2018-10-24 13:41:52 +0200 | [diff] [blame] | 79 | $t->get_ok('/corpus/brokenwarn/X/X/p0-1') | 
| Akron | d0ec308 | 2018-10-19 18:53:09 +0200 | [diff] [blame] | 80 | ->status_is(200) | 
| Akron | a3c353c | 2019-02-14 23:50:00 +0100 | [diff] [blame] | 81 | ->json_is('/notifications/0/0', 'warn') | 
| Akron | d0ec308 | 2018-10-19 18:53:09 +0200 | [diff] [blame] | 82 | ->json_is('/notifications/0/1', '1: Warning 1') | 
|  | 83 | ->json_is('/notifications/1/0', 'error') | 
|  | 84 | ->json_is('/notifications/1/1', 'Message structure failed') | 
|  | 85 | ; | 
|  | 86 |  | 
| Akron | 8ea8429 | 2018-10-24 13:41:52 +0200 | [diff] [blame] | 87 | $t->get_ok('/corpus/brokenerr2/X/X/p0-1') | 
| Akron | d0ec308 | 2018-10-19 18:53:09 +0200 | [diff] [blame] | 88 | ->status_is(417) | 
|  | 89 | ->json_is('/notifications/0/0', 'error') | 
|  | 90 | ->json_is('/notifications/0/1', 'Message structure failed') | 
|  | 91 | ; | 
|  | 92 |  | 
| Akron | f21eb49 | 2018-10-22 15:17:56 +0200 | [diff] [blame] | 93 | # Get from cache | 
| Akron | 8ea8429 | 2018-10-24 13:41:52 +0200 | [diff] [blame] | 94 | $t->get_ok('/corpus/WPD15/232/39681/p2133-2134?spans=false&foundry=*') | 
| Akron | f21eb49 | 2018-10-22 15:17:56 +0200 | [diff] [blame] | 95 | ->status_is(200) | 
|  | 96 | ->json_is('/textSigle', 'WPD15/232/39681') | 
|  | 97 | ->json_like('/snippet', qr!<span class=\"context-left\">!) | 
| Akron | 8ea8429 | 2018-10-24 13:41:52 +0200 | [diff] [blame] | 98 | ->header_is('X-Kalamar-Cache', 'true') | 
| Akron | f21eb49 | 2018-10-22 15:17:56 +0200 | [diff] [blame] | 99 | ; | 
|  | 100 |  | 
| Akron | c4be819 | 2018-10-25 16:07:53 +0200 | [diff] [blame] | 101 | # Check for validation error | 
|  | 102 | $t->get_ok('/corpus/WPD15/232/39681/p2133-2134?spans=no') | 
|  | 103 | ->status_is(400) | 
|  | 104 | ->json_is('/notifications/0/1', 'Parameter "spans" invalid') | 
|  | 105 | ; | 
| Akron | b8d0b40 | 2018-10-18 23:51:52 +0200 | [diff] [blame] | 106 |  | 
| Akron | b80341d | 2018-10-15 19:46:23 +0200 | [diff] [blame] | 107 | done_testing; | 
| Akron | 7093b81 | 2018-10-19 17:28:21 +0200 | [diff] [blame] | 108 | __END__ |