Commit | Line | Data |
643399c7 |
1 | #!/usr/bin/perl |
642b19cf |
2 | |
3 | use strict; |
4 | use warnings; |
5 | |
c93f6ff7 |
6 | use Test::More 0.88; |
bcebcbb7 |
7 | use Class::MOP; |
8 | use Class::MOP::Class; |
9 | |
10 | use_ok("Catalyst::Plugin::Session::State::Stash" ); |
11 | use_ok("Catalyst::Plugin::Session"); |
643399c7 |
12 | |
bcebcbb7 |
13 | my $ctx_meta = Class::MOP::Class->create_anon_class( |
14 | superclasses => [qw/ |
15 | Catalyst::Plugin::Session::State::Stash |
16 | Catalyst::Plugin::Session |
17 | /], |
18 | ); |
642b19cf |
19 | |
bcebcbb7 |
20 | $ctx_meta->add_attribute( $_, reader => $_, default => sub { {} } ) |
21 | for qw/config session stash/;; |
22 | $ctx_meta->add_method("debug" => sub { 0 }); |
642b19cf |
23 | |
24 | my $sessionid; |
bcebcbb7 |
25 | $ctx_meta->add_method( sessionid => sub { shift; $sessionid = shift if @_; $sessionid } ); |
642b19cf |
26 | |
bcebcbb7 |
27 | $ctx_meta->make_immutable( replace_constructor => 1 ); |
28 | my $app = $ctx_meta->name->new; |
642b19cf |
29 | |
bcebcbb7 |
30 | isa_ok($app, 'Catalyst::Plugin::Session::State::Stash'); |
31 | isa_ok($app, 'Catalyst::Plugin::Session'); |
642b19cf |
32 | |
bcebcbb7 |
33 | can_ok( $app, 'config'); |
34 | can_ok( $app, "setup_session" ); |
35 | can_ok( $app, '_session_plugin_config'); |
36 | |
37 | $app->setup_session; |
38 | |
39 | is( $app->config->{'Plugin::Session'}{stash_key}, |
642b19cf |
40 | '_session', "default cookie name is set" ); |
41 | |
bcebcbb7 |
42 | can_ok( $app, "get_session_id" ); |
642b19cf |
43 | |
bcebcbb7 |
44 | ok( !$app->get_session_id, "no session id yet"); |
642b19cf |
45 | |
bcebcbb7 |
46 | $app->stash->{ '_session' } = {id => 1}; |
47 | $app->stash->{'session_id'} = {id => 2}; |
48 | $app->stash->{'other_thing'} = { id => 3 }; |
642b19cf |
49 | |
bcebcbb7 |
50 | is( $app->get_session_id, "1", "Pull newfound session id" ); |
642b19cf |
51 | |
bcebcbb7 |
52 | $app->config->{'Plugin::Session'}{stash_key} = "session_id"; |
642b19cf |
53 | |
bcebcbb7 |
54 | is( $app->get_session_id, "2", "Pull session id from second key" ); |
642b19cf |
55 | |
bcebcbb7 |
56 | can_ok( $app, "set_session_id" ); |
effd6244 |
57 | |
58 | # Check forwards config compatibility.. |
bcebcbb7 |
59 | $app->config->{'Plugin::Session'} = {}; |
60 | $app->setup_session; |
effd6244 |
61 | |
bcebcbb7 |
62 | is( $app->config->{'Plugin::Session'}{stash_key}, |
effd6244 |
63 | '_session', "default cookie name is set when new stash key used" ); |
64 | |
bcebcbb7 |
65 | $app->config->{'Plugin::Session'}{stash_key} = "other_thing"; |
66 | |
67 | is( $app->get_session_id, "3", "Pull session id from key in new config" ); |
68 | |
69 | done_testing; |
effd6244 |
70 | |