The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Test::Mojo::Session - Testing session in Mojolicious applications

SYNOPSIS

  use Mojolicious::Lite;
  use Test::More;
  use Test::Mojo::Session;

  get '/set' => sub {
    my $self = shift;
    $self->session(s1 => 'session data');
    $self->session(s3 => [1, 3]);
    $self->render(text => 's1');
  } => 'set';

  my $t = Test::Mojo::Session->new;
  $t->get_ok('/set')
    ->status_is(200)
    ->session_ok
    ->session_has('/s1')
    ->session_is('/s1' => 'session data')
    ->session_hasnt('/s2')
    ->session_is('/s3' => [1, 3])
    ->session_like('/s1' => qr/data/, 's1 contains "data"')
    ->session_unlike('/s1' => qr/foo/, 's1 does not contain "foo"');

  done_testing();

Use Test::Mojo::Sesssion via Test::Mojo::WithRoles.

  use Mojolicious::Lite;
  use Test::More;
  use Test::Mojo::WithRoles 'Session';

  get '/set' => sub {
    my $c = shift;
    $c->session(s1 => 'session data');
    $c->session(s3 => [1, 3]);
    $c->render(text => 's1');
  } => 'set';

  my $t = Test::Mojo::WithRoles->new;
  $t->get_ok('/set')
    ->status_is(200)
    ->session_ok
    ->session_has('/s1')
    ->session_is('/s1' => 'session data')
    ->session_hasnt('/s2')
    ->session_is('/s3' => [1, 3])
    ->session_like('/s1' => qr/data/, 's1 contains "data"')
    ->session_unlike('/s1' => qr/foo/, 's1 does not contain "foo"');

  done_testing();

DESCRIPTION

Test::Mojo::Session is an extension for the Test::Mojo, which allows you to conveniently test session in Mojolicious applications.

METHODS

Test::Mojo::Sesssion inherits all methods from Test::Mojo and implements the following new ones.

session_has

  $t = $t->session_has('/foo');
  $t = $t->session_has('/foo', 'session has "foo"');

Check if current session contains a value that can be identified using the given JSON Pointer with Mojo::JSON::Pointer.

session_hasnt

  $t = $t->session_hasnt('/bar');
  $t = $t->session_hasnt('/bar', 'session does not have "bar"');

Check if current session does not contain a value that can be identified using the given JSON Pointer with Mojo::JSON::Pointer.

session_is

  $t = $t->session_is('/pointer', 'value');
  $t = $t->session_is('/pointer', 'value', 'right value');

Check the session using the given JSON Pointer with Mojo::JSON::Pointer.

session_like

  $t = $t->session_like('/pointer', qr/value/);
  $t = $t->session_like('/pointer', qr/value/, 'matched value');

Check if current session matches a regular expression.

session_unlike

  $t = $t->session_unlike('/pointer', qr/value/);
  $t = $t->session_unlike('/pointer', qr/value/, 'did not match value');

Check if current session does not match a regular expression.

session_ok

  $t = $t->session_ok;

Check for existence of the session in user agent.

SEE ALSO

Mojolicious, Test::Mojo.

AUTHOR

Andrey Khozov, avkhozov@googlemail.com.

CREDITS

Renee, reb@perl-services.de

Gene Boggs, gene.boggs@gmail.com

COPYRIGHT AND LICENSE

Copyright (C) 2013-2022, Andrey Khozov.

This program is free software, you can redistribute it and/or modify it under the terms of the Artistic License version 2.0.