Annotation of embedaddon/lighttpd/tests/core.t, revision 1.1
1.1 ! misho 1: #!/usr/bin/env perl
! 2: BEGIN {
! 3: # add current source dir to the include-path
! 4: # we need this for make distcheck
! 5: (my $srcdir = $0) =~ s,/[^/]+$,/,;
! 6: unshift @INC, $srcdir;
! 7: }
! 8:
! 9: use strict;
! 10: use IO::Socket;
! 11: use Test::More tests => 21;
! 12: use LightyTest;
! 13:
! 14: my $tf = LightyTest->new();
! 15: my $t;
! 16:
! 17: ok($tf->start_proc == 0, "Starting lighttpd") or die();
! 18:
! 19: $t->{REQUEST} = ( <<EOF
! 20: GET / HTTP/1.0
! 21: EOF
! 22: );
! 23: $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200 } ];
! 24: ok($tf->handle_http($t) == 0, 'Valid HTTP/1.0 Request') or die();
! 25:
! 26: $t->{REQUEST} = ( <<EOF
! 27: GET /
! 28: EOF
! 29: );
! 30: $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 400 } ];
! 31: ok($tf->handle_http($t) == 0, 'missing Protocol');
! 32:
! 33: $t->{REQUEST} = ( <<EOF
! 34: GET / HTTP/01.01
! 35: Host: foo
! 36: Connection: close
! 37: EOF
! 38: );
! 39: $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.1', 'HTTP-Status' => 200 } ];
! 40: ok($tf->handle_http($t) == 0, 'zeros in protocol version');
! 41:
! 42: $t->{REQUEST} = ( <<EOF
! 43: GET / HTTP/.01
! 44: EOF
! 45: );
! 46: $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 400 } ];
! 47: ok($tf->handle_http($t) == 0, 'missing major version');
! 48:
! 49: $t->{REQUEST} = ( <<EOF
! 50: GET / HTTP/01.
! 51: EOF
! 52: );
! 53: $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 400 } ];
! 54: ok($tf->handle_http($t) == 0, 'missing minor version');
! 55:
! 56: $t->{REQUEST} = ( <<EOF
! 57: GET / HTTP/a.b
! 58: EOF
! 59: );
! 60: $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 400 } ];
! 61: ok($tf->handle_http($t) == 0, 'strings as version');
! 62:
! 63: $t->{REQUEST} = ( <<EOF
! 64: BC /
! 65: EOF
! 66: );
! 67: $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 400 } ];
! 68: ok($tf->handle_http($t) == 0, 'missing protocol + unknown method');
! 69:
! 70: $t->{REQUEST} = ( <<EOF
! 71: ABC
! 72: EOF
! 73: );
! 74: $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 400 } ];
! 75: ok($tf->handle_http($t) == 0, 'missing protocol + unknown method + missing URI');
! 76:
! 77: $t->{REQUEST} = ( <<EOF
! 78: ABC / HTTP/1.0
! 79: EOF
! 80: );
! 81: $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 501 } ];
! 82: ok($tf->handle_http($t) == 0, 'unknown method');
! 83:
! 84: $t->{REQUEST} = ( <<EOF
! 85: GET / HTTP/1.3
! 86: EOF
! 87: );
! 88: $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 505 } ];
! 89: ok($tf->handle_http($t) == 0, 'unknown protocol');
! 90:
! 91: $t->{REQUEST} = ( <<EOF
! 92: GET http://www.example.org/ HTTP/1.0
! 93: EOF
! 94: );
! 95: $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200 } ];
! 96: ok($tf->handle_http($t) == 0, 'absolute URI');
! 97:
! 98: print "\nLow-Level Request-Header Parsing\n";
! 99: $t->{REQUEST} = ( <<EOF
! 100: GET / HTTP/1.0
! 101: ABC : foo
! 102: EOF
! 103: );
! 104: $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200 } ];
! 105: ok($tf->handle_http($t) == 0, 'whitespace after key');
! 106:
! 107: $t->{REQUEST} = ( <<EOF
! 108: GET / HTTP/1.0
! 109: ABC a: foo
! 110: EOF
! 111: );
! 112: $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 400 } ];
! 113: ok($tf->handle_http($t) == 0, 'whitespace with-in key');
! 114:
! 115: $t->{REQUEST} = ( <<EOF
! 116: GET / HTTP/1.0
! 117: ABC:foo
! 118: EOF
! 119: );
! 120: $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200 } ];
! 121: ok($tf->handle_http($t) == 0, 'no whitespace');
! 122:
! 123: $t->{REQUEST} = ( <<EOF
! 124: GET / HTTP/1.0
! 125: ABC:foo
! 126: bc
! 127: EOF
! 128: );
! 129: $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200 } ];
! 130: ok($tf->handle_http($t) == 0, 'line-folding');
! 131:
! 132: print "\nLow-Level Request-Header Parsing - URI\n";
! 133: $t->{REQUEST} = ( <<EOF
! 134: GET /index%2ehtml HTTP/1.0
! 135: EOF
! 136: );
! 137: $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200 } ];
! 138: ok($tf->handle_http($t) == 0, 'URL-encoding');
! 139:
! 140: $t->{REQUEST} = ( <<EOF
! 141: GET /index.html%00 HTTP/1.0
! 142: EOF
! 143: );
! 144: $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 404 } ];
! 145: ok($tf->handle_http($t) == 0, 'URL-encoding, %00');
! 146:
! 147: $t->{REQUEST} = ( <<EOF
! 148: OPTIONS * HTTP/1.0
! 149: EOF
! 150: );
! 151: $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200 } ];
! 152: ok($tf->handle_http($t) == 0, 'OPTIONS');
! 153:
! 154: $t->{REQUEST} = ( <<EOF
! 155: OPTIONS / HTTP/1.1
! 156: Host: www.example.org
! 157: Connection: close
! 158: EOF
! 159: );
! 160: $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.1', 'HTTP-Status' => 200 } ];
! 161: ok($tf->handle_http($t) == 0, 'OPTIONS');
! 162:
! 163:
! 164:
! 165: ok($tf->stop_proc == 0, "Stopping lighttpd");
! 166:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>