diff --git a/Web/t/01_endpoints/02_auth/07_do_login.t b/Web/t/01_endpoints/02_auth/07_do_login.t index 2d5574d..ba9309b 100644 --- a/Web/t/01_endpoints/02_auth/07_do_login.t +++ b/Web/t/01_endpoints/02_auth/07_do_login.t @@ -32,6 +32,11 @@ $t->post_ok( '/register/open', form => { # Remove session information so we are logged out of the fred account. $t->reset_session; +# Confirm the reset session logged us out by testing if the /dashboard redirects to login. +$t->get_ok( '/dashboard' ) + ->status_is( 302 ) + ->header_is( location => '/login' ); + # Try to login to the newly created account. $t->post_ok( '/login', form => { email => 'fred@blog.com', diff --git a/Web/t/01_endpoints/02_auth/08_do_logout.t b/Web/t/01_endpoints/02_auth/08_do_logout.t new file mode 100644 index 0000000..8280727 --- /dev/null +++ b/Web/t/01_endpoints/02_auth/08_do_logout.t @@ -0,0 +1,40 @@ +#!/usr/bin/env perl +use MJB::Web::Test; + +#== +# This test ensures that logout works. +# +# It will create an account and then confirm that it can logout of that +# account without resetting the session. +#== + +my $t = Test::Mojo::MJB->new('MJB::Web'); + +# Make sure that open registration method is enabled and create a user account. +$t->app->config->{register}{enable_open} = 1; +$t->post_ok( '/register/open', form => { + name => 'fred', + email => 'fred@blog.com', + password => 'SuperSecure', + password_confirm => 'SuperSecure', + })->status_is( 302 + )->code_block( sub { + is( scalar(@{shift->stash->{errors}}), 0, 'No errors' ); + })->code_block( sub { + is( shift->app->db->resultset('Person')->search( { name => 'fred'})->count, 1, 'User created.'); + })->get_ok( '/' + )->code_block( sub { + is(shift->stash->{person}->name, 'fred', 'Got the fred after login...'); + }); + +# Use the logout form the logout. +$t->get_ok( '/logout' ) + ->status_is( 302 ) + ->header_is( location => '/' ); + +# Confirm the logout form logged us out by testing if the /dashboard redirects to login. +$t->get_ok( '/dashboard' ) + ->status_is( 302 ) + ->header_is( location => '/login' ); + +done_testing();