2017-04-24 17:42:07 +01:00
use Mojo::Base - strict ;
2017-04-08 13:38:54 +01:00
2017-08-31 13:35:49 +01:00
use FindBin qw/ $Bin / ;
2017-04-08 13:38:54 +01:00
use Test::More ;
2017-04-24 17:42:07 +01:00
use Test::Pear::LocalLoop ;
2017-08-31 13:35:49 +01:00
my $ framework = Test::Pear::LocalLoop - > new (
etc_dir = > "$Bin/../etc" ,
) ;
$ framework - > install_fixtures ( 'users' ) ;
2017-04-24 17:42:07 +01:00
my $ t = $ framework - > framework ;
2017-04-08 13:38:54 +01:00
my $ schema = $ t - > app - > schema ;
my $ location_is = sub {
my ( $ t , $ value , $ desc ) = @ _ ;
$ desc || = "Location: $value" ;
local $ Test:: Builder:: Level = $ Test:: Builder:: Level + 1 ;
return $ t - > success ( is ( $ t - > tx - > res - > headers - > location , $ value , $ desc ) ) ;
} ;
$ t - > get_ok ( '/admin' )
2017-04-24 17:42:07 +01:00
- > status_is ( 200 ) - > or ( $ framework - > dump_error ) ;
2017-04-08 13:38:54 +01:00
$ t - > ua - > max_redirects ( 10 ) ;
2017-04-24 17:42:07 +01:00
$ t - > post_ok ( '/admin' , form = > {
2017-08-31 13:35:49 +01:00
email = > 'test1@example.com' ,
2017-04-08 13:38:54 +01:00
password = > 'abc123' ,
2017-04-08 14:25:06 +01:00
} ) - > status_is ( 200 ) ;
2017-04-08 13:38:54 +01:00
$ t - > ua - > max_redirects ( 0 ) ;
2017-04-08 14:25:06 +01:00
$ t - > get_ok ( '/admin' )
2017-04-24 17:42:07 +01:00
- > status_is ( 200 ) ;
2017-04-08 13:38:54 +01:00
2017-04-24 17:42:07 +01:00
$ t - > get_ok ( '/admin/logout' )
2017-04-08 13:38:54 +01:00
- > status_is ( 302 )
2017-04-24 17:42:07 +01:00
- > $ location_is ( '/admin' ) ;
2017-04-08 13:38:54 +01:00
2017-04-08 14:25:06 +01:00
$ t - > get_ok ( '/admin' )
2017-04-24 17:42:07 +01:00
- > status_is ( 200 ) ;
2017-04-08 13:38:54 +01:00
$ t - > ua - > max_redirects ( 10 ) ;
2017-04-24 17:42:07 +01:00
$ t - > post_ok ( '/admin' , form = > {
2017-04-08 13:38:54 +01:00
email = > 'admin@example.com' ,
password = > 'abc123' ,
2017-04-08 14:25:06 +01:00
} ) - > status_is ( 200 ) ;
2017-04-08 13:38:54 +01:00
$ t - > ua - > max_redirects ( 0 ) ;
2017-04-24 17:42:07 +01:00
$ t - > get_ok ( '/admin/home' )
2017-04-08 13:38:54 +01:00
- > status_is ( 200 )
- > content_like ( qr/Admin/ ) ;
2017-04-24 17:42:07 +01:00
$ t - > get_ok ( '/admin/logout' )
2017-04-08 13:38:54 +01:00
- > status_is ( 302 )
2017-04-24 17:42:07 +01:00
- > $ location_is ( '/admin' ) ;
2017-04-08 13:38:54 +01:00
2017-04-08 14:25:06 +01:00
$ t - > get_ok ( '/admin' )
2017-04-24 17:42:07 +01:00
- > status_is ( 200 ) ;
2017-04-08 13:38:54 +01:00
done_testing ;