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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 251 - (hide annotations)
Sun Oct 5 18:08:00 2008 UTC (11 years, 1 month ago) by siliconforks
File MIME type: application/x-sh
File size: 3133 byte(s)
New tests.
1 siliconforks 251 #!/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     bad_request() {
50     /bin/echo -ne "$1" | /bin/netcat 127.0.0.1 $server_port > OUT 2> ERR
51     echo 'HTTP/1.1 400 Bad Request' > EXPECTED
52     head -n 1 OUT > ACTUAL
53     diff --strip-trailing-cr EXPECTED ACTUAL
54     }
55    
56     # send NUL in Request-Line
57     bad_request 'GET \0000 HTTP/1.1\r\n\r\n'
58    
59     # send empty Request-Line
60     bad_request '\r\n\r\n'
61    
62     # send bad Request-Line
63     bad_request ' \r\n\r\n'
64     bad_request 'GET\r\n\r\n'
65     bad_request 'GET \r\n\r\n'
66     bad_request 'GET \r\n\r\n'
67     bad_request 'GET /\r\n\r\n'
68     bad_request 'GET / \r\n\r\n'
69    
70     # bad Host header
71     bad_request 'GET / HTTP/1.1\r\nConnection: close\r\nHost: foo:bar\r\n\r\n'
72    
73     # NUL in header
74     bad_request 'GET / HTTP/1.1\r\nConnection: close\r\nFoo: \0000\r\n\r\n'
75    
76     # missing header
77     bad_request 'GET / HTTP/1.1\r\nConnection: close\r\n: bar\r\n\r\n'
78    
79     # missing header value
80     bad_request 'GET / HTTP/1.1\r\nConnection: close\r\nFoo:\r\n\r\n'
81    
82     # bad Transfer-Encoding
83     bad_request 'GET / HTTP/1.1\r\nConnection: close\r\nTransfer-Encoding: foo;\r\n\r\n'
84     bad_request 'GET / HTTP/1.1\r\nConnection: close\r\nTransfer-Encoding: foo; bar\r\n\r\n'
85     bad_request 'GET / HTTP/1.1\r\nConnection: close\r\nTransfer-Encoding: foo; bar = "\r\n\r\n'
86     bad_request 'GET / HTTP/1.1\r\nConnection: close\r\nTransfer-Encoding: foo; bar = "\r\n\r\n'
87     bad_request 'GET / HTTP/1.1\r\nConnection: close\r\nTransfer-Encoding: foo; bar = "\\\0200"\r\n\r\n'
88     bad_request 'GET / HTTP/1.1\r\nConnection: close\r\nTransfer-Encoding: foo; bar = "\0177"\r\n\r\n'
89     bad_request 'GET / HTTP/1.1\r\nConnection: close\r\nTransfer-Encoding: foo; bar = ;\r\n\r\n'
90    
91     # bad Content-Length
92     bad_request 'GET / HTTP/1.1\r\nConnection: close\r\nContent-Length: 4294967296\r\n\r\n'
93     bad_request 'GET / HTTP/1.1\r\nConnection: close\r\nContent-Length: 4294967300\r\n\r\n'
94     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