1169d9 | 2004-05-02 | Martin Nilsson | | START_MARKER
|
05dc76 | 2001-07-20 | Martin Stjernholm | |
|
39a701 | 2004-01-27 | Martin Nilsson | | test_eq(_Roxen.html_encode_string (0), "0")
test_eq(_Roxen.html_encode_string (""), "")
test_eq(_Roxen.html_encode_string (10), "10")
test_eq(_Roxen.html_encode_string("a&b<c>d"), "a&b<c>d")
test_eq(_Roxen.http_decode_string(""), "")
test_eq(_Roxen.http_decode_string("abc+d%20e%41"), "abc+d eA")
test_eq(_Roxen.http_decode_string(""), "")
|
6af85a | 2012-09-13 | Martin Nilsson | | test_eq(_Roxen.http_decode_string("+"), "+")
|
c6345a | 2014-10-17 | Henrik Grubbström (Grubba) | |
|
4a823c | 2016-03-02 | Henrik Grubbström (Grubba) | | test_eq(_Roxen.http_decode_string("%uD83D%uDE02"), "\U0001f602")
|
2b38b4 | 2016-07-29 | Martin Nilsson | | // the following inputs are all illegal
test_eval_error(_Roxen.http_decode_string("%"))
test_eval_error(_Roxen.http_decode_string("%0"))
test_eval_error(_Roxen.http_decode_string("%%"))
test_eval_error(_Roxen.http_decode_string("%%%"))
test_eval_error(_Roxen.http_decode_string("%41%"))
test_eval_error(_Roxen.http_decode_string("%41%0"))
test_eval_error(_Roxen.http_decode_string("%41%%"))
test_eval_error(_Roxen.http_decode_string("%41%%%"))
test_eval_error(_Roxen.http_decode_string("%u"))
test_eval_error(_Roxen.http_decode_string("%u0"))
test_eval_error(_Roxen.http_decode_string("%u00"))
test_eval_error(_Roxen.http_decode_string("%u000"))
test_eval_error(_Roxen.http_decode_string("%u000_"))
test_eval_error(_Roxen.http_decode_string("%41%u"))
test_eval_error(_Roxen.http_decode_string("%41%u0"))
test_eval_error(_Roxen.http_decode_string("%41%u00"))
test_eval_error(_Roxen.http_decode_string("%41%u000"))
test_eval_error(_Roxen.http_decode_string("%41%u000_"))
dnl test_eval_error(_Roxen.http_decode_string("%uD83D"))
dnl test_eval_error(_Roxen.http_decode_string("%uDE02"))
dnl test_eval_error(_Roxen.http_decode_string("X%uD83DX"))
dnl test_eval_error(_Roxen.http_decode_string("X%uDE02X"))
|
c6345a | 2014-10-17 | Henrik Grubbström (Grubba) | |
|
39a701 | 2004-01-27 | Martin Nilsson | | test_eq(_Roxen.http_decode_string("%u12345"), "\x1234""5")
test_eq(_Roxen.http_decode_string("%U12345"), "\x1234""5")
|
7113c0 | 2004-01-27 | Martin Nilsson | |
define(test_mkhttp,[[
test_any_equal([[
string x=_Roxen.make_http_headers($1);
if(!has_suffix(x, "\r\n")) return -1;
return sort(x/"\r\n"-({""}));
]],$2)
]])
test_eval_error(_Roxen.make_http_headers(0))
test_mkhttp( ([]), ({}) )
test_mkhttp( (["":""]), ({": "}) )
test_mkhttp( (["a":"1","b":"2"]), ({"a: 1","b: 2"}) )
test_mkhttp( (["a":"1","b":({"2","3"})]), ({"a: 1","b: 2","b: 3"}) )
test_mkhttp( (["a":"1","b":({"2","2"})]), ({"a: 1","b: 2","b: 2"}) )
|
f2225c | 2009-07-29 | Martin Nilsson | |
|
14bd48 | 2016-06-29 | Henrik Grubbström (Grubba) | | test_eval_error(_Roxen.make_http_headers((["a:1": "1"])))
test_eval_error(_Roxen.make_http_headers((["a\rb": "1"])))
test_eval_error(_Roxen.make_http_headers((["a\nb": "1"])))
test_eval_error(_Roxen.make_http_headers(([" a:1": "1"])))
test_eval_error(_Roxen.make_http_headers((["a": "1\r"])))
test_eval_error(_Roxen.make_http_headers((["a": "1\n"])))
test_eval_error(_Roxen.make_http_headers((["a": ({ "1\r\nb:2", "2\r\nc:2" })))))
|
f2225c | 2009-07-29 | Martin Nilsson | | define(test_hp,[[
|
2b38b4 | 2016-07-29 | Martin Nilsson | | test_any_equal([[
object hp = _Roxen.HeaderParser();
if( $2[0]=="" )
{
// Only feed in increments when we are not testing trailing data.
Stdio.Buffer data = Stdio.Buffer($1);
while( sizeof(data) )
{
mixed res = hp->feed(data->read(1));
if(res) return res;
}
return -1;
}
return hp->feed( $1 );
]], $2)
test_any_equal([[
object hp = _Roxen.HeaderParser();
if( $2[0]=="" )
{
// Only feed in increments when we are not testing trailing data.
Stdio.Buffer data = Stdio.Buffer($1);
while( sizeof(data) )
{
string s = data->read(random(3));
if(!s) s = data->read(1);
mixed res = hp->feed(s);
if(res) return res;
}
return -1;
}
return hp->feed( $1 );
]], $2)
|
f2225c | 2009-07-29 | Martin Nilsson | | ]])
|
2b38b4 | 2016-07-29 | Martin Nilsson | | test_hp( "GET / HTTP/1.0\r\n\r\n",
({ "", "GET / HTTP/1.0", ([]) }))
test_hp( "GET / HTTP/1.0\r\n\r\nDATA",
({ "DATA", "GET / HTTP/1.0", ([]) }))
test_hp( "GET / HTTP/1.0\r\nhdr: 1\r\n\r\nDATA",
({ "DATA", "GET / HTTP/1.0", ([ "hdr":"1"]) }))
test_hp( "GET / HTTP/1.0\r\nBlaha: foo\nbar\r\nzonk: 1\r\n\r\n",
|
f2225c | 2009-07-29 | Martin Nilsson | | ({ "", "GET / HTTP/1.0", ([ "blaha":"foo", "zonk":"1" ]) }) )
test_hp( "GET / HTTP/1.0\r\nblaha: foo\r\nzonk: 1\r\n\r\n",
({ "", "GET / HTTP/1.0", ([ "blaha":"foo", "zonk":"1" ]) }) )
|
2b38b4 | 2016-07-29 | Martin Nilsson | | test_hp( "GET / HTTP/1.0\r\nblaha: foo\n\rBlaha: bar\r\n\r\n",
|
f2225c | 2009-07-29 | Martin Nilsson | | ({ "", "GET / HTTP/1.0", ([ "blaha":({ "foo", "bar" }) ]) }) )
|
2b38b4 | 2016-07-29 | Martin Nilsson | | test_hp( "GET / HTTP/1.0\r\nblaha: foo\r\n bar\r\nx:1\r\n\t2\r\n\r\n",
({ "", "GET / HTTP/1.0", ([ "blaha":"foo bar", "x":"1\t2" ]) }) )
test_any_equal([[
object hp = _Roxen.HeaderParser(0, 1);
return hp->feed( "GET / HTTP/1.0\r\nBlaha: foo\r\nblaha: foo\r\n\r\n" );
]], [[ ({ "", "GET / HTTP/1.0", ([ "Blaha":"foo", "blaha":"foo"]) }) ]])
test_any_equal([[
object hp = _Roxen.HeaderParser(0, 0);
return hp->feed( "GET / HTTP/1.0\r\nBlaha: foo\r\nblaha: foo\r\n\r\n", 1 );
]], [[ ({ "", "GET / HTTP/1.0", ([ "Blaha":"foo", "blaha":"foo"]) }) ]])
test_any_equal([[
object hp = _Roxen.HeaderParser(0, 0, 1);
return hp->feed( "GET / HTTP/1.0\r\nblaha: foo\r\n bar\r\nx:1\r\n\t2\r\n\r\n" );
]], [[ ({ "", "GET / HTTP/1.0", ([ "blaha":"foo", "x":"1"]) }) ]])
test_any_equal([[
object hp = _Roxen.HeaderParser();
return hp->feed( "GET / HTTP/1.0\r\nA\r\nblaha: foo\r\n\r\n" );
]], [[ ({ "", "GET / HTTP/1.0", (["blaha":"foo"]) }) ]])
test_eval_error([[
object hp = _Roxen.HeaderParser(1);
return hp->feed( "GET / HTTP/1.0\r\nA\r\nblaha: foo\r\n\r\n" );
]])
|
1169d9 | 2004-05-02 | Martin Nilsson | | END_MARKER
|