File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / lighttpd / tests / mod-cgi.t
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Mon Oct 14 10:32:47 2013 UTC (10 years, 8 months ago) by misho
Branches: lighttpd, MAIN
CVS tags: v1_4_35p0, v1_4_35, v1_4_33, HEAD
1.4.33

    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>