File Coverage

File:t/5-expire.t
Coverage:86.4%

linestmtbrancondsubpodtimecode
1
1
1
1
1272034660669971
12923
8
use Test::More;
2
1
1
1
454
2095
6
use Test::Exception;
3
1
1
1
360
931638
19
use Catalyst ();
4
1
1
1
217
935
31
use FindBin;
5
1
1
1
174
130959
20
use DateTime;
6
1
1
1
4
1
27
use DateTime::Duration;
7
8
9
10# a simple package
11{
12
1
441067
    package MyApp::Controller::Js;
13
1
1
1
3
1
9
    use Moose;
14
1
8
    extends 'Catalyst::Controller::Combine';
15
16
1
2815
    __PACKAGE__->config(
17    # expire => 1,
18    # expire_in => 60 * 60, # 1 hour
19    );
20}
21
22
23#
24# test start...
25#
26
27# setup our Catalyst :-)
28
1
213
my $c = Catalyst->new();
29
1
380
$c->setup_log();
30
1
901
$c->setup_home("$FindBin::Bin");
31
32
1
696
my $controller;
33
1
1
11
106
lives_ok { $controller = $c->setup_component('MyApp::Controller::Js') } 'setup component worked';
34
35
36#
37# check if expires header is sent, if feature isn't turned on
38#
39
1
332
$controller->do_combine($c, 'js1');
40
1
54
ok(!$c->response->header('expires'), "expires header not sent, if feature not active");
41
42
43# okay, let's check the real stuff, turn this feature one
44
1
318
MyApp::Controller::Js->config->{expire} = 1;
45
1
104
$controller = $c->setup_component('MyApp::Controller::Js');
46
47
48
49#
50# combine and check if expire header is set and correct (no expire_in is explicitly set)
51#
52
1
33
$controller->do_combine($c, 'js1');
53
1
40
my $expected_date_str = (DateTime->now + DateTime::Duration->new(seconds => $controller->{expire_in} || 0))->strftime( "%a, %d %b %Y %H:%M:%S GMT" );
54
1
1633
ok($c->response->header('expires') && $c->response->header('expires') eq $expected_date_str,
55   'expires in "standard expire delta"');
56
57
58
59#
60# combine and check if expire header is set and correct (expire_in = 60 minutes)
61#
62
1
352
MyApp::Controller::Js->config->{expire_in} = 60 * 60; # one hour
63
1
102
$controller = $c->setup_component('MyApp::Controller::Js');
64
1
33
$controller->do_combine($c, 'js1');
65
1
37
$expected_date_str = (DateTime->now + DateTime::Duration->new(seconds => MyApp::Controller::Js->config->{expire_in}))->strftime( "%a, %d %b %Y %H:%M:%S GMT" );
66
1
1399
ok($c->response->header('expires') && $c->response->header('expires') eq $expected_date_str,
67   'expires in one hour');
68
69
70
71
1
332
done_testing;