| File: | t/5-expire.t |
| Coverage: | 86.4% |
| line | stmt | bran | cond | sub | pod | time | code |
|---|---|---|---|---|---|---|---|
| 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; | ||||