From a0a8cf821d2292e6662119e158e73c175452f1c3 Mon Sep 17 00:00:00 2001 From: Glenn Strauss Date: Mon, 5 Jul 2021 08:08:46 -0400 Subject: [PATCH] [tests] mv tests from request.t to test_request.c move some tests from tests/*.t to src/t/test_request.c --- src/t/test_request.c | 42 ++++++++++++++++++++++++++++++++++++++++++ tests/core-request.t | 9 +-------- tests/core-response.t | 9 +-------- tests/request.t | 28 +--------------------------- 4 files changed, 45 insertions(+), 43 deletions(-) diff --git a/src/t/test_request.c b/src/t/test_request.c index 9dfbcaa4..b232a2aa 100644 --- a/src/t/test_request.c +++ b/src/t/test_request.c @@ -311,6 +311,12 @@ static void test_request_http_request_parse(request_st * const r) CONST_STR_LEN("GET HTTP/1.0\r\n" "\r\n")); + run_http_request_parse(r, __LINE__, 0, + "URL-decode request-URI", + CONST_STR_LEN("GET /index%2ehtml HTTP/1.0\r\n" + "\r\n")); + assert(buffer_eq_slen(&r->uri.path, CONST_STR_LEN("/index.html"))); + run_http_request_parse(r, __LINE__, 0, "#1232 - duplicate headers with line-wrapping", CONST_STR_LEN("GET / HTTP/1.0\r\n" @@ -544,6 +550,42 @@ static void test_request_http_request_parse(request_st * const r) "Connection: close\r\n" "\r\n")); + run_http_request_parse(r, __LINE__, 0, + "ignore duplicated If-Modified-Since if matching", + CONST_STR_LEN("GET / HTTP/1.1\r\n" + "Host: zzz.example.org\r\n" + "If-Modified-Since: Sun, 01 Jan 2036 00:00:02 GMT\r\n" + "If-Modified-Since: Sun, 01 Jan 2036 00:00:02 GMT\r\n" + "Connection: close\r\n" + "\r\n")); + b = http_header_request_get(r, HTTP_HEADER_IF_MODIFIED_SINCE, + CONST_STR_LEN("If-Modified-Since")); + assert(b && buffer_eq_slen(b, + CONST_STR_LEN("Sun, 01 Jan 2036 00:00:02 GMT"))); + + run_http_request_parse(r, __LINE__, 400, + "reject duplicated If-Modified-Since if not matching", + CONST_STR_LEN("GET / HTTP/1.1\r\n" + "Host: zzz.example.org\r\n" + "If-Modified-Since: Sun, 01 Jan 2036 00:00:02 GMT\r\n" + "If-Modified-Since: Sun, 01 Jan 2036 00:00:03 GMT\r\n" + "Connection: close\r\n" + "\r\n")); + + run_http_request_parse(r, __LINE__, 0, + "large headers", /*(copied from tests/request.t)*/ + CONST_STR_LEN("GET / HTTP/1.0\r\n" + "Hsgfsdjf: asdfhdf\r\n" + "hdhd: shdfhfdasd\r\n" + "hfhr: jfghsdfg\r\n" + "jfuuehdmn: sfdgjfdg\r\n" + "jvcbzufdg: sgfdfg\r\n" + "hrnvcnd: jfjdfg\r\n" + "jfusfdngmd: gfjgfdusdfg\r\n" + "nfj: jgfdjdfg\r\n" + "jfue: jfdfdg\r\n" + "\r\n")); + /* (quick check that none of above tests were left in a state * which resulted in subsequent tests returning 400 for other * reasons) */ diff --git a/tests/core-request.t b/tests/core-request.t index 1418fb25..8d982fc8 100755 --- a/tests/core-request.t +++ b/tests/core-request.t @@ -8,7 +8,7 @@ BEGIN { use strict; use IO::Socket; -use Test::More tests => 12; +use Test::More tests => 11; use LightyTest; my $tf = LightyTest->new(); @@ -43,13 +43,6 @@ ok($tf->handle_http($t) == 0, 'OPTIONS'); ## Low-Level Request-Header Parsing - URI -$t->{REQUEST} = ( <{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200 } ]; -ok($tf->handle_http($t) == 0, 'URL-encoding'); - $t->{REQUEST} = ( < 14; +use Test::More tests => 13; use LightyTest; my $tf = LightyTest->new(); @@ -27,13 +27,6 @@ EOF $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.1', 'HTTP-Status' => 200, '+Date' => '' } ]; ok($tf->handle_http($t) == 0, 'Date header'); -$t->{REQUEST} = ( <{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.1', 'HTTP-Status' => 400, 'Connection' => 'close' } ]; -ok($tf->handle_http($t) == 0, 'Host missing'); - $t->{REQUEST} = ( < 54; +use Test::More tests => 52; use LightyTest; my $tf = LightyTest->new(); @@ -393,23 +393,6 @@ EOF ok($tf->handle_http($t) == 0, 'GET, Range start out of range'); -$t->{REQUEST} = ( <{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200 } ]; -ok($tf->handle_http($t) == 0, 'larger headers'); - - $t->{REQUEST} = ( <handle_http($t) == 0, 'OPTIONS for RTSP'); my $nextyr = (gmtime(time()))[5] + 1900 + 1; -$t->{REQUEST} = ( <{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 304 } ]; -ok($tf->handle_http($t) == 0, 'Duplicate If-Mod-Since, with equal timestamps'); - $t->{REQUEST} = ( "GET / HTTP/1.0\r\nIf-Modified-Since: \r\n\r\n" ); $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200 } ]; ok($tf->handle_http($t) == 0, 'empty If-Modified-Since');