cpantestlogs/Dancer2::Plugin::HTTP::Auth::Extensible_genfailure.log
2017-05-02 18:44:36 -07:00

2370 lines
143 KiB
Text

perl-blead
==========
cpanm (App::cpanminus) 1.7043 on perl 5.026000 built for x86_64-linux
Work directory is /home/ryan/.cpanm/work/1493730395.15855
You have make /usr/bin/make
You have LWP 6.26
You have /bin/tar: tar (GNU tar) 1.29
Copyright (C) 2015 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by John Gilmore and Jay Fenlason.
You have /usr/bin/unzip
Searching Dancer2::Plugin::HTTP::Auth::Extensible () on cpanmetadb ...
Unpacking Dancer2-Plugin-HTTP-Auth-Extensible-0.121.tar.gz
--> Working on Dancer2::Plugin::HTTP::Auth::Extensible
Fetching http://www.cpan.org/authors/id/V/VA/VANHOESEL/Dancer2-Plugin-HTTP-Auth-Extensible-0.121.tar.gz ... OK
Dancer2-Plugin-HTTP-Auth-Extensible-0.121/
Dancer2-Plugin-HTTP-Auth-Extensible-0.121/Changes
Dancer2-Plugin-HTTP-Auth-Extensible-0.121/MANIFEST
Dancer2-Plugin-HTTP-Auth-Extensible-0.121/META.json
Dancer2-Plugin-HTTP-Auth-Extensible-0.121/META.yml
Dancer2-Plugin-HTTP-Auth-Extensible-0.121/Makefile.PL
Dancer2-Plugin-HTTP-Auth-Extensible-0.121/README
Dancer2-Plugin-HTTP-Auth-Extensible-0.121/example/
Dancer2-Plugin-HTTP-Auth-Extensible-0.121/ignore.txt
Dancer2-Plugin-HTTP-Auth-Extensible-0.121/lib/
Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t/
Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t/00-load.t
Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t/10-config_normal.t
Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t/20-http_username.t
Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t/21-http_realm.t
Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t/30-authenticate_Basic.t
Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t/boilerplate.t
Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t/manifest.t
Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t/pod.t
Dancer2-Plugin-HTTP-Auth-Extensible-0.121/lib/Dancer2/
Dancer2-Plugin-HTTP-Auth-Extensible-0.121/lib/Dancer2/Plugin/
Dancer2-Plugin-HTTP-Auth-Extensible-0.121/lib/Dancer2/Plugin/HTTP/
Dancer2-Plugin-HTTP-Auth-Extensible-0.121/lib/Dancer2/Plugin/HTTP/Auth/
Dancer2-Plugin-HTTP-Auth-Extensible-0.121/lib/Dancer2/Plugin/HTTP/Auth/Extensible.pm
Dancer2-Plugin-HTTP-Auth-Extensible-0.121/example/authextest.pl
Dancer2-Plugin-HTTP-Auth-Extensible-0.121/example/config.yml
Entering Dancer2-Plugin-HTTP-Auth-Extensible-0.121
Checking configure dependencies from META.json
Checking if you have ExtUtils::MakeMaker 6.58 ... Yes (7.24)
Running Makefile.PL
Configuring Dancer2-Plugin-HTTP-Auth-Extensible-0.121 ... Checking if your kit is complete...
Looks good
Generating a Unix-style Makefile
Writing Makefile for Dancer2::Plugin::HTTP::Auth::Extensible
Writing MYMETA.yml and MYMETA.json
Checking dependencies from MYMETA.json ...
Checking if you have Dancer2::Plugin::Auth::Extensible 0 ... Yes (0.703)
Checking if you have HTTP::Headers::ActionPack::Authorization 0 ... Yes (0.09)
Checking if you have HTTP::Headers::ActionPack::WWWAuthenticate 0 ... Yes (0.09)
Checking if you have Test::More 0 ... Yes (1.302083)
Checking if you have Dancer2::Plugin 0 ... Yes (0.205000)
OK
Building and testing Dancer2-Plugin-HTTP-Auth-Extensible-0.121 ... cp lib/Dancer2/Plugin/HTTP/Auth/Extensible.pm blib/lib/Dancer2/Plugin/HTTP/Auth/Extensible.pm
Manifying 1 pod document
PERL_DL_NONLAZY=1 "/home/ryan/perl5/perlbrew/perls/perl-blead/bin/perl5.26.0" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
# Testing Dancer2::Plugin::HTTP::Auth::Extensible 0.121, Perl 5.026000, /home/ryan/perl5/perlbrew/perls/perl-blead/bin/perl5.26.0
t/00-load.t ................ ok
Use of uninitialized value $Dancer2::Plugin::CUR_PLUGIN in string at /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Plugin.pm line 262.
# Failed test 'Status 401: Unauthorized for realm_one, the default'
# at t/10-config_normal.t line 87.
# got: '500'
# expected: '401'
# Failed test 'HTTP-field: WWW-Authentication for realm_one, the default'
# at t/10-config_normal.t line 92.
# got: undef
# expected: 'Basic realm="realm_one"'
Use of uninitialized value $Dancer2::Plugin::CUR_PLUGIN in string at /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Plugin.pm line 262.
# Failed test 'Status 401: Unauthorized for realm_one'
# at t/10-config_normal.t line 103.
# got: '500'
# expected: '401'
# Failed test 'HTTP-field: WWW-Authentication for realm_one'
# at t/10-config_normal.t line 108.
# got: undef
# expected: 'Basic realm="realm_one"'
Use of uninitialized value $Dancer2::Plugin::CUR_PLUGIN in string at /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Plugin.pm line 262.
# Failed test 'Status 401: Unauthorized for realm_two'
# at t/10-config_normal.t line 119.
# got: '500'
# expected: '401'
# Failed test 'HTTP-field: WWW-Authentication for realm_two'
# at t/10-config_normal.t line 124.
# got: undef
# expected: 'Basic realm="realm_two"'
Use of uninitialized value $Dancer2::Plugin::CUR_PLUGIN in string at /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Plugin.pm line 262.
# Failed test 'Prompt 500: realm does not exist'
# at t/10-config_normal.t line 140.
# '---
# exception: "Can't find originating plugin at /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Route.pm line 140.\n"
# message: ''
# status: 500
# title: 'Error 500 - Internal Server Error'
# '
# doesn't match '(?^:required realm does not exist: 'realm_bad')'
# Looks like you failed 7 tests of 9.
t/10-config_normal.t .......
Dubious, test returned 7 (wstat 1792, 0x700)
Failed 7/9 subtests
Use of uninitialized value $Dancer2::Plugin::CUR_PLUGIN in string at /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Plugin.pm line 262.
# Failed test 'get http_username authenticated'
# at t/20-http_username.t line 83.
# '---
# exception: "Can't find originating plugin at /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Route.pm line 140.\n"
# message: ''
# status: 500
# title: 'Error 500 - Internal Server Error'
# '
# doesn't match '(?^:variable got: '.*')'
Use of uninitialized value $Dancer2::Plugin::CUR_PLUGIN in string at /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Plugin.pm line 262.
# Failed test 'put http_username authenticated'
# at t/20-http_username.t line 108.
# '---
# exception: "Can't find originating plugin at /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Route.pm line 140.\n"
# message: ''
# status: 500
# title: 'Error 500 - Internal Server Error'
# '
# doesn't match '(?^:variable set: 'NEW')'
POTENTIONAL SECURITY BREACH: "impersonating different user: 'NEW'" at /home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/blib/lib/Dancer2/Plugin/HTTP/Auth/Extensible.pm line 574.
# Looks like you failed 2 tests of 5.
t/20-http_username.t .......
Dubious, test returned 2 (wstat 512, 0x200)
Failed 2/5 subtests
Use of uninitialized value $Dancer2::Plugin::CUR_PLUGIN in string at /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Plugin.pm line 262.
# Failed test 'get http_realm authenticated'
# at t/21-http_realm.t line 83.
# '---
# exception: "Can't find originating plugin at /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Route.pm line 140.\n"
# message: ''
# status: 500
# title: 'Error 500 - Internal Server Error'
# '
# doesn't match '(?^:variable got: '.*')'
Use of uninitialized value $Dancer2::Plugin::CUR_PLUGIN in string at /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Plugin.pm line 262.
# Failed test 'put http_realm authenticated'
# at t/21-http_realm.t line 108.
# '---
# exception: "Can't find originating plugin at /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Route.pm line 140.\n"
# message: ''
# status: 500
# title: 'Error 500 - Internal Server Error'
# '
# doesn't match '(?^:variable set: 'NEW')'
POTENTIONAL SECURITY BREACH: "switching to different realm: 'NEW'" at /home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/blib/lib/Dancer2/Plugin/HTTP/Auth/Extensible.pm line 615.
# Looks like you failed 2 tests of 5.
t/21-http_realm.t ..........
Dubious, test returned 2 (wstat 512, 0x200)
Failed 2/5 subtests
Use of uninitialized value $Dancer2::Plugin::CUR_PLUGIN in string at /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Plugin.pm line 262.
# Failed test 'Status 401: without HTTP-field Autorization'
# at t/30-authenticate_Basic.t line 110.
# got: '500'
# expected: '401'
# Failed test 'HTTP-field: WWW-Authentication without HTTP-field Autorization'
# at t/30-authenticate_Basic.t line 115.
# got: undef
# expected: 'Basic realm="some_realm"'
Use of uninitialized value $Dancer2::Plugin::CUR_PLUGIN in string at /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Plugin.pm line 262.
# Failed test 'Status 401: without proper credentials'
# at t/30-authenticate_Basic.t line 133.
# got: '500'
# expected: '401'
# Failed test 'HTTP-field: WWW-Authentication without proper credentials'
# at t/30-authenticate_Basic.t line 138.
# got: undef
# expected: 'Basic realm="some_realm"'
Use of uninitialized value $Dancer2::Plugin::CUR_PLUGIN in string at /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Plugin.pm line 262.
# Failed test 'Status 200: with the right credentials'
# at t/30-authenticate_Basic.t line 155.
# got: '500'
# expected: '200'
# Failed test 'Delivering: with the right credentials'
# at t/30-authenticate_Basic.t line 165.
# got: '<!DOCTYPE html>
# <html lang="en">
# <head>
# <meta charset="UTF-8">
# <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
# <title>Error 500 - Internal Server Error</title>
# <link rel="stylesheet" href="http://localhost/css/error.css">
# </head>
# <body>
# <h1>Error 500 - Internal Server Error</h1>
# <div id="content">
# <h2>Runtime Error</h2><pre class="error">Can&#39;t find originating plugin at /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Route.pm line 140.
# </pre>
# <div class="title">/home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Route.pm around line 140</div><pre class="content"><table class="context">
# <tr><th>135</th><td>sub execute {</td></tr>
# <tr><th>136</th><td> my ( $self, $app, @args ) = @_;</td></tr>
# <tr><th>137</th><td> local $REQUEST = $app-&gt;request;</td></tr>
# <tr><th>138</th><td> local $RESPONSE = $app-&gt;response;</td></tr>
# <tr><th>139</th><td></td></tr>
# <tr class="errline"><th>140</th><td> my $content = $self-&gt;code-&gt;( $app, @args );</td></tr>
# <tr><th>141</th><td></td></tr>
# <tr><th>142</th><td> # users may set content in the response. If the response has</td></tr>
# <tr><th>143</th><td> # content, and the returned value from the route code is not</td></tr>
# <tr><th>144</th><td> # an object (well, reference) we ignore the returned value</td></tr>
# <tr><th>145</th><td> # and use the existing content in the response instead.</td></tr>
# </table></pre>
# <div class="title">Stack</div><pre class="content">main in t/30-authenticate_Basic.t l. 170
# Plack::Test in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Test.pm l. 38
# main in t/30-authenticate_Basic.t l. 154
# Plack::Test in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Test.pm l. 38
# Plack::Test::MockHTTP in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Test/MockHTTP.pm l. 27
# Try::Tiny in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Try/Tiny.pm l. 94
# Try::Tiny in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Try/Tiny.pm l. 101
# Plack::Test::MockHTTP in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Test/MockHTTP.pm l. 24
# Dancer2::Core::Runner in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Runner.pm l. 213
# Dancer2::Core::Dispatcher in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Dispatcher.pm l. 36
# Plack::Component in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Component.pm l. 50
# Plack::Middleware::Head in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Middleware/Head.pm l. 10
# Plack::Component in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Component.pm l. 50
# Plack::Middleware::FixMissingBodyInRedirect in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Middleware/FixMissingBodyInRedirect.pm l. 50
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1387
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1385
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 35
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1385
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1472
# Return::MultiLevel in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Return/MultiLevel.pm l. 36
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1471
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1594
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1626
# Dancer2::Core::Error in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Error.pm l. 303
# Method::Generate::Accessor::_Generated in (eval 154) l. 20
# Dancer2::Core::Error in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Error.pm l. 290
# Dancer2::Core::Error in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Error.pm l. 111
# Dancer2::Core::Error in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Error.pm l. 160
# Dancer2::Core::Error in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Error.pm l. 386</pre>
# <div class="title">Settings</div><pre class="content">
# <span class="key">appdir</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t&#39;,
# <span class="key">apphandler</span> =&gt; &#39;Standalone&#39;,
# <span class="key">behind_proxy</span> =&gt; 0,
# <span class="key">charset</span> =&gt; &#39;&#39;,
# <span class="key">content_type</span> =&gt; &#39;text/html&#39;,
# <span class="key">environment</span> =&gt; &#39;development&#39;,
# <span class="key">host</span> =&gt; &#39;0.0.0.0&#39;,
# <span class="key">logger</span> =&gt; bless( {
# <span class="key">app_name</span> =&gt; &#39;main&#39;,
# <span class="key">config</span> =&gt; {},
# <span class="key">environment</span> =&gt; &#39;development&#39;,
# <span class="key">fh</span> =&gt; \*{&#39;Dancer2::FileUtils::$fh&#39;},
# <span class="key">file_name</span> =&gt; &#39;development.log&#39;,
# <span class="key">hooks</span> =&gt; {
# <span class="key">&#39;engine.logger.after&#39;</span> =&gt; [],
# <span class="key">&#39;engine.logger.before&#39;</span> =&gt; []
# },
# <span class="key">location</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t&#39;,
# <span class="key">log_dir</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t/logs&#39;,
# <span class="key">log_file</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t/logs/development.log&#39;,
# <span class="key">log_format</span> =&gt; &#39;[%a:%P] %L @%T&gt; %m in %f l. %l&#39;,
# <span class="key">log_level</span> =&gt; &#39;debug&#39;,
# <span class="key">request</span> =&gt; bless( {
# <span class="key">_body_params</span> =&gt; {},
# <span class="key">_chunk_size</span> =&gt; 4096,
# <span class="key">_http_body</span> =&gt; bless( {
# <span class="key">body</span> =&gt; undef,
# <span class="key">buffer</span> =&gt; &#39;&#39;,
# <span class="key">chunk_buffer</span> =&gt; &#39;&#39;,
# <span class="key">chunked</span> =&gt; &#39;&#39;,
# <span class="key">cleanup</span> =&gt; 1,
# <span class="key">content_length</span> =&gt; 0,
# <span class="key">content_type</span> =&gt; &#39;&#39;,
# <span class="key">length</span> =&gt; 0,
# <span class="key">param</span> =&gt; {},
# <span class="key">param_order</span> =&gt; [],
# <span class="key">part_data</span> =&gt; {},
# <span class="key">state</span> =&gt; &#39;buffering&#39;,
# <span class="key">tmpdir</span> =&gt; &#39;/tmp&#39;,
# <span class="key">upload</span> =&gt; {}
# }, &#39;HTTP::Body::OctetStream&#39; ),
# <span class="key">_params</span> =&gt; {},
# <span class="key">_read_position</span> =&gt; 0,
# <span class="key">_route_params</span> =&gt; {},
# <span class="key">body</span> =&gt; &#39;&#39;,
# <span class="key">body_parameters</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">data</span> =&gt; undef,
# <span class="key">env</span> =&gt; {
# <span class="key">CONTENT_LENGTH</span> =&gt; 0,
# <span class="key">HTTP_AUTHORIZATION</span> =&gt; &#39;Basic ZGF2ZTpiZWVy&#39;,
# <span class="key">HTTP_HOST</span> =&gt; &#39;localhost&#39;,
# <span class="key">PATH_INFO</span> =&gt; &#39;/auth&#39;,
# <span class="key">QUERY_STRING</span> =&gt; &#39;&#39;,
# <span class="key">REMOTE_ADDR</span> =&gt; &#39;127.0.0.1&#39;,
# <span class="key">REMOTE_HOST</span> =&gt; &#39;localhost&#39;,
# <span class="key">REMOTE_PORT</span> =&gt; 57152,
# <span class="key">REQUEST_METHOD</span> =&gt; &#39;GET&#39;,
# <span class="key">REQUEST_URI</span> =&gt; &#39;/auth&#39;,
# <span class="key">SCRIPT_NAME</span> =&gt; &#39;&#39;,
# <span class="key">SERVER_NAME</span> =&gt; &#39;localhost&#39;,
# <span class="key">SERVER_PORT</span> =&gt; 80,
# <span class="key">SERVER_PROTOCOL</span> =&gt; &#39;HTTP/1.1&#39;,
# <span class="key">&#39;plack.request.body&#39;</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">&#39;plack.request.body_parameters&#39;</span> =&gt; [],
# <span class="key">&#39;plack.request.upload&#39;</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">&#39;psgi.errors&#39;</span> =&gt; *::STDERR,
# <span class="key">&#39;psgi.input&#39;</span> =&gt; \*{&#39;HTTP::Message::PSGI::$input&#39;},
# <span class="key">&#39;psgi.multiprocess&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.multithread&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.nonblocking&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.run_once&#39;</span> =&gt; 1,
# <span class="key">&#39;psgi.streaming&#39;</span> =&gt; 1,
# <span class="key">&#39;psgi.url_scheme&#39;</span> =&gt; &#39;http&#39;,
# <span class="key">&#39;psgi.version&#39;</span> =&gt; [
# 1,
# 1
# ]
# },
# <span class="key">id</span> =&gt; 4,
# <span class="key">is_behind_proxy</span> =&gt; &#39;&#39;,
# <span class="key">route_parameters</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">uploads</span> =&gt; {},
# <span class="key">vars</span> =&gt; {}
# }, &#39;Dancer2::Core::Request&#39; )
# }, &#39;Dancer2::Logger::File&#39; ),
# <span class="key">no_server_tokens</span> =&gt; 0,
# <span class="key">plugins</span> =&gt; {
# <span class="key">&#39;HTTP::Auth::Extensible&#39;</span> =&gt; {
# <span class="key">realms</span> =&gt; {
# <span class="key">some_realm</span> =&gt; {
# <span class="key">provider</span> =&gt; &#39;Config&#39;,
# <span class="key">scheme</span> =&gt; &#39;Basic&#39;,
# <span class="key">users</span> =&gt; [
# {
# <span class="key">name</span> =&gt; &#39;David Precious&#39;,
# <span class="key">pass</span> =&gt; &#39;beer&#39;,
# <span class="key">roles</span> =&gt; [
# &#39;BeerDrinker&#39;,
# &#39;VodkaDrinker&#39;
# ],
# <span class="key">user</span> =&gt; &#39;dave&#39;
# }
# ]
# }
# }
# }
# },
# <span class="key">port</span> =&gt; &#39;3000&#39;,
# <span class="key">public_dir</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t/public&#39;,
# <span class="key">route_handlers</span> =&gt; [
# [
# &#39;AutoPage&#39;,
# 1
# ]
# ],
# <span class="key">session</span> =&gt; bless( {
# <span class="key">config</span> =&gt; {},
# <span class="key">cookie_name</span> =&gt; &#39;dancer.session&#39;,
# <span class="key">cookie_path</span> =&gt; &#39;/&#39;,
# <span class="key">is_http_only</span> =&gt; 1,
# <span class="key">is_secure</span> =&gt; 0,
# <span class="key">log_cb</span> =&gt; sub { &quot;DUMMY&quot; },
# <span class="key">request</span> =&gt; $VAR1-&gt;{logger}{request}
# }, &#39;Dancer2::Session::Simple&#39; ),
# <span class="key">show_errors</span> =&gt; 1,
# <span class="key">startup_info</span> =&gt; 1,
# <span class="key">static_handler</span> =&gt; undef,
# <span class="key">template</span> =&gt; &#39;Tiny&#39;,
# <span class="key">traces</span> =&gt; 0,
# <span class="key">views</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t/views&#39;
# </pre>
# <div class="title">Session</div><pre class="content"><i>undefined</i></pre>
# <div class="title">Environment</div><pre class="content">
# <span class="key">CONTENT_LENGTH</span> =&gt; 0,
# <span class="key">HTTP_AUTHORIZATION</span> =&gt; &#39;Basic ZGF2ZTpiZWVy&#39;,
# <span class="key">HTTP_HOST</span> =&gt; &#39;localhost&#39;,
# <span class="key">PATH_INFO</span> =&gt; &#39;/auth&#39;,
# <span class="key">QUERY_STRING</span> =&gt; &#39;&#39;,
# <span class="key">REMOTE_ADDR</span> =&gt; &#39;127.0.0.1&#39;,
# <span class="key">REMOTE_HOST</span> =&gt; &#39;localhost&#39;,
# <span class="key">REMOTE_PORT</span> =&gt; 57152,
# <span class="key">REQUEST_METHOD</span> =&gt; &#39;GET&#39;,
# <span class="key">REQUEST_URI</span> =&gt; &#39;/auth&#39;,
# <span class="key">SCRIPT_NAME</span> =&gt; &#39;&#39;,
# <span class="key">SERVER_NAME</span> =&gt; &#39;localhost&#39;,
# <span class="key">SERVER_PORT</span> =&gt; 80,
# <span class="key">SERVER_PROTOCOL</span> =&gt; &#39;HTTP/1.1&#39;,
# <span class="key">&#39;plack.request.body&#39;</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">&#39;plack.request.body_parameters&#39;</span> =&gt; [],
# <span class="key">&#39;plack.request.upload&#39;</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">&#39;psgi.errors&#39;</span> =&gt; *::STDERR,
# <span class="key">&#39;psgi.input&#39;</span> =&gt; \*{&#39;HTTP::Message::PSGI::$input&#39;},
# <span class="key">&#39;psgi.multiprocess&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.multithread&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.nonblocking&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.run_once&#39;</span> =&gt; 1,
# <span class="key">&#39;psgi.streaming&#39;</span> =&gt; 1,
# <span class="key">&#39;psgi.url_scheme&#39;</span> =&gt; &#39;http&#39;,
# <span class="key">&#39;psgi.version&#39;</span> =&gt; [
# 1,
# 1
# ]
# </pre>
#
# </div>
# <div id="footer">
# Powered by <a href="http://perldancer.org/">Dancer2</a> 0.205000
# </div>
# </body>
# </html>
# '
# expected: 'Access granted for default realm'
Use of uninitialized value $Dancer2::Plugin::CUR_PLUGIN in string at /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Plugin.pm line 262.
# Failed test 'Status 200: BeerDrinker'
# at t/30-authenticate_Basic.t line 181.
# got: '500'
# expected: '200'
# Failed test 'Delivering: BeerDrinker'
# at t/30-authenticate_Basic.t line 186.
# got: '<!DOCTYPE html>
# <html lang="en">
# <head>
# <meta charset="UTF-8">
# <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
# <title>Error 500 - Internal Server Error</title>
# <link rel="stylesheet" href="http://localhost/css/error.css">
# </head>
# <body>
# <h1>Error 500 - Internal Server Error</h1>
# <div id="content">
# <h2>Runtime Error</h2><pre class="error">Can&#39;t find originating plugin at /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Route.pm line 140.
# </pre>
# <div class="title">/home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Route.pm around line 140</div><pre class="content"><table class="context">
# <tr><th>135</th><td>sub execute {</td></tr>
# <tr><th>136</th><td> my ( $self, $app, @args ) = @_;</td></tr>
# <tr><th>137</th><td> local $REQUEST = $app-&gt;request;</td></tr>
# <tr><th>138</th><td> local $RESPONSE = $app-&gt;response;</td></tr>
# <tr><th>139</th><td></td></tr>
# <tr class="errline"><th>140</th><td> my $content = $self-&gt;code-&gt;( $app, @args );</td></tr>
# <tr><th>141</th><td></td></tr>
# <tr><th>142</th><td> # users may set content in the response. If the response has</td></tr>
# <tr><th>143</th><td> # content, and the returned value from the route code is not</td></tr>
# <tr><th>144</th><td> # an object (well, reference) we ignore the returned value</td></tr>
# <tr><th>145</th><td> # and use the existing content in the response instead.</td></tr>
# </table></pre>
# <div class="title">Stack</div><pre class="content">main in t/30-authenticate_Basic.t l. 191
# Plack::Test in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Test.pm l. 38
# main in t/30-authenticate_Basic.t l. 180
# Plack::Test in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Test.pm l. 38
# Plack::Test::MockHTTP in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Test/MockHTTP.pm l. 27
# Try::Tiny in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Try/Tiny.pm l. 94
# Try::Tiny in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Try/Tiny.pm l. 101
# Plack::Test::MockHTTP in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Test/MockHTTP.pm l. 24
# Dancer2::Core::Runner in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Runner.pm l. 213
# Dancer2::Core::Dispatcher in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Dispatcher.pm l. 36
# Plack::Component in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Component.pm l. 50
# Plack::Middleware::Head in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Middleware/Head.pm l. 10
# Plack::Component in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Component.pm l. 50
# Plack::Middleware::FixMissingBodyInRedirect in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Middleware/FixMissingBodyInRedirect.pm l. 50
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1387
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1385
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 35
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1385
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1472
# Return::MultiLevel in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Return/MultiLevel.pm l. 36
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1471
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1594
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1626
# Dancer2::Core::Error in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Error.pm l. 303
# Method::Generate::Accessor::_Generated in (eval 154) l. 20
# Dancer2::Core::Error in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Error.pm l. 290
# Dancer2::Core::Error in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Error.pm l. 111
# Dancer2::Core::Error in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Error.pm l. 160
# Dancer2::Core::Error in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Error.pm l. 386</pre>
# <div class="title">Settings</div><pre class="content">
# <span class="key">appdir</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t&#39;,
# <span class="key">apphandler</span> =&gt; &#39;Standalone&#39;,
# <span class="key">behind_proxy</span> =&gt; 0,
# <span class="key">charset</span> =&gt; &#39;&#39;,
# <span class="key">content_type</span> =&gt; &#39;text/html&#39;,
# <span class="key">environment</span> =&gt; &#39;development&#39;,
# <span class="key">host</span> =&gt; &#39;0.0.0.0&#39;,
# <span class="key">logger</span> =&gt; bless( {
# <span class="key">app_name</span> =&gt; &#39;main&#39;,
# <span class="key">config</span> =&gt; {},
# <span class="key">environment</span> =&gt; &#39;development&#39;,
# <span class="key">fh</span> =&gt; \*{&#39;Dancer2::FileUtils::$fh&#39;},
# <span class="key">file_name</span> =&gt; &#39;development.log&#39;,
# <span class="key">hooks</span> =&gt; {
# <span class="key">&#39;engine.logger.after&#39;</span> =&gt; [],
# <span class="key">&#39;engine.logger.before&#39;</span> =&gt; []
# },
# <span class="key">location</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t&#39;,
# <span class="key">log_dir</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t/logs&#39;,
# <span class="key">log_file</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t/logs/development.log&#39;,
# <span class="key">log_format</span> =&gt; &#39;[%a:%P] %L @%T&gt; %m in %f l. %l&#39;,
# <span class="key">log_level</span> =&gt; &#39;debug&#39;,
# <span class="key">request</span> =&gt; bless( {
# <span class="key">_body_params</span> =&gt; {},
# <span class="key">_chunk_size</span> =&gt; 4096,
# <span class="key">_http_body</span> =&gt; bless( {
# <span class="key">body</span> =&gt; undef,
# <span class="key">buffer</span> =&gt; &#39;&#39;,
# <span class="key">chunk_buffer</span> =&gt; &#39;&#39;,
# <span class="key">chunked</span> =&gt; &#39;&#39;,
# <span class="key">cleanup</span> =&gt; 1,
# <span class="key">content_length</span> =&gt; 0,
# <span class="key">content_type</span> =&gt; &#39;&#39;,
# <span class="key">length</span> =&gt; 0,
# <span class="key">param</span> =&gt; {},
# <span class="key">param_order</span> =&gt; [],
# <span class="key">part_data</span> =&gt; {},
# <span class="key">state</span> =&gt; &#39;buffering&#39;,
# <span class="key">tmpdir</span> =&gt; &#39;/tmp&#39;,
# <span class="key">upload</span> =&gt; {}
# }, &#39;HTTP::Body::OctetStream&#39; ),
# <span class="key">_params</span> =&gt; {},
# <span class="key">_read_position</span> =&gt; 0,
# <span class="key">_route_params</span> =&gt; {},
# <span class="key">body</span> =&gt; &#39;&#39;,
# <span class="key">body_parameters</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">data</span> =&gt; undef,
# <span class="key">env</span> =&gt; {
# <span class="key">CONTENT_LENGTH</span> =&gt; 0,
# <span class="key">HTTP_AUTHORIZATION</span> =&gt; &#39;Basic ZGF2ZTpiZWVy&#39;,
# <span class="key">HTTP_HOST</span> =&gt; &#39;localhost&#39;,
# <span class="key">PATH_INFO</span> =&gt; &#39;/beer&#39;,
# <span class="key">QUERY_STRING</span> =&gt; &#39;&#39;,
# <span class="key">REMOTE_ADDR</span> =&gt; &#39;127.0.0.1&#39;,
# <span class="key">REMOTE_HOST</span> =&gt; &#39;localhost&#39;,
# <span class="key">REMOTE_PORT</span> =&gt; 62231,
# <span class="key">REQUEST_METHOD</span> =&gt; &#39;GET&#39;,
# <span class="key">REQUEST_URI</span> =&gt; &#39;/beer&#39;,
# <span class="key">SCRIPT_NAME</span> =&gt; &#39;&#39;,
# <span class="key">SERVER_NAME</span> =&gt; &#39;localhost&#39;,
# <span class="key">SERVER_PORT</span> =&gt; 80,
# <span class="key">SERVER_PROTOCOL</span> =&gt; &#39;HTTP/1.1&#39;,
# <span class="key">&#39;plack.request.body&#39;</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">&#39;plack.request.body_parameters&#39;</span> =&gt; [],
# <span class="key">&#39;plack.request.upload&#39;</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">&#39;psgi.errors&#39;</span> =&gt; *::STDERR,
# <span class="key">&#39;psgi.input&#39;</span> =&gt; \*{&#39;HTTP::Message::PSGI::$input&#39;},
# <span class="key">&#39;psgi.multiprocess&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.multithread&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.nonblocking&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.run_once&#39;</span> =&gt; 1,
# <span class="key">&#39;psgi.streaming&#39;</span> =&gt; 1,
# <span class="key">&#39;psgi.url_scheme&#39;</span> =&gt; &#39;http&#39;,
# <span class="key">&#39;psgi.version&#39;</span> =&gt; [
# 1,
# 1
# ]
# },
# <span class="key">id</span> =&gt; 5,
# <span class="key">is_behind_proxy</span> =&gt; &#39;&#39;,
# <span class="key">route_parameters</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">uploads</span> =&gt; {},
# <span class="key">vars</span> =&gt; {}
# }, &#39;Dancer2::Core::Request&#39; )
# }, &#39;Dancer2::Logger::File&#39; ),
# <span class="key">no_server_tokens</span> =&gt; 0,
# <span class="key">plugins</span> =&gt; {
# <span class="key">&#39;HTTP::Auth::Extensible&#39;</span> =&gt; {
# <span class="key">realms</span> =&gt; {
# <span class="key">some_realm</span> =&gt; {
# <span class="key">provider</span> =&gt; &#39;Config&#39;,
# <span class="key">scheme</span> =&gt; &#39;Basic&#39;,
# <span class="key">users</span> =&gt; [
# {
# <span class="key">name</span> =&gt; &#39;David Precious&#39;,
# <span class="key">pass</span> =&gt; &#39;beer&#39;,
# <span class="key">roles</span> =&gt; [
# &#39;BeerDrinker&#39;,
# &#39;VodkaDrinker&#39;
# ],
# <span class="key">user</span> =&gt; &#39;dave&#39;
# }
# ]
# }
# }
# }
# },
# <span class="key">port</span> =&gt; &#39;3000&#39;,
# <span class="key">public_dir</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t/public&#39;,
# <span class="key">route_handlers</span> =&gt; [
# [
# &#39;AutoPage&#39;,
# 1
# ]
# ],
# <span class="key">session</span> =&gt; bless( {
# <span class="key">config</span> =&gt; {},
# <span class="key">cookie_name</span> =&gt; &#39;dancer.session&#39;,
# <span class="key">cookie_path</span> =&gt; &#39;/&#39;,
# <span class="key">is_http_only</span> =&gt; 1,
# <span class="key">is_secure</span> =&gt; 0,
# <span class="key">log_cb</span> =&gt; sub { &quot;DUMMY&quot; },
# <span class="key">request</span> =&gt; $VAR1-&gt;{logger}{request}
# }, &#39;Dancer2::Session::Simple&#39; ),
# <span class="key">show_errors</span> =&gt; 1,
# <span class="key">startup_info</span> =&gt; 1,
# <span class="key">static_handler</span> =&gt; undef,
# <span class="key">template</span> =&gt; &#39;Tiny&#39;,
# <span class="key">traces</span> =&gt; 0,
# <span class="key">views</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t/views&#39;
# </pre>
# <div class="title">Session</div><pre class="content"><i>undefined</i></pre>
# <div class="title">Environment</div><pre class="content">
# <span class="key">CONTENT_LENGTH</span> =&gt; 0,
# <span class="key">HTTP_AUTHORIZATION</span> =&gt; &#39;Basic ZGF2ZTpiZWVy&#39;,
# <span class="key">HTTP_HOST</span> =&gt; &#39;localhost&#39;,
# <span class="key">PATH_INFO</span> =&gt; &#39;/beer&#39;,
# <span class="key">QUERY_STRING</span> =&gt; &#39;&#39;,
# <span class="key">REMOTE_ADDR</span> =&gt; &#39;127.0.0.1&#39;,
# <span class="key">REMOTE_HOST</span> =&gt; &#39;localhost&#39;,
# <span class="key">REMOTE_PORT</span> =&gt; 62231,
# <span class="key">REQUEST_METHOD</span> =&gt; &#39;GET&#39;,
# <span class="key">REQUEST_URI</span> =&gt; &#39;/beer&#39;,
# <span class="key">SCRIPT_NAME</span> =&gt; &#39;&#39;,
# <span class="key">SERVER_NAME</span> =&gt; &#39;localhost&#39;,
# <span class="key">SERVER_PORT</span> =&gt; 80,
# <span class="key">SERVER_PROTOCOL</span> =&gt; &#39;HTTP/1.1&#39;,
# <span class="key">&#39;plack.request.body&#39;</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">&#39;plack.request.body_parameters&#39;</span> =&gt; [],
# <span class="key">&#39;plack.request.upload&#39;</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">&#39;psgi.errors&#39;</span> =&gt; *::STDERR,
# <span class="key">&#39;psgi.input&#39;</span> =&gt; \*{&#39;HTTP::Message::PSGI::$input&#39;},
# <span class="key">&#39;psgi.multiprocess&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.multithread&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.nonblocking&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.run_once&#39;</span> =&gt; 1,
# <span class="key">&#39;psgi.streaming&#39;</span> =&gt; 1,
# <span class="key">&#39;psgi.url_scheme&#39;</span> =&gt; &#39;http&#39;,
# <span class="key">&#39;psgi.version&#39;</span> =&gt; [
# 1,
# 1
# ]
# </pre>
#
# </div>
# <div id="footer">
# Powered by <a href="http://perldancer.org/">Dancer2</a> 0.205000
# </div>
# </body>
# </html>
# '
# expected: 'Enjoy your Beer!'
Use of uninitialized value $Dancer2::Plugin::CUR_PLUGIN in string at /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Plugin.pm line 262.
# Failed test 'Status 200: VodkaDrinker'
# at t/30-authenticate_Basic.t line 198.
# got: '500'
# expected: '200'
# Failed test 'Delivering: VodkaDrinker'
# at t/30-authenticate_Basic.t line 203.
# got: '<!DOCTYPE html>
# <html lang="en">
# <head>
# <meta charset="UTF-8">
# <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
# <title>Error 500 - Internal Server Error</title>
# <link rel="stylesheet" href="http://localhost/css/error.css">
# </head>
# <body>
# <h1>Error 500 - Internal Server Error</h1>
# <div id="content">
# <h2>Runtime Error</h2><pre class="error">Can&#39;t find originating plugin at /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Route.pm line 140.
# </pre>
# <div class="title">/home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Route.pm around line 140</div><pre class="content"><table class="context">
# <tr><th>135</th><td>sub execute {</td></tr>
# <tr><th>136</th><td> my ( $self, $app, @args ) = @_;</td></tr>
# <tr><th>137</th><td> local $REQUEST = $app-&gt;request;</td></tr>
# <tr><th>138</th><td> local $RESPONSE = $app-&gt;response;</td></tr>
# <tr><th>139</th><td></td></tr>
# <tr class="errline"><th>140</th><td> my $content = $self-&gt;code-&gt;( $app, @args );</td></tr>
# <tr><th>141</th><td></td></tr>
# <tr><th>142</th><td> # users may set content in the response. If the response has</td></tr>
# <tr><th>143</th><td> # content, and the returned value from the route code is not</td></tr>
# <tr><th>144</th><td> # an object (well, reference) we ignore the returned value</td></tr>
# <tr><th>145</th><td> # and use the existing content in the response instead.</td></tr>
# </table></pre>
# <div class="title">Stack</div><pre class="content">main in t/30-authenticate_Basic.t l. 208
# Plack::Test in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Test.pm l. 38
# main in t/30-authenticate_Basic.t l. 197
# Plack::Test in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Test.pm l. 38
# Plack::Test::MockHTTP in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Test/MockHTTP.pm l. 27
# Try::Tiny in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Try/Tiny.pm l. 94
# Try::Tiny in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Try/Tiny.pm l. 101
# Plack::Test::MockHTTP in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Test/MockHTTP.pm l. 24
# Dancer2::Core::Runner in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Runner.pm l. 213
# Dancer2::Core::Dispatcher in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Dispatcher.pm l. 36
# Plack::Component in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Component.pm l. 50
# Plack::Middleware::Head in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Middleware/Head.pm l. 10
# Plack::Component in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Component.pm l. 50
# Plack::Middleware::FixMissingBodyInRedirect in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Middleware/FixMissingBodyInRedirect.pm l. 50
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1387
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1385
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 35
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1385
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1472
# Return::MultiLevel in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Return/MultiLevel.pm l. 36
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1471
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1594
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1626
# Dancer2::Core::Error in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Error.pm l. 303
# Method::Generate::Accessor::_Generated in (eval 154) l. 20
# Dancer2::Core::Error in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Error.pm l. 290
# Dancer2::Core::Error in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Error.pm l. 111
# Dancer2::Core::Error in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Error.pm l. 160
# Dancer2::Core::Error in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Error.pm l. 386</pre>
# <div class="title">Settings</div><pre class="content">
# <span class="key">appdir</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t&#39;,
# <span class="key">apphandler</span> =&gt; &#39;Standalone&#39;,
# <span class="key">behind_proxy</span> =&gt; 0,
# <span class="key">charset</span> =&gt; &#39;&#39;,
# <span class="key">content_type</span> =&gt; &#39;text/html&#39;,
# <span class="key">environment</span> =&gt; &#39;development&#39;,
# <span class="key">host</span> =&gt; &#39;0.0.0.0&#39;,
# <span class="key">logger</span> =&gt; bless( {
# <span class="key">app_name</span> =&gt; &#39;main&#39;,
# <span class="key">config</span> =&gt; {},
# <span class="key">environment</span> =&gt; &#39;development&#39;,
# <span class="key">fh</span> =&gt; \*{&#39;Dancer2::FileUtils::$fh&#39;},
# <span class="key">file_name</span> =&gt; &#39;development.log&#39;,
# <span class="key">hooks</span> =&gt; {
# <span class="key">&#39;engine.logger.after&#39;</span> =&gt; [],
# <span class="key">&#39;engine.logger.before&#39;</span> =&gt; []
# },
# <span class="key">location</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t&#39;,
# <span class="key">log_dir</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t/logs&#39;,
# <span class="key">log_file</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t/logs/development.log&#39;,
# <span class="key">log_format</span> =&gt; &#39;[%a:%P] %L @%T&gt; %m in %f l. %l&#39;,
# <span class="key">log_level</span> =&gt; &#39;debug&#39;,
# <span class="key">request</span> =&gt; bless( {
# <span class="key">_body_params</span> =&gt; {},
# <span class="key">_chunk_size</span> =&gt; 4096,
# <span class="key">_http_body</span> =&gt; bless( {
# <span class="key">body</span> =&gt; undef,
# <span class="key">buffer</span> =&gt; &#39;&#39;,
# <span class="key">chunk_buffer</span> =&gt; &#39;&#39;,
# <span class="key">chunked</span> =&gt; &#39;&#39;,
# <span class="key">cleanup</span> =&gt; 1,
# <span class="key">content_length</span> =&gt; 0,
# <span class="key">content_type</span> =&gt; &#39;&#39;,
# <span class="key">length</span> =&gt; 0,
# <span class="key">param</span> =&gt; {},
# <span class="key">param_order</span> =&gt; [],
# <span class="key">part_data</span> =&gt; {},
# <span class="key">state</span> =&gt; &#39;buffering&#39;,
# <span class="key">tmpdir</span> =&gt; &#39;/tmp&#39;,
# <span class="key">upload</span> =&gt; {}
# }, &#39;HTTP::Body::OctetStream&#39; ),
# <span class="key">_params</span> =&gt; {},
# <span class="key">_read_position</span> =&gt; 0,
# <span class="key">_route_params</span> =&gt; {},
# <span class="key">body</span> =&gt; &#39;&#39;,
# <span class="key">body_parameters</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">data</span> =&gt; undef,
# <span class="key">env</span> =&gt; {
# <span class="key">CONTENT_LENGTH</span> =&gt; 0,
# <span class="key">HTTP_AUTHORIZATION</span> =&gt; &#39;Basic ZGF2ZTpiZWVy&#39;,
# <span class="key">HTTP_HOST</span> =&gt; &#39;localhost&#39;,
# <span class="key">PATH_INFO</span> =&gt; &#39;/vodka&#39;,
# <span class="key">QUERY_STRING</span> =&gt; &#39;&#39;,
# <span class="key">REMOTE_ADDR</span> =&gt; &#39;127.0.0.1&#39;,
# <span class="key">REMOTE_HOST</span> =&gt; &#39;localhost&#39;,
# <span class="key">REMOTE_PORT</span> =&gt; 52403,
# <span class="key">REQUEST_METHOD</span> =&gt; &#39;GET&#39;,
# <span class="key">REQUEST_URI</span> =&gt; &#39;/vodka&#39;,
# <span class="key">SCRIPT_NAME</span> =&gt; &#39;&#39;,
# <span class="key">SERVER_NAME</span> =&gt; &#39;localhost&#39;,
# <span class="key">SERVER_PORT</span> =&gt; 80,
# <span class="key">SERVER_PROTOCOL</span> =&gt; &#39;HTTP/1.1&#39;,
# <span class="key">&#39;plack.request.body&#39;</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">&#39;plack.request.body_parameters&#39;</span> =&gt; [],
# <span class="key">&#39;plack.request.upload&#39;</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">&#39;psgi.errors&#39;</span> =&gt; *::STDERR,
# <span class="key">&#39;psgi.input&#39;</span> =&gt; \*{&#39;HTTP::Message::PSGI::$input&#39;},
# <span class="key">&#39;psgi.multiprocess&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.multithread&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.nonblocking&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.run_once&#39;</span> =&gt; 1,
# <span class="key">&#39;psgi.streaming&#39;</span> =&gt; 1,
# <span class="key">&#39;psgi.url_scheme&#39;</span> =&gt; &#39;http&#39;,
# <span class="key">&#39;psgi.version&#39;</span> =&gt; [
# 1,
# 1
# ]
# },
# <span class="key">id</span> =&gt; 6,
# <span class="key">is_behind_proxy</span> =&gt; &#39;&#39;,
# <span class="key">route_parameters</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">uploads</span> =&gt; {},
# <span class="key">vars</span> =&gt; {}
# }, &#39;Dancer2::Core::Request&#39; )
# }, &#39;Dancer2::Logger::File&#39; ),
# <span class="key">no_server_tokens</span> =&gt; 0,
# <span class="key">plugins</span> =&gt; {
# <span class="key">&#39;HTTP::Auth::Extensible&#39;</span> =&gt; {
# <span class="key">realms</span> =&gt; {
# <span class="key">some_realm</span> =&gt; {
# <span class="key">provider</span> =&gt; &#39;Config&#39;,
# <span class="key">scheme</span> =&gt; &#39;Basic&#39;,
# <span class="key">users</span> =&gt; [
# {
# <span class="key">name</span> =&gt; &#39;David Precious&#39;,
# <span class="key">pass</span> =&gt; &#39;beer&#39;,
# <span class="key">roles</span> =&gt; [
# &#39;BeerDrinker&#39;,
# &#39;VodkaDrinker&#39;
# ],
# <span class="key">user</span> =&gt; &#39;dave&#39;
# }
# ]
# }
# }
# }
# },
# <span class="key">port</span> =&gt; &#39;3000&#39;,
# <span class="key">public_dir</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t/public&#39;,
# <span class="key">route_handlers</span> =&gt; [
# [
# &#39;AutoPage&#39;,
# 1
# ]
# ],
# <span class="key">session</span> =&gt; bless( {
# <span class="key">config</span> =&gt; {},
# <span class="key">cookie_name</span> =&gt; &#39;dancer.session&#39;,
# <span class="key">cookie_path</span> =&gt; &#39;/&#39;,
# <span class="key">is_http_only</span> =&gt; 1,
# <span class="key">is_secure</span> =&gt; 0,
# <span class="key">log_cb</span> =&gt; sub { &quot;DUMMY&quot; },
# <span class="key">request</span> =&gt; $VAR1-&gt;{logger}{request}
# }, &#39;Dancer2::Session::Simple&#39; ),
# <span class="key">show_errors</span> =&gt; 1,
# <span class="key">startup_info</span> =&gt; 1,
# <span class="key">static_handler</span> =&gt; undef,
# <span class="key">template</span> =&gt; &#39;Tiny&#39;,
# <span class="key">traces</span> =&gt; 0,
# <span class="key">views</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t/views&#39;
# </pre>
# <div class="title">Session</div><pre class="content"><i>undefined</i></pre>
# <div class="title">Environment</div><pre class="content">
# <span class="key">CONTENT_LENGTH</span> =&gt; 0,
# <span class="key">HTTP_AUTHORIZATION</span> =&gt; &#39;Basic ZGF2ZTpiZWVy&#39;,
# <span class="key">HTTP_HOST</span> =&gt; &#39;localhost&#39;,
# <span class="key">PATH_INFO</span> =&gt; &#39;/vodka&#39;,
# <span class="key">QUERY_STRING</span> =&gt; &#39;&#39;,
# <span class="key">REMOTE_ADDR</span> =&gt; &#39;127.0.0.1&#39;,
# <span class="key">REMOTE_HOST</span> =&gt; &#39;localhost&#39;,
# <span class="key">REMOTE_PORT</span> =&gt; 52403,
# <span class="key">REQUEST_METHOD</span> =&gt; &#39;GET&#39;,
# <span class="key">REQUEST_URI</span> =&gt; &#39;/vodka&#39;,
# <span class="key">SCRIPT_NAME</span> =&gt; &#39;&#39;,
# <span class="key">SERVER_NAME</span> =&gt; &#39;localhost&#39;,
# <span class="key">SERVER_PORT</span> =&gt; 80,
# <span class="key">SERVER_PROTOCOL</span> =&gt; &#39;HTTP/1.1&#39;,
# <span class="key">&#39;plack.request.body&#39;</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">&#39;plack.request.body_parameters&#39;</span> =&gt; [],
# <span class="key">&#39;plack.request.upload&#39;</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">&#39;psgi.errors&#39;</span> =&gt; *::STDERR,
# <span class="key">&#39;psgi.input&#39;</span> =&gt; \*{&#39;HTTP::Message::PSGI::$input&#39;},
# <span class="key">&#39;psgi.multiprocess&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.multithread&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.nonblocking&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.run_once&#39;</span> =&gt; 1,
# <span class="key">&#39;psgi.streaming&#39;</span> =&gt; 1,
# <span class="key">&#39;psgi.url_scheme&#39;</span> =&gt; &#39;http&#39;,
# <span class="key">&#39;psgi.version&#39;</span> =&gt; [
# 1,
# 1
# ]
# </pre>
#
# </div>
# <div id="footer">
# Powered by <a href="http://perldancer.org/">Dancer2</a> 0.205000
# </div>
# </body>
# </html>
# '
# expected: 'Enjoy your Vodka!'
Use of uninitialized value $Dancer2::Plugin::CUR_PLUGIN in string at /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Plugin.pm line 262.
# Failed test 'Status 403: not a MartiniDrinker'
# at t/30-authenticate_Basic.t line 215.
# got: '500'
# expected: '403'
# Failed test 'Delivering: not a MartiniDrinker'
# at t/30-authenticate_Basic.t line 220.
# got: '<!DOCTYPE html>
# <html lang="en">
# <head>
# <meta charset="UTF-8">
# <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
# <title>Error 500 - Internal Server Error</title>
# <link rel="stylesheet" href="http://localhost/css/error.css">
# </head>
# <body>
# <h1>Error 500 - Internal Server Error</h1>
# <div id="content">
# <h2>Runtime Error</h2><pre class="error">Can&#39;t find originating plugin at /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Route.pm line 140.
# </pre>
# <div class="title">/home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Route.pm around line 140</div><pre class="content"><table class="context">
# <tr><th>135</th><td>sub execute {</td></tr>
# <tr><th>136</th><td> my ( $self, $app, @args ) = @_;</td></tr>
# <tr><th>137</th><td> local $REQUEST = $app-&gt;request;</td></tr>
# <tr><th>138</th><td> local $RESPONSE = $app-&gt;response;</td></tr>
# <tr><th>139</th><td></td></tr>
# <tr class="errline"><th>140</th><td> my $content = $self-&gt;code-&gt;( $app, @args );</td></tr>
# <tr><th>141</th><td></td></tr>
# <tr><th>142</th><td> # users may set content in the response. If the response has</td></tr>
# <tr><th>143</th><td> # content, and the returned value from the route code is not</td></tr>
# <tr><th>144</th><td> # an object (well, reference) we ignore the returned value</td></tr>
# <tr><th>145</th><td> # and use the existing content in the response instead.</td></tr>
# </table></pre>
# <div class="title">Stack</div><pre class="content">main in t/30-authenticate_Basic.t l. 235
# Plack::Test in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Test.pm l. 38
# main in t/30-authenticate_Basic.t l. 214
# Plack::Test in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Test.pm l. 38
# Plack::Test::MockHTTP in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Test/MockHTTP.pm l. 27
# Try::Tiny in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Try/Tiny.pm l. 94
# Try::Tiny in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Try/Tiny.pm l. 101
# Plack::Test::MockHTTP in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Test/MockHTTP.pm l. 24
# Dancer2::Core::Runner in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Runner.pm l. 213
# Dancer2::Core::Dispatcher in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Dispatcher.pm l. 36
# Plack::Component in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Component.pm l. 50
# Plack::Middleware::Head in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Middleware/Head.pm l. 10
# Plack::Component in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Component.pm l. 50
# Plack::Middleware::FixMissingBodyInRedirect in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Middleware/FixMissingBodyInRedirect.pm l. 50
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1387
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1385
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 35
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1385
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1472
# Return::MultiLevel in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Return/MultiLevel.pm l. 36
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1471
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1594
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1626
# Dancer2::Core::Error in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Error.pm l. 303
# Method::Generate::Accessor::_Generated in (eval 154) l. 20
# Dancer2::Core::Error in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Error.pm l. 290
# Dancer2::Core::Error in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Error.pm l. 111
# Dancer2::Core::Error in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Error.pm l. 160
# Dancer2::Core::Error in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Error.pm l. 386</pre>
# <div class="title">Settings</div><pre class="content">
# <span class="key">appdir</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t&#39;,
# <span class="key">apphandler</span> =&gt; &#39;Standalone&#39;,
# <span class="key">behind_proxy</span> =&gt; 0,
# <span class="key">charset</span> =&gt; &#39;&#39;,
# <span class="key">content_type</span> =&gt; &#39;text/html&#39;,
# <span class="key">environment</span> =&gt; &#39;development&#39;,
# <span class="key">host</span> =&gt; &#39;0.0.0.0&#39;,
# <span class="key">logger</span> =&gt; bless( {
# <span class="key">app_name</span> =&gt; &#39;main&#39;,
# <span class="key">config</span> =&gt; {},
# <span class="key">environment</span> =&gt; &#39;development&#39;,
# <span class="key">fh</span> =&gt; \*{&#39;Dancer2::FileUtils::$fh&#39;},
# <span class="key">file_name</span> =&gt; &#39;development.log&#39;,
# <span class="key">hooks</span> =&gt; {
# <span class="key">&#39;engine.logger.after&#39;</span> =&gt; [],
# <span class="key">&#39;engine.logger.before&#39;</span> =&gt; []
# },
# <span class="key">location</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t&#39;,
# <span class="key">log_dir</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t/logs&#39;,
# <span class="key">log_file</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t/logs/development.log&#39;,
# <span class="key">log_format</span> =&gt; &#39;[%a:%P] %L @%T&gt; %m in %f l. %l&#39;,
# <span class="key">log_level</span> =&gt; &#39;debug&#39;,
# <span class="key">request</span> =&gt; bless( {
# <span class="key">_body_params</span> =&gt; {},
# <span class="key">_chunk_size</span> =&gt; 4096,
# <span class="key">_http_body</span> =&gt; bless( {
# <span class="key">body</span> =&gt; undef,
# <span class="key">buffer</span> =&gt; &#39;&#39;,
# <span class="key">chunk_buffer</span> =&gt; &#39;&#39;,
# <span class="key">chunked</span> =&gt; &#39;&#39;,
# <span class="key">cleanup</span> =&gt; 1,
# <span class="key">content_length</span> =&gt; 0,
# <span class="key">content_type</span> =&gt; &#39;&#39;,
# <span class="key">length</span> =&gt; 0,
# <span class="key">param</span> =&gt; {},
# <span class="key">param_order</span> =&gt; [],
# <span class="key">part_data</span> =&gt; {},
# <span class="key">state</span> =&gt; &#39;buffering&#39;,
# <span class="key">tmpdir</span> =&gt; &#39;/tmp&#39;,
# <span class="key">upload</span> =&gt; {}
# }, &#39;HTTP::Body::OctetStream&#39; ),
# <span class="key">_params</span> =&gt; {},
# <span class="key">_read_position</span> =&gt; 0,
# <span class="key">_route_params</span> =&gt; {},
# <span class="key">body</span> =&gt; &#39;&#39;,
# <span class="key">body_parameters</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">data</span> =&gt; undef,
# <span class="key">env</span> =&gt; {
# <span class="key">CONTENT_LENGTH</span> =&gt; 0,
# <span class="key">HTTP_AUTHORIZATION</span> =&gt; &#39;Basic ZGF2ZTpiZWVy&#39;,
# <span class="key">HTTP_HOST</span> =&gt; &#39;localhost&#39;,
# <span class="key">PATH_INFO</span> =&gt; &#39;/martini&#39;,
# <span class="key">QUERY_STRING</span> =&gt; &#39;&#39;,
# <span class="key">REMOTE_ADDR</span> =&gt; &#39;127.0.0.1&#39;,
# <span class="key">REMOTE_HOST</span> =&gt; &#39;localhost&#39;,
# <span class="key">REMOTE_PORT</span> =&gt; 51127,
# <span class="key">REQUEST_METHOD</span> =&gt; &#39;GET&#39;,
# <span class="key">REQUEST_URI</span> =&gt; &#39;/martini&#39;,
# <span class="key">SCRIPT_NAME</span> =&gt; &#39;&#39;,
# <span class="key">SERVER_NAME</span> =&gt; &#39;localhost&#39;,
# <span class="key">SERVER_PORT</span> =&gt; 80,
# <span class="key">SERVER_PROTOCOL</span> =&gt; &#39;HTTP/1.1&#39;,
# <span class="key">&#39;plack.request.body&#39;</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">&#39;plack.request.body_parameters&#39;</span> =&gt; [],
# <span class="key">&#39;plack.request.upload&#39;</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">&#39;psgi.errors&#39;</span> =&gt; *::STDERR,
# <span class="key">&#39;psgi.input&#39;</span> =&gt; \*{&#39;HTTP::Message::PSGI::$input&#39;},
# <span class="key">&#39;psgi.multiprocess&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.multithread&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.nonblocking&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.run_once&#39;</span> =&gt; 1,
# <span class="key">&#39;psgi.streaming&#39;</span> =&gt; 1,
# <span class="key">&#39;psgi.url_scheme&#39;</span> =&gt; &#39;http&#39;,
# <span class="key">&#39;psgi.version&#39;</span> =&gt; [
# 1,
# 1
# ]
# },
# <span class="key">id</span> =&gt; 7,
# <span class="key">is_behind_proxy</span> =&gt; &#39;&#39;,
# <span class="key">route_parameters</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">uploads</span> =&gt; {},
# <span class="key">vars</span> =&gt; {}
# }, &#39;Dancer2::Core::Request&#39; )
# }, &#39;Dancer2::Logger::File&#39; ),
# <span class="key">no_server_tokens</span> =&gt; 0,
# <span class="key">plugins</span> =&gt; {
# <span class="key">&#39;HTTP::Auth::Extensible&#39;</span> =&gt; {
# <span class="key">realms</span> =&gt; {
# <span class="key">some_realm</span> =&gt; {
# <span class="key">provider</span> =&gt; &#39;Config&#39;,
# <span class="key">scheme</span> =&gt; &#39;Basic&#39;,
# <span class="key">users</span> =&gt; [
# {
# <span class="key">name</span> =&gt; &#39;David Precious&#39;,
# <span class="key">pass</span> =&gt; &#39;beer&#39;,
# <span class="key">roles</span> =&gt; [
# &#39;BeerDrinker&#39;,
# &#39;VodkaDrinker&#39;
# ],
# <span class="key">user</span> =&gt; &#39;dave&#39;
# }
# ]
# }
# }
# }
# },
# <span class="key">port</span> =&gt; &#39;3000&#39;,
# <span class="key">public_dir</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t/public&#39;,
# <span class="key">route_handlers</span> =&gt; [
# [
# &#39;AutoPage&#39;,
# 1
# ]
# ],
# <span class="key">session</span> =&gt; bless( {
# <span class="key">config</span> =&gt; {},
# <span class="key">cookie_name</span> =&gt; &#39;dancer.session&#39;,
# <span class="key">cookie_path</span> =&gt; &#39;/&#39;,
# <span class="key">is_http_only</span> =&gt; 1,
# <span class="key">is_secure</span> =&gt; 0,
# <span class="key">log_cb</span> =&gt; sub { &quot;DUMMY&quot; },
# <span class="key">request</span> =&gt; $VAR1-&gt;{logger}{request}
# }, &#39;Dancer2::Session::Simple&#39; ),
# <span class="key">show_errors</span> =&gt; 1,
# <span class="key">startup_info</span> =&gt; 1,
# <span class="key">static_handler</span> =&gt; undef,
# <span class="key">template</span> =&gt; &#39;Tiny&#39;,
# <span class="key">traces</span> =&gt; 0,
# <span class="key">views</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t/views&#39;
# </pre>
# <div class="title">Session</div><pre class="content"><i>undefined</i></pre>
# <div class="title">Environment</div><pre class="content">
# <span class="key">CONTENT_LENGTH</span> =&gt; 0,
# <span class="key">HTTP_AUTHORIZATION</span> =&gt; &#39;Basic ZGF2ZTpiZWVy&#39;,
# <span class="key">HTTP_HOST</span> =&gt; &#39;localhost&#39;,
# <span class="key">PATH_INFO</span> =&gt; &#39;/martini&#39;,
# <span class="key">QUERY_STRING</span> =&gt; &#39;&#39;,
# <span class="key">REMOTE_ADDR</span> =&gt; &#39;127.0.0.1&#39;,
# <span class="key">REMOTE_HOST</span> =&gt; &#39;localhost&#39;,
# <span class="key">REMOTE_PORT</span> =&gt; 51127,
# <span class="key">REQUEST_METHOD</span> =&gt; &#39;GET&#39;,
# <span class="key">REQUEST_URI</span> =&gt; &#39;/martini&#39;,
# <span class="key">SCRIPT_NAME</span> =&gt; &#39;&#39;,
# <span class="key">SERVER_NAME</span> =&gt; &#39;localhost&#39;,
# <span class="key">SERVER_PORT</span> =&gt; 80,
# <span class="key">SERVER_PROTOCOL</span> =&gt; &#39;HTTP/1.1&#39;,
# <span class="key">&#39;plack.request.body&#39;</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">&#39;plack.request.body_parameters&#39;</span> =&gt; [],
# <span class="key">&#39;plack.request.upload&#39;</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">&#39;psgi.errors&#39;</span> =&gt; *::STDERR,
# <span class="key">&#39;psgi.input&#39;</span> =&gt; \*{&#39;HTTP::Message::PSGI::$input&#39;},
# <span class="key">&#39;psgi.multiprocess&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.multithread&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.nonblocking&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.run_once&#39;</span> =&gt; 1,
# <span class="key">&#39;psgi.streaming&#39;</span> =&gt; 1,
# <span class="key">&#39;psgi.url_scheme&#39;</span> =&gt; &#39;http&#39;,
# <span class="key">&#39;psgi.version&#39;</span> =&gt; [
# 1,
# 1
# ]
# </pre>
#
# </div>
# <div id="footer">
# Powered by <a href="http://perldancer.org/">Dancer2</a> 0.205000
# </div>
# </body>
# </html>
# '
# expected: 'Permission denied for resource: '/martini''
Use of uninitialized value $Dancer2::Plugin::CUR_PLUGIN in string at /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Plugin.pm line 262.
# Failed test 'Status 403: not a JuiceDrinker'
# at t/30-authenticate_Basic.t line 242.
# got: '500'
# expected: '403'
# Failed test 'Delivering: not a JuiceDrinker'
# at t/30-authenticate_Basic.t line 247.
# got: '<!DOCTYPE html>
# <html lang="en">
# <head>
# <meta charset="UTF-8">
# <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
# <title>Error 500 - Internal Server Error</title>
# <link rel="stylesheet" href="http://localhost/css/error.css">
# </head>
# <body>
# <h1>Error 500 - Internal Server Error</h1>
# <div id="content">
# <h2>Runtime Error</h2><pre class="error">Can&#39;t find originating plugin at /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Route.pm line 140.
# </pre>
# <div class="title">/home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Route.pm around line 140</div><pre class="content"><table class="context">
# <tr><th>135</th><td>sub execute {</td></tr>
# <tr><th>136</th><td> my ( $self, $app, @args ) = @_;</td></tr>
# <tr><th>137</th><td> local $REQUEST = $app-&gt;request;</td></tr>
# <tr><th>138</th><td> local $RESPONSE = $app-&gt;response;</td></tr>
# <tr><th>139</th><td></td></tr>
# <tr class="errline"><th>140</th><td> my $content = $self-&gt;code-&gt;( $app, @args );</td></tr>
# <tr><th>141</th><td></td></tr>
# <tr><th>142</th><td> # users may set content in the response. If the response has</td></tr>
# <tr><th>143</th><td> # content, and the returned value from the route code is not</td></tr>
# <tr><th>144</th><td> # an object (well, reference) we ignore the returned value</td></tr>
# <tr><th>145</th><td> # and use the existing content in the response instead.</td></tr>
# </table></pre>
# <div class="title">Stack</div><pre class="content">main in t/30-authenticate_Basic.t l. 262
# Plack::Test in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Test.pm l. 38
# main in t/30-authenticate_Basic.t l. 241
# Plack::Test in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Test.pm l. 38
# Plack::Test::MockHTTP in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Test/MockHTTP.pm l. 27
# Try::Tiny in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Try/Tiny.pm l. 94
# Try::Tiny in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Try/Tiny.pm l. 101
# Plack::Test::MockHTTP in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Test/MockHTTP.pm l. 24
# Dancer2::Core::Runner in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Runner.pm l. 213
# Dancer2::Core::Dispatcher in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Dispatcher.pm l. 36
# Plack::Component in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Component.pm l. 50
# Plack::Middleware::Head in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Middleware/Head.pm l. 10
# Plack::Component in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Component.pm l. 50
# Plack::Middleware::FixMissingBodyInRedirect in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Middleware/FixMissingBodyInRedirect.pm l. 50
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1387
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1385
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 35
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1385
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1472
# Return::MultiLevel in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Return/MultiLevel.pm l. 36
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1471
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1594
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1626
# Dancer2::Core::Error in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Error.pm l. 303
# Method::Generate::Accessor::_Generated in (eval 154) l. 20
# Dancer2::Core::Error in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Error.pm l. 290
# Dancer2::Core::Error in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Error.pm l. 111
# Dancer2::Core::Error in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Error.pm l. 160
# Dancer2::Core::Error in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Error.pm l. 386</pre>
# <div class="title">Settings</div><pre class="content">
# <span class="key">appdir</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t&#39;,
# <span class="key">apphandler</span> =&gt; &#39;Standalone&#39;,
# <span class="key">behind_proxy</span> =&gt; 0,
# <span class="key">charset</span> =&gt; &#39;&#39;,
# <span class="key">content_type</span> =&gt; &#39;text/html&#39;,
# <span class="key">environment</span> =&gt; &#39;development&#39;,
# <span class="key">host</span> =&gt; &#39;0.0.0.0&#39;,
# <span class="key">logger</span> =&gt; bless( {
# <span class="key">app_name</span> =&gt; &#39;main&#39;,
# <span class="key">config</span> =&gt; {},
# <span class="key">environment</span> =&gt; &#39;development&#39;,
# <span class="key">fh</span> =&gt; \*{&#39;Dancer2::FileUtils::$fh&#39;},
# <span class="key">file_name</span> =&gt; &#39;development.log&#39;,
# <span class="key">hooks</span> =&gt; {
# <span class="key">&#39;engine.logger.after&#39;</span> =&gt; [],
# <span class="key">&#39;engine.logger.before&#39;</span> =&gt; []
# },
# <span class="key">location</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t&#39;,
# <span class="key">log_dir</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t/logs&#39;,
# <span class="key">log_file</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t/logs/development.log&#39;,
# <span class="key">log_format</span> =&gt; &#39;[%a:%P] %L @%T&gt; %m in %f l. %l&#39;,
# <span class="key">log_level</span> =&gt; &#39;debug&#39;,
# <span class="key">request</span> =&gt; bless( {
# <span class="key">_body_params</span> =&gt; {},
# <span class="key">_chunk_size</span> =&gt; 4096,
# <span class="key">_http_body</span> =&gt; bless( {
# <span class="key">body</span> =&gt; undef,
# <span class="key">buffer</span> =&gt; &#39;&#39;,
# <span class="key">chunk_buffer</span> =&gt; &#39;&#39;,
# <span class="key">chunked</span> =&gt; &#39;&#39;,
# <span class="key">cleanup</span> =&gt; 1,
# <span class="key">content_length</span> =&gt; 0,
# <span class="key">content_type</span> =&gt; &#39;&#39;,
# <span class="key">length</span> =&gt; 0,
# <span class="key">param</span> =&gt; {},
# <span class="key">param_order</span> =&gt; [],
# <span class="key">part_data</span> =&gt; {},
# <span class="key">state</span> =&gt; &#39;buffering&#39;,
# <span class="key">tmpdir</span> =&gt; &#39;/tmp&#39;,
# <span class="key">upload</span> =&gt; {}
# }, &#39;HTTP::Body::OctetStream&#39; ),
# <span class="key">_params</span> =&gt; {},
# <span class="key">_read_position</span> =&gt; 0,
# <span class="key">_route_params</span> =&gt; {},
# <span class="key">body</span> =&gt; &#39;&#39;,
# <span class="key">body_parameters</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">data</span> =&gt; undef,
# <span class="key">env</span> =&gt; {
# <span class="key">CONTENT_LENGTH</span> =&gt; 0,
# <span class="key">HTTP_AUTHORIZATION</span> =&gt; &#39;Basic ZGF2ZTpiZWVy&#39;,
# <span class="key">HTTP_HOST</span> =&gt; &#39;localhost&#39;,
# <span class="key">PATH_INFO</span> =&gt; &#39;/juice&#39;,
# <span class="key">QUERY_STRING</span> =&gt; &#39;&#39;,
# <span class="key">REMOTE_ADDR</span> =&gt; &#39;127.0.0.1&#39;,
# <span class="key">REMOTE_HOST</span> =&gt; &#39;localhost&#39;,
# <span class="key">REMOTE_PORT</span> =&gt; 47293,
# <span class="key">REQUEST_METHOD</span> =&gt; &#39;GET&#39;,
# <span class="key">REQUEST_URI</span> =&gt; &#39;/juice&#39;,
# <span class="key">SCRIPT_NAME</span> =&gt; &#39;&#39;,
# <span class="key">SERVER_NAME</span> =&gt; &#39;localhost&#39;,
# <span class="key">SERVER_PORT</span> =&gt; 80,
# <span class="key">SERVER_PROTOCOL</span> =&gt; &#39;HTTP/1.1&#39;,
# <span class="key">&#39;plack.request.body&#39;</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">&#39;plack.request.body_parameters&#39;</span> =&gt; [],
# <span class="key">&#39;plack.request.upload&#39;</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">&#39;psgi.errors&#39;</span> =&gt; *::STDERR,
# <span class="key">&#39;psgi.input&#39;</span> =&gt; \*{&#39;HTTP::Message::PSGI::$input&#39;},
# <span class="key">&#39;psgi.multiprocess&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.multithread&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.nonblocking&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.run_once&#39;</span> =&gt; 1,
# <span class="key">&#39;psgi.streaming&#39;</span> =&gt; 1,
# <span class="key">&#39;psgi.url_scheme&#39;</span> =&gt; &#39;http&#39;,
# <span class="key">&#39;psgi.version&#39;</span> =&gt; [
# 1,
# 1
# ]
# },
# <span class="key">id</span> =&gt; 8,
# <span class="key">is_behind_proxy</span> =&gt; &#39;&#39;,
# <span class="key">route_parameters</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">uploads</span> =&gt; {},
# <span class="key">vars</span> =&gt; {}
# }, &#39;Dancer2::Core::Request&#39; )
# }, &#39;Dancer2::Logger::File&#39; ),
# <span class="key">no_server_tokens</span> =&gt; 0,
# <span class="key">plugins</span> =&gt; {
# <span class="key">&#39;HTTP::Auth::Extensible&#39;</span> =&gt; {
# <span class="key">realms</span> =&gt; {
# <span class="key">some_realm</span> =&gt; {
# <span class="key">provider</span> =&gt; &#39;Config&#39;,
# <span class="key">scheme</span> =&gt; &#39;Basic&#39;,
# <span class="key">users</span> =&gt; [
# {
# <span class="key">name</span> =&gt; &#39;David Precious&#39;,
# <span class="key">pass</span> =&gt; &#39;beer&#39;,
# <span class="key">roles</span> =&gt; [
# &#39;BeerDrinker&#39;,
# &#39;VodkaDrinker&#39;
# ],
# <span class="key">user</span> =&gt; &#39;dave&#39;
# }
# ]
# }
# }
# }
# },
# <span class="key">port</span> =&gt; &#39;3000&#39;,
# <span class="key">public_dir</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t/public&#39;,
# <span class="key">route_handlers</span> =&gt; [
# [
# &#39;AutoPage&#39;,
# 1
# ]
# ],
# <span class="key">session</span> =&gt; bless( {
# <span class="key">config</span> =&gt; {},
# <span class="key">cookie_name</span> =&gt; &#39;dancer.session&#39;,
# <span class="key">cookie_path</span> =&gt; &#39;/&#39;,
# <span class="key">is_http_only</span> =&gt; 1,
# <span class="key">is_secure</span> =&gt; 0,
# <span class="key">log_cb</span> =&gt; sub { &quot;DUMMY&quot; },
# <span class="key">request</span> =&gt; $VAR1-&gt;{logger}{request}
# }, &#39;Dancer2::Session::Simple&#39; ),
# <span class="key">show_errors</span> =&gt; 1,
# <span class="key">startup_info</span> =&gt; 1,
# <span class="key">static_handler</span> =&gt; undef,
# <span class="key">template</span> =&gt; &#39;Tiny&#39;,
# <span class="key">traces</span> =&gt; 0,
# <span class="key">views</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t/views&#39;
# </pre>
# <div class="title">Session</div><pre class="content"><i>undefined</i></pre>
# <div class="title">Environment</div><pre class="content">
# <span class="key">CONTENT_LENGTH</span> =&gt; 0,
# <span class="key">HTTP_AUTHORIZATION</span> =&gt; &#39;Basic ZGF2ZTpiZWVy&#39;,
# <span class="key">HTTP_HOST</span> =&gt; &#39;localhost&#39;,
# <span class="key">PATH_INFO</span> =&gt; &#39;/juice&#39;,
# <span class="key">QUERY_STRING</span> =&gt; &#39;&#39;,
# <span class="key">REMOTE_ADDR</span> =&gt; &#39;127.0.0.1&#39;,
# <span class="key">REMOTE_HOST</span> =&gt; &#39;localhost&#39;,
# <span class="key">REMOTE_PORT</span> =&gt; 47293,
# <span class="key">REQUEST_METHOD</span> =&gt; &#39;GET&#39;,
# <span class="key">REQUEST_URI</span> =&gt; &#39;/juice&#39;,
# <span class="key">SCRIPT_NAME</span> =&gt; &#39;&#39;,
# <span class="key">SERVER_NAME</span> =&gt; &#39;localhost&#39;,
# <span class="key">SERVER_PORT</span> =&gt; 80,
# <span class="key">SERVER_PROTOCOL</span> =&gt; &#39;HTTP/1.1&#39;,
# <span class="key">&#39;plack.request.body&#39;</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">&#39;plack.request.body_parameters&#39;</span> =&gt; [],
# <span class="key">&#39;plack.request.upload&#39;</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">&#39;psgi.errors&#39;</span> =&gt; *::STDERR,
# <span class="key">&#39;psgi.input&#39;</span> =&gt; \*{&#39;HTTP::Message::PSGI::$input&#39;},
# <span class="key">&#39;psgi.multiprocess&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.multithread&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.nonblocking&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.run_once&#39;</span> =&gt; 1,
# <span class="key">&#39;psgi.streaming&#39;</span> =&gt; 1,
# <span class="key">&#39;psgi.url_scheme&#39;</span> =&gt; &#39;http&#39;,
# <span class="key">&#39;psgi.version&#39;</span> =&gt; [
# 1,
# 1
# ]
# </pre>
#
# </div>
# <div id="footer">
# Powered by <a href="http://perldancer.org/">Dancer2</a> 0.205000
# </div>
# </body>
# </html>
# '
# expected: 'Permission denied for resource: '/juice''
Use of uninitialized value $Dancer2::Plugin::CUR_PLUGIN in string at /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Plugin.pm line 262.
# Failed test 'Status 200: Regular Drinker'
# at t/30-authenticate_Basic.t line 269.
# got: '500'
# expected: '200'
# Failed test 'Delivering: Regular Drinker'
# at t/30-authenticate_Basic.t line 274.
# got: '<!DOCTYPE html>
# <html lang="en">
# <head>
# <meta charset="UTF-8">
# <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
# <title>Error 500 - Internal Server Error</title>
# <link rel="stylesheet" href="http://localhost/css/error.css">
# </head>
# <body>
# <h1>Error 500 - Internal Server Error</h1>
# <div id="content">
# <h2>Runtime Error</h2><pre class="error">Can&#39;t find originating plugin at /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Route.pm line 140.
# </pre>
# <div class="title">/home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Route.pm around line 140</div><pre class="content"><table class="context">
# <tr><th>135</th><td>sub execute {</td></tr>
# <tr><th>136</th><td> my ( $self, $app, @args ) = @_;</td></tr>
# <tr><th>137</th><td> local $REQUEST = $app-&gt;request;</td></tr>
# <tr><th>138</th><td> local $RESPONSE = $app-&gt;response;</td></tr>
# <tr><th>139</th><td></td></tr>
# <tr class="errline"><th>140</th><td> my $content = $self-&gt;code-&gt;( $app, @args );</td></tr>
# <tr><th>141</th><td></td></tr>
# <tr><th>142</th><td> # users may set content in the response. If the response has</td></tr>
# <tr><th>143</th><td> # content, and the returned value from the route code is not</td></tr>
# <tr><th>144</th><td> # an object (well, reference) we ignore the returned value</td></tr>
# <tr><th>145</th><td> # and use the existing content in the response instead.</td></tr>
# </table></pre>
# <div class="title">Stack</div><pre class="content">main in t/30-authenticate_Basic.t l. 279
# Plack::Test in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Test.pm l. 38
# main in t/30-authenticate_Basic.t l. 268
# Plack::Test in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Test.pm l. 38
# Plack::Test::MockHTTP in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Test/MockHTTP.pm l. 27
# Try::Tiny in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Try/Tiny.pm l. 94
# Try::Tiny in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Try/Tiny.pm l. 101
# Plack::Test::MockHTTP in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Test/MockHTTP.pm l. 24
# Dancer2::Core::Runner in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Runner.pm l. 213
# Dancer2::Core::Dispatcher in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Dispatcher.pm l. 36
# Plack::Component in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Component.pm l. 50
# Plack::Middleware::Head in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Middleware/Head.pm l. 10
# Plack::Component in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Component.pm l. 50
# Plack::Middleware::FixMissingBodyInRedirect in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Middleware/FixMissingBodyInRedirect.pm l. 50
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1387
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1385
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 35
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1385
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1472
# Return::MultiLevel in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Return/MultiLevel.pm l. 36
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1471
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1594
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1626
# Dancer2::Core::Error in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Error.pm l. 303
# Method::Generate::Accessor::_Generated in (eval 154) l. 20
# Dancer2::Core::Error in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Error.pm l. 290
# Dancer2::Core::Error in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Error.pm l. 111
# Dancer2::Core::Error in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Error.pm l. 160
# Dancer2::Core::Error in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Error.pm l. 386</pre>
# <div class="title">Settings</div><pre class="content">
# <span class="key">appdir</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t&#39;,
# <span class="key">apphandler</span> =&gt; &#39;Standalone&#39;,
# <span class="key">behind_proxy</span> =&gt; 0,
# <span class="key">charset</span> =&gt; &#39;&#39;,
# <span class="key">content_type</span> =&gt; &#39;text/html&#39;,
# <span class="key">environment</span> =&gt; &#39;development&#39;,
# <span class="key">host</span> =&gt; &#39;0.0.0.0&#39;,
# <span class="key">logger</span> =&gt; bless( {
# <span class="key">app_name</span> =&gt; &#39;main&#39;,
# <span class="key">config</span> =&gt; {},
# <span class="key">environment</span> =&gt; &#39;development&#39;,
# <span class="key">fh</span> =&gt; \*{&#39;Dancer2::FileUtils::$fh&#39;},
# <span class="key">file_name</span> =&gt; &#39;development.log&#39;,
# <span class="key">hooks</span> =&gt; {
# <span class="key">&#39;engine.logger.after&#39;</span> =&gt; [],
# <span class="key">&#39;engine.logger.before&#39;</span> =&gt; []
# },
# <span class="key">location</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t&#39;,
# <span class="key">log_dir</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t/logs&#39;,
# <span class="key">log_file</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t/logs/development.log&#39;,
# <span class="key">log_format</span> =&gt; &#39;[%a:%P] %L @%T&gt; %m in %f l. %l&#39;,
# <span class="key">log_level</span> =&gt; &#39;debug&#39;,
# <span class="key">request</span> =&gt; bless( {
# <span class="key">_body_params</span> =&gt; {},
# <span class="key">_chunk_size</span> =&gt; 4096,
# <span class="key">_http_body</span> =&gt; bless( {
# <span class="key">body</span> =&gt; undef,
# <span class="key">buffer</span> =&gt; &#39;&#39;,
# <span class="key">chunk_buffer</span> =&gt; &#39;&#39;,
# <span class="key">chunked</span> =&gt; &#39;&#39;,
# <span class="key">cleanup</span> =&gt; 1,
# <span class="key">content_length</span> =&gt; 0,
# <span class="key">content_type</span> =&gt; &#39;&#39;,
# <span class="key">length</span> =&gt; 0,
# <span class="key">param</span> =&gt; {},
# <span class="key">param_order</span> =&gt; [],
# <span class="key">part_data</span> =&gt; {},
# <span class="key">state</span> =&gt; &#39;buffering&#39;,
# <span class="key">tmpdir</span> =&gt; &#39;/tmp&#39;,
# <span class="key">upload</span> =&gt; {}
# }, &#39;HTTP::Body::OctetStream&#39; ),
# <span class="key">_params</span> =&gt; {},
# <span class="key">_read_position</span> =&gt; 0,
# <span class="key">_route_params</span> =&gt; {},
# <span class="key">body</span> =&gt; &#39;&#39;,
# <span class="key">body_parameters</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">data</span> =&gt; undef,
# <span class="key">env</span> =&gt; {
# <span class="key">CONTENT_LENGTH</span> =&gt; 0,
# <span class="key">HTTP_AUTHORIZATION</span> =&gt; &#39;Basic ZGF2ZTpiZWVy&#39;,
# <span class="key">HTTP_HOST</span> =&gt; &#39;localhost&#39;,
# <span class="key">PATH_INFO</span> =&gt; &#39;/drinker&#39;,
# <span class="key">QUERY_STRING</span> =&gt; &#39;&#39;,
# <span class="key">REMOTE_ADDR</span> =&gt; &#39;127.0.0.1&#39;,
# <span class="key">REMOTE_HOST</span> =&gt; &#39;localhost&#39;,
# <span class="key">REMOTE_PORT</span> =&gt; 32899,
# <span class="key">REQUEST_METHOD</span> =&gt; &#39;GET&#39;,
# <span class="key">REQUEST_URI</span> =&gt; &#39;/drinker&#39;,
# <span class="key">SCRIPT_NAME</span> =&gt; &#39;&#39;,
# <span class="key">SERVER_NAME</span> =&gt; &#39;localhost&#39;,
# <span class="key">SERVER_PORT</span> =&gt; 80,
# <span class="key">SERVER_PROTOCOL</span> =&gt; &#39;HTTP/1.1&#39;,
# <span class="key">&#39;plack.request.body&#39;</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">&#39;plack.request.body_parameters&#39;</span> =&gt; [],
# <span class="key">&#39;plack.request.upload&#39;</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">&#39;psgi.errors&#39;</span> =&gt; *::STDERR,
# <span class="key">&#39;psgi.input&#39;</span> =&gt; \*{&#39;HTTP::Message::PSGI::$input&#39;},
# <span class="key">&#39;psgi.multiprocess&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.multithread&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.nonblocking&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.run_once&#39;</span> =&gt; 1,
# <span class="key">&#39;psgi.streaming&#39;</span> =&gt; 1,
# <span class="key">&#39;psgi.url_scheme&#39;</span> =&gt; &#39;http&#39;,
# <span class="key">&#39;psgi.version&#39;</span> =&gt; [
# 1,
# 1
# ]
# },
# <span class="key">id</span> =&gt; 9,
# <span class="key">is_behind_proxy</span> =&gt; &#39;&#39;,
# <span class="key">route_parameters</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">uploads</span> =&gt; {},
# <span class="key">vars</span> =&gt; {}
# }, &#39;Dancer2::Core::Request&#39; )
# }, &#39;Dancer2::Logger::File&#39; ),
# <span class="key">no_server_tokens</span> =&gt; 0,
# <span class="key">plugins</span> =&gt; {
# <span class="key">&#39;HTTP::Auth::Extensible&#39;</span> =&gt; {
# <span class="key">realms</span> =&gt; {
# <span class="key">some_realm</span> =&gt; {
# <span class="key">provider</span> =&gt; &#39;Config&#39;,
# <span class="key">scheme</span> =&gt; &#39;Basic&#39;,
# <span class="key">users</span> =&gt; [
# {
# <span class="key">name</span> =&gt; &#39;David Precious&#39;,
# <span class="key">pass</span> =&gt; &#39;beer&#39;,
# <span class="key">roles</span> =&gt; [
# &#39;BeerDrinker&#39;,
# &#39;VodkaDrinker&#39;
# ],
# <span class="key">user</span> =&gt; &#39;dave&#39;
# }
# ]
# }
# }
# }
# },
# <span class="key">port</span> =&gt; &#39;3000&#39;,
# <span class="key">public_dir</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t/public&#39;,
# <span class="key">route_handlers</span> =&gt; [
# [
# &#39;AutoPage&#39;,
# 1
# ]
# ],
# <span class="key">session</span> =&gt; bless( {
# <span class="key">config</span> =&gt; {},
# <span class="key">cookie_name</span> =&gt; &#39;dancer.session&#39;,
# <span class="key">cookie_path</span> =&gt; &#39;/&#39;,
# <span class="key">is_http_only</span> =&gt; 1,
# <span class="key">is_secure</span> =&gt; 0,
# <span class="key">log_cb</span> =&gt; sub { &quot;DUMMY&quot; },
# <span class="key">request</span> =&gt; $VAR1-&gt;{logger}{request}
# }, &#39;Dancer2::Session::Simple&#39; ),
# <span class="key">show_errors</span> =&gt; 1,
# <span class="key">startup_info</span> =&gt; 1,
# <span class="key">static_handler</span> =&gt; undef,
# <span class="key">template</span> =&gt; &#39;Tiny&#39;,
# <span class="key">traces</span> =&gt; 0,
# <span class="key">views</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t/views&#39;
# </pre>
# <div class="title">Session</div><pre class="content"><i>undefined</i></pre>
# <div class="title">Environment</div><pre class="content">
# <span class="key">CONTENT_LENGTH</span> =&gt; 0,
# <span class="key">HTTP_AUTHORIZATION</span> =&gt; &#39;Basic ZGF2ZTpiZWVy&#39;,
# <span class="key">HTTP_HOST</span> =&gt; &#39;localhost&#39;,
# <span class="key">PATH_INFO</span> =&gt; &#39;/drinker&#39;,
# <span class="key">QUERY_STRING</span> =&gt; &#39;&#39;,
# <span class="key">REMOTE_ADDR</span> =&gt; &#39;127.0.0.1&#39;,
# <span class="key">REMOTE_HOST</span> =&gt; &#39;localhost&#39;,
# <span class="key">REMOTE_PORT</span> =&gt; 32899,
# <span class="key">REQUEST_METHOD</span> =&gt; &#39;GET&#39;,
# <span class="key">REQUEST_URI</span> =&gt; &#39;/drinker&#39;,
# <span class="key">SCRIPT_NAME</span> =&gt; &#39;&#39;,
# <span class="key">SERVER_NAME</span> =&gt; &#39;localhost&#39;,
# <span class="key">SERVER_PORT</span> =&gt; 80,
# <span class="key">SERVER_PROTOCOL</span> =&gt; &#39;HTTP/1.1&#39;,
# <span class="key">&#39;plack.request.body&#39;</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">&#39;plack.request.body_parameters&#39;</span> =&gt; [],
# <span class="key">&#39;plack.request.upload&#39;</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">&#39;psgi.errors&#39;</span> =&gt; *::STDERR,
# <span class="key">&#39;psgi.input&#39;</span> =&gt; \*{&#39;HTTP::Message::PSGI::$input&#39;},
# <span class="key">&#39;psgi.multiprocess&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.multithread&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.nonblocking&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.run_once&#39;</span> =&gt; 1,
# <span class="key">&#39;psgi.streaming&#39;</span> =&gt; 1,
# <span class="key">&#39;psgi.url_scheme&#39;</span> =&gt; &#39;http&#39;,
# <span class="key">&#39;psgi.version&#39;</span> =&gt; [
# 1,
# 1
# ]
# </pre>
#
# </div>
# <div id="footer">
# Powered by <a href="http://perldancer.org/">Dancer2</a> 0.205000
# </div>
# </body>
# </html>
# '
# expected: 'Enjoy your bevarage!'
Use of uninitialized value $Dancer2::Plugin::CUR_PLUGIN in string at /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Plugin.pm line 262.
# Failed test 'Status 200: Thirsty Drinker'
# at t/30-authenticate_Basic.t line 286.
# got: '500'
# expected: '200'
# Failed test 'Delivering: Thirsty Drinker'
# at t/30-authenticate_Basic.t line 291.
# got: '<!DOCTYPE html>
# <html lang="en">
# <head>
# <meta charset="UTF-8">
# <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
# <title>Error 500 - Internal Server Error</title>
# <link rel="stylesheet" href="http://localhost/css/error.css">
# </head>
# <body>
# <h1>Error 500 - Internal Server Error</h1>
# <div id="content">
# <h2>Runtime Error</h2><pre class="error">Can&#39;t find originating plugin at /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Route.pm line 140.
# </pre>
# <div class="title">/home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Route.pm around line 140</div><pre class="content"><table class="context">
# <tr><th>135</th><td>sub execute {</td></tr>
# <tr><th>136</th><td> my ( $self, $app, @args ) = @_;</td></tr>
# <tr><th>137</th><td> local $REQUEST = $app-&gt;request;</td></tr>
# <tr><th>138</th><td> local $RESPONSE = $app-&gt;response;</td></tr>
# <tr><th>139</th><td></td></tr>
# <tr class="errline"><th>140</th><td> my $content = $self-&gt;code-&gt;( $app, @args );</td></tr>
# <tr><th>141</th><td></td></tr>
# <tr><th>142</th><td> # users may set content in the response. If the response has</td></tr>
# <tr><th>143</th><td> # content, and the returned value from the route code is not</td></tr>
# <tr><th>144</th><td> # an object (well, reference) we ignore the returned value</td></tr>
# <tr><th>145</th><td> # and use the existing content in the response instead.</td></tr>
# </table></pre>
# <div class="title">Stack</div><pre class="content">main in t/30-authenticate_Basic.t l. 296
# Plack::Test in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Test.pm l. 38
# main in t/30-authenticate_Basic.t l. 285
# Plack::Test in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Test.pm l. 38
# Plack::Test::MockHTTP in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Test/MockHTTP.pm l. 27
# Try::Tiny in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Try/Tiny.pm l. 94
# Try::Tiny in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Try/Tiny.pm l. 101
# Plack::Test::MockHTTP in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Test/MockHTTP.pm l. 24
# Dancer2::Core::Runner in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Runner.pm l. 213
# Dancer2::Core::Dispatcher in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Dispatcher.pm l. 36
# Plack::Component in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Component.pm l. 50
# Plack::Middleware::Head in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Middleware/Head.pm l. 10
# Plack::Component in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Component.pm l. 50
# Plack::Middleware::FixMissingBodyInRedirect in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Middleware/FixMissingBodyInRedirect.pm l. 50
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1387
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1385
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 35
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1385
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1472
# Return::MultiLevel in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Return/MultiLevel.pm l. 36
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1471
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1594
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1626
# Dancer2::Core::Error in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Error.pm l. 303
# Method::Generate::Accessor::_Generated in (eval 154) l. 20
# Dancer2::Core::Error in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Error.pm l. 290
# Dancer2::Core::Error in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Error.pm l. 111
# Dancer2::Core::Error in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Error.pm l. 160
# Dancer2::Core::Error in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Error.pm l. 386</pre>
# <div class="title">Settings</div><pre class="content">
# <span class="key">appdir</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t&#39;,
# <span class="key">apphandler</span> =&gt; &#39;Standalone&#39;,
# <span class="key">behind_proxy</span> =&gt; 0,
# <span class="key">charset</span> =&gt; &#39;&#39;,
# <span class="key">content_type</span> =&gt; &#39;text/html&#39;,
# <span class="key">environment</span> =&gt; &#39;development&#39;,
# <span class="key">host</span> =&gt; &#39;0.0.0.0&#39;,
# <span class="key">logger</span> =&gt; bless( {
# <span class="key">app_name</span> =&gt; &#39;main&#39;,
# <span class="key">config</span> =&gt; {},
# <span class="key">environment</span> =&gt; &#39;development&#39;,
# <span class="key">fh</span> =&gt; \*{&#39;Dancer2::FileUtils::$fh&#39;},
# <span class="key">file_name</span> =&gt; &#39;development.log&#39;,
# <span class="key">hooks</span> =&gt; {
# <span class="key">&#39;engine.logger.after&#39;</span> =&gt; [],
# <span class="key">&#39;engine.logger.before&#39;</span> =&gt; []
# },
# <span class="key">location</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t&#39;,
# <span class="key">log_dir</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t/logs&#39;,
# <span class="key">log_file</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t/logs/development.log&#39;,
# <span class="key">log_format</span> =&gt; &#39;[%a:%P] %L @%T&gt; %m in %f l. %l&#39;,
# <span class="key">log_level</span> =&gt; &#39;debug&#39;,
# <span class="key">request</span> =&gt; bless( {
# <span class="key">_body_params</span> =&gt; {},
# <span class="key">_chunk_size</span> =&gt; 4096,
# <span class="key">_http_body</span> =&gt; bless( {
# <span class="key">body</span> =&gt; undef,
# <span class="key">buffer</span> =&gt; &#39;&#39;,
# <span class="key">chunk_buffer</span> =&gt; &#39;&#39;,
# <span class="key">chunked</span> =&gt; &#39;&#39;,
# <span class="key">cleanup</span> =&gt; 1,
# <span class="key">content_length</span> =&gt; 0,
# <span class="key">content_type</span> =&gt; &#39;&#39;,
# <span class="key">length</span> =&gt; 0,
# <span class="key">param</span> =&gt; {},
# <span class="key">param_order</span> =&gt; [],
# <span class="key">part_data</span> =&gt; {},
# <span class="key">state</span> =&gt; &#39;buffering&#39;,
# <span class="key">tmpdir</span> =&gt; &#39;/tmp&#39;,
# <span class="key">upload</span> =&gt; {}
# }, &#39;HTTP::Body::OctetStream&#39; ),
# <span class="key">_params</span> =&gt; {},
# <span class="key">_read_position</span> =&gt; 0,
# <span class="key">_route_params</span> =&gt; {},
# <span class="key">body</span> =&gt; &#39;&#39;,
# <span class="key">body_parameters</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">data</span> =&gt; undef,
# <span class="key">env</span> =&gt; {
# <span class="key">CONTENT_LENGTH</span> =&gt; 0,
# <span class="key">HTTP_AUTHORIZATION</span> =&gt; &#39;Basic ZGF2ZTpiZWVy&#39;,
# <span class="key">HTTP_HOST</span> =&gt; &#39;localhost&#39;,
# <span class="key">PATH_INFO</span> =&gt; &#39;/thirsty&#39;,
# <span class="key">QUERY_STRING</span> =&gt; &#39;&#39;,
# <span class="key">REMOTE_ADDR</span> =&gt; &#39;127.0.0.1&#39;,
# <span class="key">REMOTE_HOST</span> =&gt; &#39;localhost&#39;,
# <span class="key">REMOTE_PORT</span> =&gt; 4441,
# <span class="key">REQUEST_METHOD</span> =&gt; &#39;GET&#39;,
# <span class="key">REQUEST_URI</span> =&gt; &#39;/thirsty&#39;,
# <span class="key">SCRIPT_NAME</span> =&gt; &#39;&#39;,
# <span class="key">SERVER_NAME</span> =&gt; &#39;localhost&#39;,
# <span class="key">SERVER_PORT</span> =&gt; 80,
# <span class="key">SERVER_PROTOCOL</span> =&gt; &#39;HTTP/1.1&#39;,
# <span class="key">&#39;plack.request.body&#39;</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">&#39;plack.request.body_parameters&#39;</span> =&gt; [],
# <span class="key">&#39;plack.request.upload&#39;</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">&#39;psgi.errors&#39;</span> =&gt; *::STDERR,
# <span class="key">&#39;psgi.input&#39;</span> =&gt; \*{&#39;HTTP::Message::PSGI::$input&#39;},
# <span class="key">&#39;psgi.multiprocess&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.multithread&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.nonblocking&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.run_once&#39;</span> =&gt; 1,
# <span class="key">&#39;psgi.streaming&#39;</span> =&gt; 1,
# <span class="key">&#39;psgi.url_scheme&#39;</span> =&gt; &#39;http&#39;,
# <span class="key">&#39;psgi.version&#39;</span> =&gt; [
# 1,
# 1
# ]
# },
# <span class="key">id</span> =&gt; 10,
# <span class="key">is_behind_proxy</span> =&gt; &#39;&#39;,
# <span class="key">route_parameters</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">uploads</span> =&gt; {},
# <span class="key">vars</span> =&gt; {}
# }, &#39;Dancer2::Core::Request&#39; )
# }, &#39;Dancer2::Logger::File&#39; ),
# <span class="key">no_server_tokens</span> =&gt; 0,
# <span class="key">plugins</span> =&gt; {
# <span class="key">&#39;HTTP::Auth::Extensible&#39;</span> =&gt; {
# <span class="key">realms</span> =&gt; {
# <span class="key">some_realm</span> =&gt; {
# <span class="key">provider</span> =&gt; &#39;Config&#39;,
# <span class="key">scheme</span> =&gt; &#39;Basic&#39;,
# <span class="key">users</span> =&gt; [
# {
# <span class="key">name</span> =&gt; &#39;David Precious&#39;,
# <span class="key">pass</span> =&gt; &#39;beer&#39;,
# <span class="key">roles</span> =&gt; [
# &#39;BeerDrinker&#39;,
# &#39;VodkaDrinker&#39;
# ],
# <span class="key">user</span> =&gt; &#39;dave&#39;
# }
# ]
# }
# }
# }
# },
# <span class="key">port</span> =&gt; &#39;3000&#39;,
# <span class="key">public_dir</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t/public&#39;,
# <span class="key">route_handlers</span> =&gt; [
# [
# &#39;AutoPage&#39;,
# 1
# ]
# ],
# <span class="key">session</span> =&gt; bless( {
# <span class="key">config</span> =&gt; {},
# <span class="key">cookie_name</span> =&gt; &#39;dancer.session&#39;,
# <span class="key">cookie_path</span> =&gt; &#39;/&#39;,
# <span class="key">is_http_only</span> =&gt; 1,
# <span class="key">is_secure</span> =&gt; 0,
# <span class="key">log_cb</span> =&gt; sub { &quot;DUMMY&quot; },
# <span class="key">request</span> =&gt; $VAR1-&gt;{logger}{request}
# }, &#39;Dancer2::Session::Simple&#39; ),
# <span class="key">show_errors</span> =&gt; 1,
# <span class="key">startup_info</span> =&gt; 1,
# <span class="key">static_handler</span> =&gt; undef,
# <span class="key">template</span> =&gt; &#39;Tiny&#39;,
# <span class="key">traces</span> =&gt; 0,
# <span class="key">views</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t/views&#39;
# </pre>
# <div class="title">Session</div><pre class="content"><i>undefined</i></pre>
# <div class="title">Environment</div><pre class="content">
# <span class="key">CONTENT_LENGTH</span> =&gt; 0,
# <span class="key">HTTP_AUTHORIZATION</span> =&gt; &#39;Basic ZGF2ZTpiZWVy&#39;,
# <span class="key">HTTP_HOST</span> =&gt; &#39;localhost&#39;,
# <span class="key">PATH_INFO</span> =&gt; &#39;/thirsty&#39;,
# <span class="key">QUERY_STRING</span> =&gt; &#39;&#39;,
# <span class="key">REMOTE_ADDR</span> =&gt; &#39;127.0.0.1&#39;,
# <span class="key">REMOTE_HOST</span> =&gt; &#39;localhost&#39;,
# <span class="key">REMOTE_PORT</span> =&gt; 4441,
# <span class="key">REQUEST_METHOD</span> =&gt; &#39;GET&#39;,
# <span class="key">REQUEST_URI</span> =&gt; &#39;/thirsty&#39;,
# <span class="key">SCRIPT_NAME</span> =&gt; &#39;&#39;,
# <span class="key">SERVER_NAME</span> =&gt; &#39;localhost&#39;,
# <span class="key">SERVER_PORT</span> =&gt; 80,
# <span class="key">SERVER_PROTOCOL</span> =&gt; &#39;HTTP/1.1&#39;,
# <span class="key">&#39;plack.request.body&#39;</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">&#39;plack.request.body_parameters&#39;</span> =&gt; [],
# <span class="key">&#39;plack.request.upload&#39;</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">&#39;psgi.errors&#39;</span> =&gt; *::STDERR,
# <span class="key">&#39;psgi.input&#39;</span> =&gt; \*{&#39;HTTP::Message::PSGI::$input&#39;},
# <span class="key">&#39;psgi.multiprocess&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.multithread&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.nonblocking&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.run_once&#39;</span> =&gt; 1,
# <span class="key">&#39;psgi.streaming&#39;</span> =&gt; 1,
# <span class="key">&#39;psgi.url_scheme&#39;</span> =&gt; &#39;http&#39;,
# <span class="key">&#39;psgi.version&#39;</span> =&gt; [
# 1,
# 1
# ]
# </pre>
#
# </div>
# <div id="footer">
# Powered by <a href="http://perldancer.org/">Dancer2</a> 0.205000
# </div>
# </body>
# </html>
# '
# expected: 'Enjoy your drinks, one at a time!'
Use of uninitialized value $Dancer2::Plugin::CUR_PLUGIN in string at /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Plugin.pm line 262.
# Failed test 'Status 200: Alcoholic Drinker'
# at t/30-authenticate_Basic.t line 303.
# got: '500'
# expected: '200'
# Failed test 'Delivering: Alcoholic Drinker'
# at t/30-authenticate_Basic.t line 308.
# got: '<!DOCTYPE html>
# <html lang="en">
# <head>
# <meta charset="UTF-8">
# <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
# <title>Error 500 - Internal Server Error</title>
# <link rel="stylesheet" href="http://localhost/css/error.css">
# </head>
# <body>
# <h1>Error 500 - Internal Server Error</h1>
# <div id="content">
# <h2>Runtime Error</h2><pre class="error">Can&#39;t find originating plugin at /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Route.pm line 140.
# </pre>
# <div class="title">/home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Route.pm around line 140</div><pre class="content"><table class="context">
# <tr><th>135</th><td>sub execute {</td></tr>
# <tr><th>136</th><td> my ( $self, $app, @args ) = @_;</td></tr>
# <tr><th>137</th><td> local $REQUEST = $app-&gt;request;</td></tr>
# <tr><th>138</th><td> local $RESPONSE = $app-&gt;response;</td></tr>
# <tr><th>139</th><td></td></tr>
# <tr class="errline"><th>140</th><td> my $content = $self-&gt;code-&gt;( $app, @args );</td></tr>
# <tr><th>141</th><td></td></tr>
# <tr><th>142</th><td> # users may set content in the response. If the response has</td></tr>
# <tr><th>143</th><td> # content, and the returned value from the route code is not</td></tr>
# <tr><th>144</th><td> # an object (well, reference) we ignore the returned value</td></tr>
# <tr><th>145</th><td> # and use the existing content in the response instead.</td></tr>
# </table></pre>
# <div class="title">Stack</div><pre class="content">main in t/30-authenticate_Basic.t l. 313
# Plack::Test in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Test.pm l. 38
# main in t/30-authenticate_Basic.t l. 302
# Plack::Test in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Test.pm l. 38
# Plack::Test::MockHTTP in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Test/MockHTTP.pm l. 27
# Try::Tiny in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Try/Tiny.pm l. 94
# Try::Tiny in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Try/Tiny.pm l. 101
# Plack::Test::MockHTTP in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Test/MockHTTP.pm l. 24
# Dancer2::Core::Runner in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Runner.pm l. 213
# Dancer2::Core::Dispatcher in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Dispatcher.pm l. 36
# Plack::Component in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Component.pm l. 50
# Plack::Middleware::Head in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Middleware/Head.pm l. 10
# Plack::Component in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Component.pm l. 50
# Plack::Middleware::FixMissingBodyInRedirect in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Middleware/FixMissingBodyInRedirect.pm l. 50
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1387
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1385
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 35
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1385
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1472
# Return::MultiLevel in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Return/MultiLevel.pm l. 36
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1471
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1594
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1626
# Dancer2::Core::Error in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Error.pm l. 303
# Method::Generate::Accessor::_Generated in (eval 154) l. 20
# Dancer2::Core::Error in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Error.pm l. 290
# Dancer2::Core::Error in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Error.pm l. 111
# Dancer2::Core::Error in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Error.pm l. 160
# Dancer2::Core::Error in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Error.pm l. 386</pre>
# <div class="title">Settings</div><pre class="content">
# <span class="key">appdir</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t&#39;,
# <span class="key">apphandler</span> =&gt; &#39;Standalone&#39;,
# <span class="key">behind_proxy</span> =&gt; 0,
# <span class="key">charset</span> =&gt; &#39;&#39;,
# <span class="key">content_type</span> =&gt; &#39;text/html&#39;,
# <span class="key">environment</span> =&gt; &#39;development&#39;,
# <span class="key">host</span> =&gt; &#39;0.0.0.0&#39;,
# <span class="key">logger</span> =&gt; bless( {
# <span class="key">app_name</span> =&gt; &#39;main&#39;,
# <span class="key">config</span> =&gt; {},
# <span class="key">environment</span> =&gt; &#39;development&#39;,
# <span class="key">fh</span> =&gt; \*{&#39;Dancer2::FileUtils::$fh&#39;},
# <span class="key">file_name</span> =&gt; &#39;development.log&#39;,
# <span class="key">hooks</span> =&gt; {
# <span class="key">&#39;engine.logger.after&#39;</span> =&gt; [],
# <span class="key">&#39;engine.logger.before&#39;</span> =&gt; []
# },
# <span class="key">location</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t&#39;,
# <span class="key">log_dir</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t/logs&#39;,
# <span class="key">log_file</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t/logs/development.log&#39;,
# <span class="key">log_format</span> =&gt; &#39;[%a:%P] %L @%T&gt; %m in %f l. %l&#39;,
# <span class="key">log_level</span> =&gt; &#39;debug&#39;,
# <span class="key">request</span> =&gt; bless( {
# <span class="key">_body_params</span> =&gt; {},
# <span class="key">_chunk_size</span> =&gt; 4096,
# <span class="key">_http_body</span> =&gt; bless( {
# <span class="key">body</span> =&gt; undef,
# <span class="key">buffer</span> =&gt; &#39;&#39;,
# <span class="key">chunk_buffer</span> =&gt; &#39;&#39;,
# <span class="key">chunked</span> =&gt; &#39;&#39;,
# <span class="key">cleanup</span> =&gt; 1,
# <span class="key">content_length</span> =&gt; 0,
# <span class="key">content_type</span> =&gt; &#39;&#39;,
# <span class="key">length</span> =&gt; 0,
# <span class="key">param</span> =&gt; {},
# <span class="key">param_order</span> =&gt; [],
# <span class="key">part_data</span> =&gt; {},
# <span class="key">state</span> =&gt; &#39;buffering&#39;,
# <span class="key">tmpdir</span> =&gt; &#39;/tmp&#39;,
# <span class="key">upload</span> =&gt; {}
# }, &#39;HTTP::Body::OctetStream&#39; ),
# <span class="key">_params</span> =&gt; {},
# <span class="key">_read_position</span> =&gt; 0,
# <span class="key">_route_params</span> =&gt; {},
# <span class="key">body</span> =&gt; &#39;&#39;,
# <span class="key">body_parameters</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">data</span> =&gt; undef,
# <span class="key">env</span> =&gt; {
# <span class="key">CONTENT_LENGTH</span> =&gt; 0,
# <span class="key">HTTP_AUTHORIZATION</span> =&gt; &#39;Basic ZGF2ZTpiZWVy&#39;,
# <span class="key">HTTP_HOST</span> =&gt; &#39;localhost&#39;,
# <span class="key">PATH_INFO</span> =&gt; &#39;/alcohol&#39;,
# <span class="key">QUERY_STRING</span> =&gt; &#39;&#39;,
# <span class="key">REMOTE_ADDR</span> =&gt; &#39;127.0.0.1&#39;,
# <span class="key">REMOTE_HOST</span> =&gt; &#39;localhost&#39;,
# <span class="key">REMOTE_PORT</span> =&gt; 46188,
# <span class="key">REQUEST_METHOD</span> =&gt; &#39;GET&#39;,
# <span class="key">REQUEST_URI</span> =&gt; &#39;/alcohol&#39;,
# <span class="key">SCRIPT_NAME</span> =&gt; &#39;&#39;,
# <span class="key">SERVER_NAME</span> =&gt; &#39;localhost&#39;,
# <span class="key">SERVER_PORT</span> =&gt; 80,
# <span class="key">SERVER_PROTOCOL</span> =&gt; &#39;HTTP/1.1&#39;,
# <span class="key">&#39;plack.request.body&#39;</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">&#39;plack.request.body_parameters&#39;</span> =&gt; [],
# <span class="key">&#39;plack.request.upload&#39;</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">&#39;psgi.errors&#39;</span> =&gt; *::STDERR,
# <span class="key">&#39;psgi.input&#39;</span> =&gt; \*{&#39;HTTP::Message::PSGI::$input&#39;},
# <span class="key">&#39;psgi.multiprocess&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.multithread&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.nonblocking&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.run_once&#39;</span> =&gt; 1,
# <span class="key">&#39;psgi.streaming&#39;</span> =&gt; 1,
# <span class="key">&#39;psgi.url_scheme&#39;</span> =&gt; &#39;http&#39;,
# <span class="key">&#39;psgi.version&#39;</span> =&gt; [
# 1,
# 1
# ]
# },
# <span class="key">id</span> =&gt; 11,
# <span class="key">is_behind_proxy</span> =&gt; &#39;&#39;,
# <span class="key">route_parameters</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">uploads</span> =&gt; {},
# <span class="key">vars</span> =&gt; {}
# }, &#39;Dancer2::Core::Request&#39; )
# }, &#39;Dancer2::Logger::File&#39; ),
# <span class="key">no_server_tokens</span> =&gt; 0,
# <span class="key">plugins</span> =&gt; {
# <span class="key">&#39;HTTP::Auth::Extensible&#39;</span> =&gt; {
# <span class="key">realms</span> =&gt; {
# <span class="key">some_realm</span> =&gt; {
# <span class="key">provider</span> =&gt; &#39;Config&#39;,
# <span class="key">scheme</span> =&gt; &#39;Basic&#39;,
# <span class="key">users</span> =&gt; [
# {
# <span class="key">name</span> =&gt; &#39;David Precious&#39;,
# <span class="key">pass</span> =&gt; &#39;beer&#39;,
# <span class="key">roles</span> =&gt; [
# &#39;BeerDrinker&#39;,
# &#39;VodkaDrinker&#39;
# ],
# <span class="key">user</span> =&gt; &#39;dave&#39;
# }
# ]
# }
# }
# }
# },
# <span class="key">port</span> =&gt; &#39;3000&#39;,
# <span class="key">public_dir</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t/public&#39;,
# <span class="key">route_handlers</span> =&gt; [
# [
# &#39;AutoPage&#39;,
# 1
# ]
# ],
# <span class="key">session</span> =&gt; bless( {
# <span class="key">config</span> =&gt; {},
# <span class="key">cookie_name</span> =&gt; &#39;dancer.session&#39;,
# <span class="key">cookie_path</span> =&gt; &#39;/&#39;,
# <span class="key">is_http_only</span> =&gt; 1,
# <span class="key">is_secure</span> =&gt; 0,
# <span class="key">log_cb</span> =&gt; sub { &quot;DUMMY&quot; },
# <span class="key">request</span> =&gt; $VAR1-&gt;{logger}{request}
# }, &#39;Dancer2::Session::Simple&#39; ),
# <span class="key">show_errors</span> =&gt; 1,
# <span class="key">startup_info</span> =&gt; 1,
# <span class="key">static_handler</span> =&gt; undef,
# <span class="key">template</span> =&gt; &#39;Tiny&#39;,
# <span class="key">traces</span> =&gt; 0,
# <span class="key">views</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t/views&#39;
# </pre>
# <div class="title">Session</div><pre class="content"><i>undefined</i></pre>
# <div class="title">Environment</div><pre class="content">
# <span class="key">CONTENT_LENGTH</span> =&gt; 0,
# <span class="key">HTTP_AUTHORIZATION</span> =&gt; &#39;Basic ZGF2ZTpiZWVy&#39;,
# <span class="key">HTTP_HOST</span> =&gt; &#39;localhost&#39;,
# <span class="key">PATH_INFO</span> =&gt; &#39;/alcohol&#39;,
# <span class="key">QUERY_STRING</span> =&gt; &#39;&#39;,
# <span class="key">REMOTE_ADDR</span> =&gt; &#39;127.0.0.1&#39;,
# <span class="key">REMOTE_HOST</span> =&gt; &#39;localhost&#39;,
# <span class="key">REMOTE_PORT</span> =&gt; 46188,
# <span class="key">REQUEST_METHOD</span> =&gt; &#39;GET&#39;,
# <span class="key">REQUEST_URI</span> =&gt; &#39;/alcohol&#39;,
# <span class="key">SCRIPT_NAME</span> =&gt; &#39;&#39;,
# <span class="key">SERVER_NAME</span> =&gt; &#39;localhost&#39;,
# <span class="key">SERVER_PORT</span> =&gt; 80,
# <span class="key">SERVER_PROTOCOL</span> =&gt; &#39;HTTP/1.1&#39;,
# <span class="key">&#39;plack.request.body&#39;</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">&#39;plack.request.body_parameters&#39;</span> =&gt; [],
# <span class="key">&#39;plack.request.upload&#39;</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">&#39;psgi.errors&#39;</span> =&gt; *::STDERR,
# <span class="key">&#39;psgi.input&#39;</span> =&gt; \*{&#39;HTTP::Message::PSGI::$input&#39;},
# <span class="key">&#39;psgi.multiprocess&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.multithread&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.nonblocking&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.run_once&#39;</span> =&gt; 1,
# <span class="key">&#39;psgi.streaming&#39;</span> =&gt; 1,
# <span class="key">&#39;psgi.url_scheme&#39;</span> =&gt; &#39;http&#39;,
# <span class="key">&#39;psgi.version&#39;</span> =&gt; [
# 1,
# 1
# ]
# </pre>
#
# </div>
# <div id="footer">
# Powered by <a href="http://perldancer.org/">Dancer2</a> 0.205000
# </div>
# </body>
# </html>
# '
# expected: 'Enjoy your alcohol, but don't drink too much!'
Use of uninitialized value $Dancer2::Plugin::CUR_PLUGIN in string at /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Plugin.pm line 262.
# Failed test 'Status 403: not Bond, James Bond'
# at t/30-authenticate_Basic.t line 320.
# got: '500'
# expected: '403'
# Failed test 'Delivering: not Bond, James Bond'
# at t/30-authenticate_Basic.t line 325.
# got: '<!DOCTYPE html>
# <html lang="en">
# <head>
# <meta charset="UTF-8">
# <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
# <title>Error 500 - Internal Server Error</title>
# <link rel="stylesheet" href="http://localhost/css/error.css">
# </head>
# <body>
# <h1>Error 500 - Internal Server Error</h1>
# <div id="content">
# <h2>Runtime Error</h2><pre class="error">Can&#39;t find originating plugin at /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Route.pm line 140.
# </pre>
# <div class="title">/home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Route.pm around line 140</div><pre class="content"><table class="context">
# <tr><th>135</th><td>sub execute {</td></tr>
# <tr><th>136</th><td> my ( $self, $app, @args ) = @_;</td></tr>
# <tr><th>137</th><td> local $REQUEST = $app-&gt;request;</td></tr>
# <tr><th>138</th><td> local $RESPONSE = $app-&gt;response;</td></tr>
# <tr><th>139</th><td></td></tr>
# <tr class="errline"><th>140</th><td> my $content = $self-&gt;code-&gt;( $app, @args );</td></tr>
# <tr><th>141</th><td></td></tr>
# <tr><th>142</th><td> # users may set content in the response. If the response has</td></tr>
# <tr><th>143</th><td> # content, and the returned value from the route code is not</td></tr>
# <tr><th>144</th><td> # an object (well, reference) we ignore the returned value</td></tr>
# <tr><th>145</th><td> # and use the existing content in the response instead.</td></tr>
# </table></pre>
# <div class="title">Stack</div><pre class="content">main in t/30-authenticate_Basic.t l. 340
# Plack::Test in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Test.pm l. 38
# main in t/30-authenticate_Basic.t l. 319
# Plack::Test in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Test.pm l. 38
# Plack::Test::MockHTTP in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Test/MockHTTP.pm l. 27
# Try::Tiny in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Try/Tiny.pm l. 94
# Try::Tiny in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Try/Tiny.pm l. 101
# Plack::Test::MockHTTP in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Test/MockHTTP.pm l. 24
# Dancer2::Core::Runner in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Runner.pm l. 213
# Dancer2::Core::Dispatcher in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Dispatcher.pm l. 36
# Plack::Component in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Component.pm l. 50
# Plack::Middleware::Head in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Middleware/Head.pm l. 10
# Plack::Component in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Component.pm l. 50
# Plack::Middleware::FixMissingBodyInRedirect in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Plack/Middleware/FixMissingBodyInRedirect.pm l. 50
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1387
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1385
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 35
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1385
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1472
# Return::MultiLevel in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Return/MultiLevel.pm l. 36
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1471
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1594
# Dancer2::Core::App in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/App.pm l. 1626
# Dancer2::Core::Error in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Error.pm l. 303
# Method::Generate::Accessor::_Generated in (eval 154) l. 20
# Dancer2::Core::Error in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Error.pm l. 290
# Dancer2::Core::Error in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Error.pm l. 111
# Dancer2::Core::Error in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Error.pm l. 160
# Dancer2::Core::Error in /home/ryan/perl5/perlbrew/perls/perl-blead/lib/site_perl/5.26.0/Dancer2/Core/Error.pm l. 386</pre>
# <div class="title">Settings</div><pre class="content">
# <span class="key">appdir</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t&#39;,
# <span class="key">apphandler</span> =&gt; &#39;Standalone&#39;,
# <span class="key">behind_proxy</span> =&gt; 0,
# <span class="key">charset</span> =&gt; &#39;&#39;,
# <span class="key">content_type</span> =&gt; &#39;text/html&#39;,
# <span class="key">environment</span> =&gt; &#39;development&#39;,
# <span class="key">host</span> =&gt; &#39;0.0.0.0&#39;,
# <span class="key">logger</span> =&gt; bless( {
# <span class="key">app_name</span> =&gt; &#39;main&#39;,
# <span class="key">config</span> =&gt; {},
# <span class="key">environment</span> =&gt; &#39;development&#39;,
# <span class="key">fh</span> =&gt; \*{&#39;Dancer2::FileUtils::$fh&#39;},
# <span class="key">file_name</span> =&gt; &#39;development.log&#39;,
# <span class="key">hooks</span> =&gt; {
# <span class="key">&#39;engine.logger.after&#39;</span> =&gt; [],
# <span class="key">&#39;engine.logger.before&#39;</span> =&gt; []
# },
# <span class="key">location</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t&#39;,
# <span class="key">log_dir</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t/logs&#39;,
# <span class="key">log_file</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t/logs/development.log&#39;,
# <span class="key">log_format</span> =&gt; &#39;[%a:%P] %L @%T&gt; %m in %f l. %l&#39;,
# <span class="key">log_level</span> =&gt; &#39;debug&#39;,
# <span class="key">request</span> =&gt; bless( {
# <span class="key">_body_params</span> =&gt; {},
# <span class="key">_chunk_size</span> =&gt; 4096,
# <span class="key">_http_body</span> =&gt; bless( {
# <span class="key">body</span> =&gt; undef,
# <span class="key">buffer</span> =&gt; &#39;&#39;,
# <span class="key">chunk_buffer</span> =&gt; &#39;&#39;,
# <span class="key">chunked</span> =&gt; &#39;&#39;,
# <span class="key">cleanup</span> =&gt; 1,
# <span class="key">content_length</span> =&gt; 0,
# <span class="key">content_type</span> =&gt; &#39;&#39;,
# <span class="key">length</span> =&gt; 0,
# <span class="key">param</span> =&gt; {},
# <span class="key">param_order</span> =&gt; [],
# <span class="key">part_data</span> =&gt; {},
# <span class="key">state</span> =&gt; &#39;buffering&#39;,
# <span class="key">tmpdir</span> =&gt; &#39;/tmp&#39;,
# <span class="key">upload</span> =&gt; {}
# }, &#39;HTTP::Body::OctetStream&#39; ),
# <span class="key">_params</span> =&gt; {},
# <span class="key">_read_position</span> =&gt; 0,
# <span class="key">_route_params</span> =&gt; {},
# <span class="key">body</span> =&gt; &#39;&#39;,
# <span class="key">body_parameters</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">data</span> =&gt; undef,
# <span class="key">env</span> =&gt; {
# <span class="key">CONTENT_LENGTH</span> =&gt; 0,
# <span class="key">HTTP_AUTHORIZATION</span> =&gt; &#39;Basic ZGF2ZTpiZWVy&#39;,
# <span class="key">HTTP_HOST</span> =&gt; &#39;localhost&#39;,
# <span class="key">PATH_INFO</span> =&gt; &#39;/cocktail&#39;,
# <span class="key">QUERY_STRING</span> =&gt; &#39;&#39;,
# <span class="key">REMOTE_ADDR</span> =&gt; &#39;127.0.0.1&#39;,
# <span class="key">REMOTE_HOST</span> =&gt; &#39;localhost&#39;,
# <span class="key">REMOTE_PORT</span> =&gt; 55413,
# <span class="key">REQUEST_METHOD</span> =&gt; &#39;GET&#39;,
# <span class="key">REQUEST_URI</span> =&gt; &#39;/cocktail&#39;,
# <span class="key">SCRIPT_NAME</span> =&gt; &#39;&#39;,
# <span class="key">SERVER_NAME</span> =&gt; &#39;localhost&#39;,
# <span class="key">SERVER_PORT</span> =&gt; 80,
# <span class="key">SERVER_PROTOCOL</span> =&gt; &#39;HTTP/1.1&#39;,
# <span class="key">&#39;plack.request.body&#39;</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">&#39;plack.request.body_parameters&#39;</span> =&gt; [],
# <span class="key">&#39;plack.request.upload&#39;</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">&#39;psgi.errors&#39;</span> =&gt; *::STDERR,
# <span class="key">&#39;psgi.input&#39;</span> =&gt; \*{&#39;HTTP::Message::PSGI::$input&#39;},
# <span class="key">&#39;psgi.multiprocess&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.multithread&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.nonblocking&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.run_once&#39;</span> =&gt; 1,
# <span class="key">&#39;psgi.streaming&#39;</span> =&gt; 1,
# <span class="key">&#39;psgi.url_scheme&#39;</span> =&gt; &#39;http&#39;,
# <span class="key">&#39;psgi.version&#39;</span> =&gt; [
# 1,
# 1
# ]
# },
# <span class="key">id</span> =&gt; 12,
# <span class="key">is_behind_proxy</span> =&gt; &#39;&#39;,
# <span class="key">route_parameters</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">uploads</span> =&gt; {},
# <span class="key">vars</span> =&gt; {}
# }, &#39;Dancer2::Core::Request&#39; )
# }, &#39;Dancer2::Logger::File&#39; ),
# <span class="key">no_server_tokens</span> =&gt; 0,
# <span class="key">plugins</span> =&gt; {
# <span class="key">&#39;HTTP::Auth::Extensible&#39;</span> =&gt; {
# <span class="key">realms</span> =&gt; {
# <span class="key">some_realm</span> =&gt; {
# <span class="key">provider</span> =&gt; &#39;Config&#39;,
# <span class="key">scheme</span> =&gt; &#39;Basic&#39;,
# <span class="key">users</span> =&gt; [
# {
# <span class="key">name</span> =&gt; &#39;David Precious&#39;,
# <span class="key">pass</span> =&gt; &#39;beer&#39;,
# <span class="key">roles</span> =&gt; [
# &#39;BeerDrinker&#39;,
# &#39;VodkaDrinker&#39;
# ],
# <span class="key">user</span> =&gt; &#39;dave&#39;
# }
# ]
# }
# }
# }
# },
# <span class="key">port</span> =&gt; &#39;3000&#39;,
# <span class="key">public_dir</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t/public&#39;,
# <span class="key">route_handlers</span> =&gt; [
# [
# &#39;AutoPage&#39;,
# 1
# ]
# ],
# <span class="key">session</span> =&gt; bless( {
# <span class="key">config</span> =&gt; {},
# <span class="key">cookie_name</span> =&gt; &#39;dancer.session&#39;,
# <span class="key">cookie_path</span> =&gt; &#39;/&#39;,
# <span class="key">is_http_only</span> =&gt; 1,
# <span class="key">is_secure</span> =&gt; 0,
# <span class="key">log_cb</span> =&gt; sub { &quot;DUMMY&quot; },
# <span class="key">request</span> =&gt; $VAR1-&gt;{logger}{request}
# }, &#39;Dancer2::Session::Simple&#39; ),
# <span class="key">show_errors</span> =&gt; 1,
# <span class="key">startup_info</span> =&gt; 1,
# <span class="key">static_handler</span> =&gt; undef,
# <span class="key">template</span> =&gt; &#39;Tiny&#39;,
# <span class="key">traces</span> =&gt; 0,
# <span class="key">views</span> =&gt; &#39;/home/ryan/.cpanm/work/1493730395.15855/Dancer2-Plugin-HTTP-Auth-Extensible-0.121/t/views&#39;
# </pre>
# <div class="title">Session</div><pre class="content"><i>undefined</i></pre>
# <div class="title">Environment</div><pre class="content">
# <span class="key">CONTENT_LENGTH</span> =&gt; 0,
# <span class="key">HTTP_AUTHORIZATION</span> =&gt; &#39;Basic ZGF2ZTpiZWVy&#39;,
# <span class="key">HTTP_HOST</span> =&gt; &#39;localhost&#39;,
# <span class="key">PATH_INFO</span> =&gt; &#39;/cocktail&#39;,
# <span class="key">QUERY_STRING</span> =&gt; &#39;&#39;,
# <span class="key">REMOTE_ADDR</span> =&gt; &#39;127.0.0.1&#39;,
# <span class="key">REMOTE_HOST</span> =&gt; &#39;localhost&#39;,
# <span class="key">REMOTE_PORT</span> =&gt; 55413,
# <span class="key">REQUEST_METHOD</span> =&gt; &#39;GET&#39;,
# <span class="key">REQUEST_URI</span> =&gt; &#39;/cocktail&#39;,
# <span class="key">SCRIPT_NAME</span> =&gt; &#39;&#39;,
# <span class="key">SERVER_NAME</span> =&gt; &#39;localhost&#39;,
# <span class="key">SERVER_PORT</span> =&gt; 80,
# <span class="key">SERVER_PROTOCOL</span> =&gt; &#39;HTTP/1.1&#39;,
# <span class="key">&#39;plack.request.body&#39;</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">&#39;plack.request.body_parameters&#39;</span> =&gt; [],
# <span class="key">&#39;plack.request.upload&#39;</span> =&gt; bless( {}, &#39;Hash::MultiValue&#39; ),
# <span class="key">&#39;psgi.errors&#39;</span> =&gt; *::STDERR,
# <span class="key">&#39;psgi.input&#39;</span> =&gt; \*{&#39;HTTP::Message::PSGI::$input&#39;},
# <span class="key">&#39;psgi.multiprocess&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.multithread&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.nonblocking&#39;</span> =&gt; &#39;&#39;,
# <span class="key">&#39;psgi.run_once&#39;</span> =&gt; 1,
# <span class="key">&#39;psgi.streaming&#39;</span> =&gt; 1,
# <span class="key">&#39;psgi.url_scheme&#39;</span> =&gt; &#39;http&#39;,
# <span class="key">&#39;psgi.version&#39;</span> =&gt; [
# 1,
# 1
# ]
# </pre>
#
# </div>
# <div id="footer">
# Powered by <a href="http://perldancer.org/">Dancer2</a> 0.205000
# </div>
# </body>
# </html>
# '
# expected: 'Permission denied for resource: '/cocktail''
# Looks like you failed 22 tests of 34.
t/30-authenticate_Basic.t ..
Dubious, test returned 22 (wstat 5632, 0x1600)
Failed 22/34 subtests
t/boilerplate.t ............ ok
t/manifest.t ............... skipped: Author tests not required for installation
t/pod.t .................... skipped: Author tests not required for installation
Test Summary Report
-------------------
t/10-config_normal.t (Wstat: 1792 Tests: 9 Failed: 7)
Failed tests: 2-7, 9
Non-zero exit status: 7
t/20-http_username.t (Wstat: 512 Tests: 5 Failed: 2)
Failed tests: 2, 4
Non-zero exit status: 2
t/21-http_realm.t (Wstat: 512 Tests: 5 Failed: 2)
Failed tests: 2, 4
Non-zero exit status: 2
t/30-authenticate_Basic.t (Wstat: 5632 Tests: 34 Failed: 22)
Failed tests: 4-5, 7-8, 10, 12-18, 21-22, 25-32
Non-zero exit status: 22
t/boilerplate.t (Wstat: 0 Tests: 3 Failed: 0)
TODO passed: 1-3
Files=8, Tests=57, 5 wallclock secs ( 0.02 usr 0.00 sys + 1.30 cusr 0.07 csys = 1.39 CPU)
Result: FAIL
Failed 4/8 test programs. 33/57 subtests failed.
Makefile:853: recipe for target 'test_dynamic' failed
make: *** [test_dynamic] Error 255
! Installing Dancer2::Plugin::HTTP::Auth::Extensible failed. See /home/ryan/.cpanm/work/1493730395.15855/build.log for details. Retry with --force to force install it.
FAIL
Command [cpanm --reinstall --verbose Dancer2::Plugin::HTTP::Auth::Extensible] terminated with exit code 1 ($? = 256) under the following perl environment:
Command terminated with non-zero status.
Current perl:
Name: perl-blead
Path: /home/ryan/perl5/perlbrew/perls/perl-blead/bin/perl
Config: -de -Dprefix=/home/ryan/perl5/perlbrew/perls/perl-blead -Dusedevel -Aeval:scriptdir=/home/ryan/perl5/perlbrew/perls/perl-blead/bin
Compiled at: Mar 30 2017 03:10:09
perlbrew:
version: 0.78
ENV:
PERLBREW_ROOT: /home/ryan/perl5/perlbrew
PERLBREW_HOME: /home/ryan/.perlbrew
PERLBREW_PATH: /home/ryan/perl5/perlbrew/bin:/home/ryan/perl5/perlbrew/perls/perl-blead/bin
PERLBREW_MANPATH: /home/ryan/perl5/perlbrew/perls/perl-blead/man