Fix RT#58856
[catagits/Catalyst-Plugin-Session.git] / t / lib / SessionTestApp / Controller / Root.pm
1 package SessionTestApp::Controller::Root;
2 use strict;
3 use warnings;
4 use Data::Dumper;
5
6 use base qw/Catalyst::Controller/;
7
8 __PACKAGE__->config( namespace => '' );
9
10 sub login : Global {
11     my ( $self, $c ) = @_;
12     $c->session;
13     $c->res->output("logged in");
14 }
15
16 sub logout : Global {
17     my ( $self, $c ) = @_;
18     $c->res->output(
19         "logged out after " . $c->session->{counter} . " requests" );
20     $c->delete_session("logout");
21 }
22
23 sub set_session_variable : Global {
24     my ( $self, $c, $var, $val ) = @_;
25     $c->session->{$var} = $val;
26     $c->res->output("session variable set");
27 }
28
29 sub get_session_variable : Global {
30     my ( $self, $c, $var ) = @_;
31     my $val = $c->session->{$var} || 'n.a.';
32     $c->res->output("VAR_$var=$val");
33 }
34
35 sub get_sessid : Global {
36     my ( $self, $c ) = @_;
37     my $sid = $c->sessionid || 'n.a.';
38     $c->res->output("SID=$sid");
39 }
40
41 sub dump_session : Global {
42     my ( $self, $c ) = @_;
43     my $sid = $c->sessionid || 'n.a.';
44     my $dump = Dumper($c->session || 'n.a.');
45     $c->res->output("[SID=$sid]\n$dump");
46 }
47
48 sub change_sessid : Global {
49     my ( $self, $c ) = @_;
50     $c->change_session_id;
51     $c->res->output("session id changed");
52 }
53
54 sub page : Global {
55     my ( $self, $c ) = @_;
56     if ( $c->session_is_valid ) {
57         $c->res->output("you are logged in, session expires at " . $c->session_expires);
58         $c->session->{counter}++;
59     }
60     else {
61         $c->res->output("please login");
62     }
63 }
64
65 sub user_agent : Global {
66     my ( $self, $c ) = @_;
67     $c->res->output('UA=' . $c->req->user_agent);
68 }
69
70 sub accessor_test : Global {
71     my ( $self, $c ) = @_;
72
73     $c->session(
74         one => 1,
75         two => 2,
76     );
77
78     $c->session( {
79             three => 3,
80             four => 4,
81         },
82     );
83
84     $c->session->{five} = 5;
85
86     for my $key (keys %{ $c->session }) {
87         $c->res->write("$key: " . $c->session->{$key} . "\n");
88     }
89 }
90
91 sub dump_these_loads_session : Global {
92     my ($self, $c) = @_;
93
94     $c->dump_these();
95     if ($c->_session) {
96         $c->res->write('LOADED')
97     }
98     else {
99         $c->res->write('NOT');
100     }
101 }
102
103 1;