diff options
author | Jan Kneschke <jan@kneschke.de> | 2005-06-15 09:37:18 +0000 |
---|---|---|
committer | Jan Kneschke <jan@kneschke.de> | 2005-06-15 09:37:18 +0000 |
commit | 7a25f1b5f54620b5e890b63a1d8d6f56da97e3b8 (patch) | |
tree | dd06be40c0ab441483ee73835e152f82210037d1 /tests/mod-access.t | |
parent | aff653fdba46dc4687f1d66fe2bc642c11d4c2ac (diff) | |
download | lighttpd-git-7a25f1b5f54620b5e890b63a1d8d6f56da97e3b8.tar.gz |
Unified all tests to use the LighyTest framework
git-svn-id: svn://svn.lighttpd.net/lighttpd/branches/lighttpd-1.3.x@388 152afb58-edef-0310-8abb-c4023f1b3aa9
Diffstat (limited to 'tests/mod-access.t')
-rwxr-xr-x | tests/mod-access.t | 195 |
1 files changed, 8 insertions, 187 deletions
diff --git a/tests/mod-access.t b/tests/mod-access.t index 8c978a89..4c0987db 100755 --- a/tests/mod-access.t +++ b/tests/mod-access.t @@ -3,198 +3,19 @@ use strict; use IO::Socket; use Test::More tests => 3; +use LightyTest; -my $basedir = (defined $ENV{'top_builddir'} ? $ENV{'top_builddir'} : '..'); -my $srcdir = (defined $ENV{'srcdir'} ? $ENV{'srcdir'} : '.'); - -my $testname; -my @request; -my @response; -my $configfile = $srcdir.'/lighttpd.conf'; -my $lighttpd_path = $basedir.'/src/lighttpd'; -my $pidfile = '/tmp/lighttpd/lighttpd.pid'; -my $pidoffile = '/tmp/lighttpd/pidof.pid'; - -sub pidof { - my $prog = $_[0]; - - open F, "ps ax | grep $prog | awk '{ print \$1 }'|" or - open F, "ps -ef | grep $prog | awk '{ print \$2 }'|" or - return -1; - - my $pid = <F>; - close F; - - return $pid; -} - -sub stop_proc { - open F, $pidfile or return -1; - my $pid = <F>; - close F; - - kill('TERM',$pid) or return -1; - select(undef, undef, undef, 0.01); - - return 0; -} - - -sub start_proc { - # kill old proc if necessary - stop_proc; - - unlink($pidfile); - system($lighttpd_path." -f ".$configfile); - - if (-e $pidfile) { - return 0; - } else { - return -1; - } -} - -sub handle_http { - my $EOL = "\015\012"; - my $BLANK = $EOL x 2; - my $port = 2048; - my $host = "127.0.0.1"; - - my $remote = - IO::Socket::INET->new(Proto => "tcp", - PeerAddr => $host, - PeerPort => $port) - or return -1; - - $remote->autoflush(1); - - foreach(@request) { - # pipeline requests - s/\r//g; - s/\n/$EOL/g; - - print $remote $_.$BLANK; - } - - my $lines = ""; - - # read everything - while(<$remote>) { - $lines .= $_; - } - - close $remote; - - my $href; - foreach $href (@response) { - # first line is always response header - my %resp_hdr; - my $resp_body; - my $resp_line; - my $conditions = $_; - - for (my $ln = 0; defined $lines; $ln++) { - (my $line, $lines) = split($EOL, $lines, 2); - - # header finished - last if(length($line) == 0); - - if ($ln == 0) { - # response header - $resp_line = $line; - } else { - # response vars - - if ($line =~ /^([^:]+):\s*(.+)$/) { - (my $h = $1) =~ tr/[A-Z]/[a-z]/; - - $resp_hdr{$h} = $2; - } else { - return -1; - } - } - } - - # check length - if (defined $resp_hdr{"content-length"}) { - ($resp_body, $lines) = split("^.".$resp_hdr{"content-length"}, $lines, 2); - } else { - $resp_body = $lines; - undef $lines; - } - - # check conditions - if ($resp_line =~ /^(HTTP\/1\.[01]) ([0-9]{3}) .+$/) { - if ($href->{'HTTP-Protocol'} ne $1) { - diag(sprintf("proto failed: expected '%s', got '%s'\n", $href->{'HTTP-Protocol'}, $1)); - return -1; - } - if ($href->{'HTTP-Status'} ne $2) { - diag(sprintf("status failed: expected '%s', got '%s'\n", $href->{'HTTP-Status'}, $2)); - return -1; - } - } else { - return -1; - } - - if (defined $href->{'HTTP-Content'}) { - if ($href->{'HTTP-Content'} ne $resp_body) { - diag(sprintf("body failed: expected '%s', got '%s'\n", $href->{'HTTP-Content'}, $resp_body)); - return -1; - } - } - - if (defined $href->{'-HTTP-Content'}) { - if (defined $resp_body && $resp_body ne '') { - diag(sprintf("body failed: expected empty body, got '%s'\n", $resp_body)); - return -1; - } - } - - foreach (keys %{ $href }) { - next if $_ eq 'HTTP-Protocol'; - next if $_ eq 'HTTP-Status'; - next if $_ eq 'HTTP-Content'; - next if $_ eq '-HTTP-Content'; - - (my $k = $_) =~ tr/[A-Z]/[a-z]/; - - my $no_val = 0; - - if (substr($k, 0, 1) eq '+') { - $k = substr($k, 1); - $no_val = 1; - - } - - if (!defined $resp_hdr{$k}) { - diag(sprintf("required header '%s' is missing\n", $k)); - return -1; - } - - if ($no_val == 0 && - $href->{$_} ne $resp_hdr{$k}) { - diag(sprintf("response-header failed: expected '%s', got '%s'\n", $href->{$_}, $resp_hdr{$k})); - return -1; - } - } - } - - # we should have sucked up everything - return -1 if (defined $lines); - - return 0; -} +my $tf = LightyTest->new(); +my $t; -ok(start_proc == 0, "Starting lighttpd") or die(); - +ok($tf->start_proc == 0, "Starting lighttpd") or die(); -@request = ( <<EOF +$t->{REQUEST} = ( <<EOF GET /index.html~ HTTP/1.0 EOF ); -@response = ( { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 403 } ); -ok(handle_http == 0, 'forbid access to ...~'); +$t->{RESPONSE} = ( { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 403 } ); +ok($tf->handle_http($t) == 0, 'forbid access to ...~'); -ok(stop_proc == 0, "Stopping lighttpd"); +ok($tf->stop_proc == 0, "Stopping lighttpd"); |