#!/usr/bin/env perl
BEGIN {
eval
"require Dancer2"
;
plan
skip_all
=>
'Dancer2 is not installed'
if
$@;
plan
tests
=> 5;
eval
"require Plack::Test"
;
ok !$@,
'Unable to load Plack::Test for Dancer2 tests'
;
eval
"require HTTP::Cookies"
;
ok !$@,
'Unable to load HTTP::Cookies for Dancer2 tests'
;
eval
"require HTTP::Request::Common"
;
ok !$@,
'Unable to load HTTP::Request::Common for Dancer2 tests'
;
HTTP::Request::Common->
import
;
}
{
set
session
=>
'Simple'
;
set
logger
=>
'LogReport'
;
dispatcher
close
=>
'default'
;
get
'/write_message/:level/:text'
=>
sub
{
my
$level
= param(
'level'
);
my
$text
= param(
'text'
);
eval
qq($level "$text")
;
};
get
'/read_message'
=>
sub
{
my
$all
= session
'messages'
;
my
$message
=
pop
@$all
or
return
''
;
"$message"
;
};
get
'/process'
=>
sub
{
process(
sub
{ error
"Fatal error text"
});
};
}
my
$jar
= HTTP::Cookies->new();
my
$test
= Plack::Test->create( TestApp->to_app );
subtest
'Basic messages'
=>
sub
{
{
my
$req
= GET
"$url/write_message/notice/notice_text"
;
$jar
->add_cookie_header(
$req
);
my
$res
=
$test
->request(
$req
);
ok
$res
->is_success,
"get /write_message"
;
$jar
->extract_cookies(
$res
);
$req
= GET
"$url/read_message"
;
$jar
->add_cookie_header(
$req
);
$res
=
$test
->request(
$req
);
is (
$res
->content,
'notice_text'
);
}
{
my
$req
= GET
"$url/write_message/trace/trace_text"
;
$jar
->add_cookie_header(
$req
);
my
$res
=
$test
->request(
$req
);
ok
$res
->is_success,
"get /write_message"
;
$jar
->extract_cookies(
$res
);
$req
= GET
"$url/read_message"
;
$jar
->add_cookie_header(
$req
);
$res
=
$test
->request(
$req
);
is (
$res
->content,
''
);
}
};
subtest
'Throw error'
=>
sub
{
{
my
$req
= GET
"$url/write_message/error/error_text"
;
my
$res
=
$test
->request(
$req
);
ok
$res
->is_redirect,
"get /write_message"
;
}
{
my
$req
= GET
"$url/process"
;
$jar
->add_cookie_header(
$req
);
my
$res
=
$test
->request(
$req
);
ok
$res
->is_success,
"get /write_message"
;
is (
$res
->content,
'0'
);
$jar
->extract_cookies(
$res
);
$req
= GET
"$url/read_message"
;
$jar
->add_cookie_header(
$req
);
$res
=
$test
->request(
$req
);
is (
$res
->content,
'Fatal error text'
);
}
};
done_testing;