/[jscoverage]/trunk/tests/server-bad-requests.sh
ViewVC logotype

Contents of /trunk/tests/server-bad-requests.sh

Parent Directory Parent Directory | Revision Log Revision Log


Revision 261 - (show annotations)
Mon Oct 6 00:04:13 2008 UTC (10 years, 6 months ago) by siliconforks
File MIME type: application/x-sh
File size: 3230 byte(s)
Check for netcat, then nc, then give up.
1 #!/bin/sh
2 # server-bad-requests.sh - test jscoverage-server with bad requests
3 # Copyright (C) 2008 siliconforks.com
4 #
5 # This program is free software; you can redistribute it and/or modify
6 # it under the terms of the GNU General Public License as published by
7 # the Free Software Foundation; either version 2 of the License, or
8 # (at your option) any later version.
9 #
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # GNU General Public License for more details.
14 #
15 # You should have received a copy of the GNU General Public License along
16 # with this program; if not, write to the Free Software Foundation, Inc.,
17 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18
19 set -e
20
21 shutdown() {
22 wget -q -O- --post-data= "http://127.0.0.1:${server_port}/jscoverage-shutdown" > /dev/null
23 wait $server_pid
24 }
25
26 cleanup() {
27 shutdown
28 rm -fr EXPECTED ACTUAL OUT ERR
29 }
30
31 trap 'cleanup' 0 1 2 3 15
32
33 export PATH=.:..:$PATH
34
35 if [ -z "$VALGRIND" ]
36 then
37 delay=0.2
38 else
39 delay=2
40 fi
41
42 rm -fr EXPECTED ACTUAL OUT ERR
43 $VALGRIND jscoverage-server --port 8000 > /dev/null 2> /dev/null &
44 server_pid=$!
45 server_port=8000
46
47 sleep $delay
48
49 if which netcat
50 then
51 NETCAT=netcat
52 elif which nc
53 then
54 NETCAT=nc
55 else
56 # skip test
57 exit 77
58 fi
59
60 bad_request() {
61 /bin/echo -ne "$1" | $NETCAT 127.0.0.1 $server_port > OUT 2> ERR
62 echo 'HTTP/1.1 400 Bad Request' > EXPECTED
63 head -n 1 OUT > ACTUAL
64 diff --strip-trailing-cr EXPECTED ACTUAL
65 }
66
67 # send NUL in Request-Line
68 bad_request 'GET \0000 HTTP/1.1\r\n\r\n'
69
70 # send empty Request-Line
71 bad_request '\r\n\r\n'
72
73 # send bad Request-Line
74 bad_request ' \r\n\r\n'
75 bad_request 'GET\r\n\r\n'
76 bad_request 'GET \r\n\r\n'
77 bad_request 'GET \r\n\r\n'
78 bad_request 'GET /\r\n\r\n'
79 bad_request 'GET / \r\n\r\n'
80
81 # bad Host header
82 bad_request 'GET / HTTP/1.1\r\nConnection: close\r\nHost: foo:bar\r\n\r\n'
83
84 # NUL in header
85 bad_request 'GET / HTTP/1.1\r\nConnection: close\r\nFoo: \0000\r\n\r\n'
86
87 # missing header
88 bad_request 'GET / HTTP/1.1\r\nConnection: close\r\n: bar\r\n\r\n'
89
90 # missing header value
91 bad_request 'GET / HTTP/1.1\r\nConnection: close\r\nFoo:\r\n\r\n'
92
93 # bad Transfer-Encoding
94 bad_request 'GET / HTTP/1.1\r\nConnection: close\r\nTransfer-Encoding: foo;\r\n\r\n'
95 bad_request 'GET / HTTP/1.1\r\nConnection: close\r\nTransfer-Encoding: foo; bar\r\n\r\n'
96 bad_request 'GET / HTTP/1.1\r\nConnection: close\r\nTransfer-Encoding: foo; bar = "\r\n\r\n'
97 bad_request 'GET / HTTP/1.1\r\nConnection: close\r\nTransfer-Encoding: foo; bar = "\r\n\r\n'
98 bad_request 'GET / HTTP/1.1\r\nConnection: close\r\nTransfer-Encoding: foo; bar = "\\\0200"\r\n\r\n'
99 bad_request 'GET / HTTP/1.1\r\nConnection: close\r\nTransfer-Encoding: foo; bar = "\0177"\r\n\r\n'
100 bad_request 'GET / HTTP/1.1\r\nConnection: close\r\nTransfer-Encoding: foo; bar = ;\r\n\r\n'
101
102 # bad Content-Length
103 bad_request 'GET / HTTP/1.1\r\nConnection: close\r\nContent-Length: 4294967296\r\n\r\n'
104 bad_request 'GET / HTTP/1.1\r\nConnection: close\r\nContent-Length: 4294967300\r\n\r\n'
105 bad_request 'GET / HTTP/1.1\r\nConnection: close\r\nContent-Length: foo\r\n\r\n'

Properties

Name Value
svn:executable *

  ViewVC Help
Powered by ViewVC 1.1.24