1 # -*- mode: perl; coding: utf-8 -*-
2 # $Id: 02_SessionManager.t,v 1.2 2008-08-05 14:08:25 morimoto Exp $
3 # $Source: /home/ishikawa/work/keitairc/tmp/keitairc/t/02_SessionManager.t,v $
4 # Copyright (c) 2003-2008 Jun Morimoto <morimoto@mrmt.net>
5 # This program is covered by the GNU General Public License 2
9 use Test::More tests => 32;
11 use lib "$FindBin::Bin/../lib";
14 use_ok('Keitairc::SessionManager');
17 # dh() is not class method
18 can_ok('Keitairc::SessionManager',
19 qw/new verify search_by_session_id search_by_serial_key refresh
20 add garbage_collect delete normalize_user_agent/);
22 # every serial strings are fictitious
23 my $foma_ua = 'DoCoMo/2.0 P703imyu(c100;TB;W30H15)';
24 my $foma_ua_icc = 'DoCoMo/2.0 P703imyu(c100;TB;W30H15;ser123498761234567;icc9876543210234567890F)';
25 my $foma_icc = 'icc9876543210234567890F';
27 my $softbank_ua_serial = 'SoftBank/1.0/913SH/SHJ001/SN123456789012345 Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1';
28 my $softbank_serial = 'SN123456789012345';
29 my $softbank_ua = 'SoftBank/1.0/913SH/SHJ001/ Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1';
34 # create new session manager
35 my $sm = new Keitairc::SessionManager;
36 ok($sm, 'SessionManager created');
40 # create new session manager /w default_ttl
41 my $sm = new Keitairc::SessionManager({default_ttl => 3});
42 ok($sm->{default_ttl} == 3, 'SessionManager created with default ttl');
45 my $sm = new Keitairc::SessionManager;
49 # add new session to session manager (NTT DoCoMo FOMA)
50 my $s = $sm->add($foma_ua);
51 ok($s, 'new session added');
52 ok($s->{last_access_time}, 'session has last_access_time');
53 ok(! defined $s->{serial_key}, 'session does not have serial_key');
54 ok($s->{user_agent} eq $foma_ua, 'session has user agent');
55 ok($s->{ttl}, 'session has ttl');
56 ok($s->{id} =~ /S[a-zA-Z]{10}/, 'session has valid session_id');
64 # add new session to session manager (NTT DoCoMo FOMA /w ser/icc)
65 my $s = $sm->add($foma_ua_icc, $foma_icc);
66 ok($s, 'new session added');
67 ok($s->{last_access_time}, 'session has last_access_time');
68 ok($s->{serial_key} eq $foma_icc, 'session has serial_key');
69 ok($s->{user_agent} eq $foma_ua, 'session has user agent (serial removed)');
70 ok($s->{ttl}, 'session has ttl');
71 ok($s->{id} =~ /S[a-zA-Z]{10}/, 'session has valid session_id');
73 $timestamp2 = $s->{last_access_time};
79 # add new session to session manager (SoftBank)
80 my $s = $sm->add($softbank_ua_serial, $softbank_serial);
81 ok($s, 'new session added');
82 ok($s->{last_access_time}, 'session has last_access_time');
83 ok($s->{serial_key} eq $softbank_serial, 'session has serial_key');
84 ok($s->{user_agent} eq $softbank_ua, 'session has user agent (serial removed)');
85 ok($s->{ttl}, 'session has ttl');
86 ok($s->{id} =~ /S[a-zA-Z]{10}/, 'session has valid session_id');
96 $s = $sm->search_by_session_id($s1, $foma_ua);
97 ok($s, 'search_by_session_id');
99 $s = $sm->search_by_session_id($s2, $foma_ua);
100 ok($s, 'search_by_session_id');
102 $s = $sm->search_by_session_id($s3, $softbank_ua);
103 ok($s, 'search_by_session_id');
109 $s = $sm->search_by_serial_key($foma_icc, $foma_ua);
110 ok($s->{id} eq $sid2, 'search_by_serial_key');
111 $s = $sm->search_by_serial_key($softbank_serial, $softbank_ua);
112 ok($s->{id} eq $sid3, 'search_by_serial_key');
117 $s = $sm->delete($sid1);
118 $s = $sm->search_by_session_id($sid1, $foma_ua);
119 ok(! defined $s, 'deleted session has vanished');
124 sleep(1); # timestamp should be incremented
125 $s = $sm->verify({session_id => $sid2, user_agent => $foma_ua});
127 ok($timestamp2 < $s->{last_access_time}, 'verify() refreshed timestamp');
129 $s = $sm->verify({session_id => $sid2, user_agent => $softbank_ua});
130 ok(! defined $s, 'verify() reasonably failed');
132 $s = $sm->verify({session_id => $sid1, user_agent => $foma_ua});
133 ok(! defined $s, 'verify() reasonably failed');