]> git.donarmstrong.com Git - debbugs.git/commitdiff
add test for version.cgi cache control
authorDon Armstrong <don@donarmstrong.com>
Sun, 15 May 2016 14:59:07 +0000 (07:59 -0700)
committerDon Armstrong <don@donarmstrong.com>
Sun, 15 May 2016 14:59:07 +0000 (07:59 -0700)
t/17_version_cgi.t [new file with mode: 0644]

diff --git a/t/17_version_cgi.t b/t/17_version_cgi.t
new file mode 100644 (file)
index 0000000..35d75c4
--- /dev/null
@@ -0,0 +1,79 @@
+# -*- mode: cperl;-*-
+
+use Test::More;
+
+use warnings;
+use strict;
+
+plan tests => 2;
+
+my $port = 11343;
+
+our $child_pid = undef;
+
+END{
+     if (defined $child_pid) {
+         my $temp_exit = $?;
+         kill(15,$child_pid);
+         waitpid(-1,0);
+         $? = $temp_exit;
+     }
+}
+
+my $pid = fork;
+die "Unable to fork child" if not defined $pid;
+if ($pid) {
+     $child_pid = $pid;
+     # Wait for two seconds to let the child start
+     sleep 2;
+}
+else {
+    # UGH.
+    package SillyWebServer;
+    use HTTP::Server::Simple;
+    use base qw(HTTP::Server::Simple::CGI::Environment HTTP::Server::Simple);
+    sub handler {
+       my $fh;
+       open($fh,'-|',-e './cgi/version.cgi'? './cgi/version.cgi' : '../cgi/version.cgi');
+       my $headers;
+       my $status = 200;
+       while (<$fh>) {
+           if (/^\s*$/ and $status) {
+               print "HTTP/1.1 $status OK\n";
+               print $headers;
+               $status = 0;
+               print $_;
+           } elsif ($status) {
+               $headers .= $_;
+               if (/^Status:\s*(\d+)/i) {
+                   $status = $1;
+               }
+           } else {
+               print $_;
+           }
+
+       }
+     }
+    my $server = SillyWebServer->new($port);
+    $server->run();
+    exit 0;
+}
+
+
+use LWP::UserAgent;
+my $ua = LWP::UserAgent->new;
+$ua->agent("DebbugsTesting/0.1 ");
+
+# Create a request
+my $req = HTTP::Request->new(GET => "http://localhost:$port/");
+
+my $res = $ua->request($req);
+ok($res->is_success(),'cgi/version.cgi returns success');
+my $etag = $res->header('Etag');
+
+$req = HTTP::Request->new(GET => "http://localhost:$port/",['If-None-Match',$etag]);
+$res = $ua->request($req);
+ok($res->code() eq '304','If-None-Match set gives us 304 not modified');
+
+
+