File Coverage

blib/lib/SockJS/Middleware/JSessionID.pm
Criterion Covered Total %
statement 23 23 100.0
branch 5 8 62.5
condition n/a
subroutine 6 6 100.0
pod 1 1 100.0
total 35 38 92.1


line stmt bran cond sub pod time code
1             package SockJS::Middleware::JSessionID;
2              
3 1     1   65604 use strict;
  1         9  
  1         28  
4 1     1   5 use warnings;
  1         2  
  1         28  
5              
6 1     1   460 use parent 'Plack::Middleware';
  1         279  
  1         5  
7              
8 1     1   14331 use Plack::Util;
  1         3  
  1         204  
9              
10             sub call {
11 3     3 1 6654 my $self = shift;
12 3         7 my ($env) = @_;
13              
14 3         12 my $res = $self->app->(@_);
15 3 50       42 return $res unless $env->{'sockjs.transport'};
16              
17             return $self->response_cb(
18             $res => sub {
19 3     3   55 my $res = shift;
20              
21 3         10 my $h = Plack::Util::headers($res->[1]);
22              
23 3 100       81 if (my $cookie = $env->{HTTP_COOKIE}) {
    50          
24 2 50       19 if ($cookie =~ m/(?:^|;|\s)JSESSIONID\s*=\s*(.+?)(?:\s|;|$)/) {
25 2         23 $h->push('Set-Cookie' => "JSESSIONID=$1; Path=/");
26             }
27             }
28             elsif ($self->{cookie}) {
29 1         6 $h->push('Set-Cookie' => 'JSESSIONID=dummy; Path=/');
30             }
31             }
32 3         19 );
33             }
34              
35             1;