Annotation of embedaddon/lighttpd/tests/mod-cgi.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 => 18;
! 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: # mod-cgi
! 20: #
! 21: $t->{REQUEST} = ( <<EOF
! 22: GET /cgi.pl HTTP/1.0
! 23: EOF
! 24: );
! 25: $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200 } ];
! 26: ok($tf->handle_http($t) == 0, 'perl via cgi');
! 27:
! 28: $t->{REQUEST} = ( <<EOF
! 29: GET /cgi.pl/foo HTTP/1.0
! 30: EOF
! 31: );
! 32: $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200, 'HTTP-Content' => '/cgi.pl' } ];
! 33: ok($tf->handle_http($t) == 0, 'perl via cgi + pathinfo');
! 34:
! 35: $t->{REQUEST} = ( <<EOF
! 36: GET /cgi-pathinfo.pl/foo HTTP/1.0
! 37: EOF
! 38: );
! 39: $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200, 'HTTP-Content' => '/foo' } ];
! 40: ok($tf->handle_http($t) == 0, 'perl via cgi + pathinfo');
! 41:
! 42: $t->{REQUEST} = ( <<EOF
! 43: GET /nph-status.pl?30 HTTP/1.0
! 44: EOF
! 45: );
! 46: $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200 } ];
! 47: ok($tf->handle_http($t) == 0, 'NPH + perl, invalid status-code (#14)');
! 48:
! 49: $t->{REQUEST} = ( <<EOF
! 50: GET /nph-status.pl?304 HTTP/1.0
! 51: EOF
! 52: );
! 53: $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 304 } ];
! 54: ok($tf->handle_http($t) == 0, 'NPH + perl, setting status-code (#1125)');
! 55:
! 56: $t->{REQUEST} = ( <<EOF
! 57: GET /nph-status.pl?200 HTTP/1.0
! 58: EOF
! 59: );
! 60: $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200 } ];
! 61: ok($tf->handle_http($t) == 0, 'NPH + perl, setting status-code');
! 62:
! 63: $t->{REQUEST} = ( <<EOF
! 64: GET /get-header.pl?GATEWAY_INTERFACE HTTP/1.0
! 65: EOF
! 66: );
! 67: $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200, 'HTTP-Content' => 'CGI/1.1' } ];
! 68: ok($tf->handle_http($t) == 0, 'cgi-env: GATEWAY_INTERFACE');
! 69:
! 70: $t->{REQUEST} = ( <<EOF
! 71: GET /get-header.pl?QUERY_STRING HTTP/1.0
! 72: EOF
! 73: );
! 74: $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200, 'HTTP-Content' => 'QUERY_STRING' } ];
! 75: ok($tf->handle_http($t) == 0, 'cgi-env: QUERY_STRING');
! 76:
! 77: $t->{REQUEST} = ( <<EOF
! 78: GET /get-header.pl?GATEWAY_INTERFACE HTTP/1.0
! 79: EOF
! 80: );
! 81: $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200, 'HTTP-Content' => 'CGI/1.1' } ];
! 82: ok($tf->handle_http($t) == 0, 'cgi-env: GATEWAY_INTERFACE');
! 83:
! 84: $t->{REQUEST} = ( <<EOF
! 85: GET /get-header.pl?HTTP_HOST HTTP/1.0
! 86: Host: www.example.org
! 87: EOF
! 88: );
! 89: $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200, 'HTTP-Content' => 'www.example.org' } ];
! 90: ok($tf->handle_http($t) == 0, 'cgi-env: HTTP_HOST');
! 91:
! 92: $t->{REQUEST} = ( <<EOF
! 93: GET /get-header.pl?HTTP_XX_YY123 HTTP/1.0
! 94: xx-yy123: foo
! 95: EOF
! 96: );
! 97: $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200, 'HTTP-Content' => 'foo' } ];
! 98: ok($tf->handle_http($t) == 0, 'cgi-env: quoting headers with numbers');
! 99:
! 100: $t->{REQUEST} = ( <<EOF
! 101: GET /get-header.pl?HTTP_HOST HTTP/1.0
! 102: Host: www.example.org
! 103: EOF
! 104: );
! 105: $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200, 'HTTP-Content' => 'www.example.org' } ];
! 106: ok($tf->handle_http($t) == 0, 'cgi-env: HTTP_HOST');
! 107:
! 108: $t->{REQUEST} = ( <<EOF
! 109: GET /get-header.pl?HTTP_HOST HTTP/1.0
! 110: Host: www.example.org
! 111: EOF
! 112: );
! 113: $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200, 'HTTP-Content' => 'www.example.org' } ];
! 114: ok($tf->handle_http($t) == 0, 'cgi-env: HTTP_HOST');
! 115:
! 116: $t->{REQUEST} = ( <<EOF
! 117: GET /get-header.pl?HTTP_HOST HTTP/1.0
! 118: Host: www.example.org
! 119: EOF
! 120: );
! 121: $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200, 'Content-Type' => 'text/plain' } ];
! 122: ok($tf->handle_http($t) == 0, 'cgi-env: HTTP_HOST');
! 123:
! 124: $t->{REQUEST} = ( <<EOF
! 125: GET /get-header.pl?HTTP_HOST HTTP/1.1
! 126: Host: www.example.org
! 127: Connection: close
! 128: EOF
! 129: );
! 130: $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.1', 'HTTP-Status' => 200, '+Content-Length' => '' } ];
! 131: ok($tf->handle_http($t) == 0, 'cgi-env: HTTP_HOST');
! 132:
! 133: # broken header crash
! 134: $t->{REQUEST} = ( <<EOF
! 135: GET /crlfcrash.pl HTTP/1.0
! 136: EOF
! 137: );
! 138: $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 302, 'Location' => 'http://www.example.org/' } ];
! 139: ok($tf->handle_http($t) == 0, 'broken header via perl cgi');
! 140:
! 141: ok($tf->stop_proc == 0, "Stopping lighttpd");
! 142:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>