App-DubiousHTTP
view release on metacpan or search on metacpan
lib/App/DubiousHTTP/Tests/Clen.pm view on Meta::CPAN
use strict;
use warnings;
package App::DubiousHTTP::Tests::Clen;
use App::DubiousHTTP::Tests::Common;
SETUP(
'clen',
"playing with content-length",
<<'DESC',
These tests look at the behavior if the content-length mismatches the content,
e.g. content is short or longer then specified length or contradicting
content-lenth headers are given.
DESC
# ------------------------ Tests -----------------------------------
[ 'VALID: single or no content-length' ],
[ MUSTBE_VALID, 'close,clen,content' => 'single content-length with connection close'],
#[ VALID, 'keep-alive,clen,content' => 'single content-length with keep-alive'],
[ MUSTBE_VALID, 'close,content' => 'no content-length with connection close'],
[ UNCOMMON_INVALID, 'close,clen,content,junk' => 'single content-length, content followed by junk, then connection close'],
[ UNCOMMON_INVALID, 'close,clen,clen,content,junk' => 'correct content-length twice, content followed by junk, then connection close'],
[ UNCOMMON_VALID, 'close,000clen,content' => 'lots of 0 before clen' ],
[ UNCOMMON_VALID, 'close,000clen,content,junk' => 'lots of 0 before clen, body content+junk' ],
[ 'INVALID: content-length does not match content' ],
[ INVALID, 'close,clen200,content' => 'content-length double real content, close after real content' ],
[ INVALID, 'close,clen50,content' => 'content-length half real content, close after real content' ],
[ 'INVALID: multiple conflicting content-length' ],
[ INVALID, 'close,clen50,clen,content' => 'content-length half and full' ],
[ INVALID, 'close,clen,clen50,content' => 'content-length full and half' ],
[ INVALID, 'close,clen200,clen,content,junk' => 'content-length double and full, content followed by junk and close' ],
[ INVALID, 'close,clen,clen200,content,junk' => 'content-length full and double, content followed by junk and close' ],
[ INVALID, 'close,clen-folding100,clen200,content,junk' => 'content-length full (folded) and double' ],
[ INVALID, 'close,xte,clen50,clen,content' => 'content-length half and full, invalid Transfer-Encoding' ],
[ INVALID, 'close,xte,clen,clen50,content' => 'content-length full and half, invalid Transfer-Encoding' ],
[ INVALID, 'close,xte,clen200,clen,content,junk' => 'content-length double and full, invalid Transfer-Encoding' ],
[ INVALID, 'close,xte,clen,clen200,content,junk' => 'content-length full and double, invalid Transfer-Encoding' ],
[ INVALID, 'close,xte,clen-folding100,clen200,content,junk' => 'content-length full (folded) and double, invalid Transfer-Encoding' ],
[ 'INVALID: multiple content-length, but one empty or invalid' ],
[ INVALID, 'close,clen,clen-empty,content' => 'content-length full and empty' ],
[ INVALID, 'close,clen,clen-empty,content,junk' => 'content-length full and empty, content followed by junk and close' ],
[ INVALID, 'close,clen-empty,clen,content' => 'content-length empty and full' ],
[ INVALID, 'close,clen-empty,clen,content,junk' => 'content-length empty and full, content followed by junk and close' ],
[ INVALID, 'close,clen,clen-invalid,content' => 'content-length full and invalid' ],
[ INVALID, 'close,clen,clen-invalid,content,junk' => 'content-length full and invalid, content followed by junk and close' ],
[ INVALID, 'close,clen-invalid,clen,content' => 'content-length invalid and full' ],
[ INVALID, 'close,clen-invalid,clen,content,junk' => 'content-length invalid and full, content followed by junk and close' ],
[ 'INVALID: content-length header containing two numbers' ],
[ INVALID, 'close,clen50-folding100,content' => 'content-length half but full after line folding, close after real content' ],
[ INVALID, 'close,clen50-100,content' => 'content-length half and full on same line, close after real content' ],
[ INVALID, 'close,clen50-(100),content' => 'content-length half and full on same line, but full as MIME comment, close after real content' ],
[ INVALID, 'close,clen100-folding50,content' => 'content-length full but half after line folding, close after real content' ],
[ INVALID, 'close,clen100-50,content' => 'content-length full and half on same line, close after real content' ],
[ INVALID, 'close,clen(100)-50,content' => 'content-length full and half on same line, but full as MIME comment, close after real content' ],
[ INVALID, 'close,clen100-folding200,content,junk' => 'content-length full but double after line folding, close after real content+junk' ],
[ INVALID, 'close,clen100-(200),content,junk' => 'content-length full and double on same line, but double as MIME comment, close after real content+junk' ],
[ INVALID, 'close,clen200-folding100,content,junk' => 'content-length double but full after line folding, close after real content+junk' ],
[ INVALID, 'close,clen(200)-100,content,junk' => 'content-length double and full on same line, but double as MIME comment, close after real content+junk' ],
[ 'INVALID: invalid characters around content-length value' ],
[ INVALID, 'close,\073(clen),content,junk' => '"Content-length: ;len", body content+junk' ],
[ INVALID, 'close,(clen)\073,content,junk' => '"Content-length: len;", body content+junk' ],
[ INVALID, 'close,\054(clen),content,junk' => '"Content-length: ,len", body content+junk' ],
[ INVALID, 'close,(clen)\054,content,junk' => '"Content-length: len,", body content+junk' ],
[ INVALID, 'close,(clen)\054(clen),content,junk' => '"Content-length: len,len", body content+junk' ],
[ INVALID, 'close,\042(clen)\042,content,junk' => "'Content-length: \"len\"', body content+junk" ],
[ INVALID, 'close,(clen)A,content,junk' => '"Content-length: lenA", body content+junk' ],
[ INVALID, 'close,A(clen),content,junk' => '"Content-length: Alen", body content+junk' ],
[ INVALID, 'close,(clen)\040A,content,junk' => '"Content-length: len A", body content+junk' ],
[ INVALID, 'close,A\040(clen),content,junk' => '"Content-length: A len", body content+junk' ],
[ INVALID, 'close,\240(clen),content,junk' => '"Content-length: \240len", body content+junk' ],
[ INVALID, 'close,(clen)\240,content,junk' => '"Content-length: len\240", body content+junk' ],
[ INVALID, 'close,(clen).0,content,junk' => '"Content-length: len.0", body content+junk' ],
[ INVALID, 'close,(clen).9,content,junk' => '"Content-length: len.9", body content+junk' ],
[ INVALID, 'close,clenx0,content' => 'Content-length value with \0 inside, body content' ],
( run in 0.997 second using v1.01-cache-2.11-cpan-df04353d9ac )