From f81aa02448b615c4d5fc4f6544c53289dae9d2ec Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Wed, 4 May 2011 16:41:36 -0700 Subject: return 414 for URI length violations There's an HTTP status code allocated for it in , so return that instead of 400. --- t/t0002-parser-error.sh | 62 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 61 insertions(+), 1 deletion(-) (limited to 't') diff --git a/t/t0002-parser-error.sh b/t/t0002-parser-error.sh index 9a3e7cf..f0df69d 100755 --- a/t/t0002-parser-error.sh +++ b/t/t0002-parser-error.sh @@ -1,6 +1,6 @@ #!/bin/sh . ./test-lib.sh -t_plan 5 "parser error test" +t_plan 11 "parser error test" t_begin "setup and startup" && { unicorn_setup @@ -24,6 +24,66 @@ t_begin "response should be a 400" && { grep -F 'HTTP/1.1 400 Bad Request' $tmp } +t_begin "send a huge Request URI (REQUEST_PATH > (12 * 1024))" && { + rm -f $tmp + ( + cat $fifo > $tmp & + set -e + trap 'wait && echo ok > $ok' EXIT + printf 'GET /' + for i in $(awk $fifo || : + test xok = x$(cat $ok) +} + +t_begin "response should be a 414" && { + grep -F 'HTTP/1.1 414 Request-URI Too Long' $tmp +} + +t_begin "send a huge Request URI (QUERY_STRING > (10 * 1024))" && { + rm -f $tmp + ( + cat $fifo > $tmp & + set -e + trap 'wait && echo ok > $ok' EXIT + printf 'GET /hello-world?a' + for i in $(awk $fifo || : + test xok = x$(cat $ok) +} + +t_begin "response should be a 414" && { + grep -F 'HTTP/1.1 414 Request-URI Too Long' $tmp +} + +t_begin "send a huge Request URI (FRAGMENT > 1024)" && { + rm -f $tmp + ( + cat $fifo > $tmp & + set -e + trap 'wait && echo ok > $ok' EXIT + printf 'GET /hello-world#a' + for i in $(awk $fifo || : + test xok = x$(cat $ok) +} + +t_begin "response should be a 414" && { + grep -F 'HTTP/1.1 414 Request-URI Too Long' $tmp +} + t_begin "server stderr should be clean" && check_stderr t_begin "term signal sent" && kill $unicorn_pid -- cgit v1.2.3-24-ge0c7