adding in tests for the raw HASH session
[catagits/Web-Session.git] / t / 014_cookiestore_again.t
diff --git a/t/014_cookiestore_again.t b/t/014_cookiestore_again.t
new file mode 100644 (file)
index 0000000..65d2ac2
--- /dev/null
@@ -0,0 +1,45 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More;
+
+use Plack::Request;
+use Plack::Middleware::Session::Cookie;
+
+use t::lib::TestSessionHash;
+
+t::lib::TestSessionHash::run_all_tests(
+    middleware_create_cb => sub {
+        Plack::Middleware::Session::Cookie->wrap( $_[0], secret => "foobar" );
+    },
+    env_cb => sub {
+        my $cookies = shift;
+        open my $in, '<', \do { my $d };
+        my $env = {
+            'psgi.version'    => [ 1, 0 ],
+            'psgi.input'      => $in,
+            'psgi.errors'     => *STDERR,
+            'psgi.url_scheme' => 'http',
+            SERVER_PORT       => 80,
+            REQUEST_METHOD    => 'GET',
+            HTTP_COOKIE       => join "; " => map { $_ . "=" . $cookies->{ $_ } } keys %$cookies,
+        };
+    },
+    response_test   => sub {
+        my ($res_cb, $session_id, $check_expired) = @_;
+        my $cookie;
+        $res_cb->(sub {
+            my $res = shift;
+            $cookie = Plack::Util::header_get($res->[1], 'Set-Cookie');
+        });
+
+        like($cookie, qr/plack_session=$session_id/, '... cookie value is as suspected');
+        if ($check_expired) {
+            like($cookie, qr/expires=/, '... cookie is expriring as suspected');
+        }
+    }
+);
+
+done_testing;