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>