PageRenderTime 27ms CodeModel.GetById 11ms RepoModel.GetById 0ms app.codeStats 0ms

/js/lib/Socket.IO-node/support/expresso/deps/jscoverage/tests/server-bad-requests.sh

http://github.com/onedayitwillmake/RealtimeMultiplayerNodeJs
Shell | 104 lines | 59 code | 19 blank | 26 comment | 2 complexity | bcb71ab565eb1603a8bb5aafcda6fdcb MD5 | raw file
Possible License(s): GPL-2.0, LGPL-2.1, MPL-2.0-no-copyleft-exception, BSD-3-Clause
  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. set -e
  19. shutdown() {
  20. wget -q -O- --post-data= "http://127.0.0.1:${server_port}/jscoverage-shutdown" > /dev/null
  21. wait $server_pid
  22. }
  23. cleanup() {
  24. shutdown
  25. rm -fr EXPECTED ACTUAL OUT ERR
  26. }
  27. bad_request() {
  28. /bin/echo -ne "$1" | $NETCAT 127.0.0.1 $server_port > OUT 2> ERR
  29. echo 'HTTP/1.1 400 Bad Request' > EXPECTED
  30. head -n 1 OUT > ACTUAL
  31. diff --strip-trailing-cr EXPECTED ACTUAL
  32. }
  33. trap 'cleanup' 0 1 2 3 15
  34. export PATH=.:..:$PATH
  35. if [ -z "$VALGRIND" ]
  36. then
  37. delay=0.2
  38. else
  39. delay=2
  40. fi
  41. if which netcat > /dev/null 2> /dev/null
  42. then
  43. NETCAT=netcat
  44. elif which nc > /dev/null 2> /dev/null
  45. then
  46. NETCAT=nc
  47. else
  48. NETCAT='perl netcat.pl';
  49. fi
  50. rm -fr EXPECTED ACTUAL OUT ERR
  51. $VALGRIND jscoverage-server --port 8000 > /dev/null 2> /dev/null &
  52. server_pid=$!
  53. server_port=8000
  54. sleep $delay
  55. # send NUL in Request-Line
  56. bad_request 'GET \0000 HTTP/1.1\r\n\r\n'
  57. # send empty Request-Line
  58. bad_request '\r\n\r\n'
  59. # send bad Request-Line
  60. bad_request ' \r\n\r\n'
  61. bad_request 'GET\r\n\r\n'
  62. bad_request 'GET \r\n\r\n'
  63. bad_request 'GET \r\n\r\n'
  64. bad_request 'GET /\r\n\r\n'
  65. bad_request 'GET / \r\n\r\n'
  66. # bad Host header
  67. bad_request 'GET / HTTP/1.1\r\nConnection: close\r\nHost: foo:bar\r\n\r\n'
  68. # NUL in header
  69. bad_request 'GET / HTTP/1.1\r\nConnection: close\r\nFoo: \0000\r\n\r\n'
  70. # missing header
  71. bad_request 'GET / HTTP/1.1\r\nConnection: close\r\n: bar\r\n\r\n'
  72. # missing header value
  73. bad_request 'GET / HTTP/1.1\r\nConnection: close\r\nFoo:\r\n\r\n'
  74. # bad Transfer-Encoding
  75. bad_request 'GET / HTTP/1.1\r\nConnection: close\r\nTransfer-Encoding: foo;\r\n\r\n'
  76. bad_request 'GET / HTTP/1.1\r\nConnection: close\r\nTransfer-Encoding: foo; bar\r\n\r\n'
  77. bad_request 'GET / HTTP/1.1\r\nConnection: close\r\nTransfer-Encoding: foo; bar = "\r\n\r\n'
  78. bad_request 'GET / HTTP/1.1\r\nConnection: close\r\nTransfer-Encoding: foo; bar = "\r\n\r\n'
  79. bad_request 'GET / HTTP/1.1\r\nConnection: close\r\nTransfer-Encoding: foo; bar = "\\\0200"\r\n\r\n'
  80. bad_request 'GET / HTTP/1.1\r\nConnection: close\r\nTransfer-Encoding: foo; bar = "\0177"\r\n\r\n'
  81. bad_request 'GET / HTTP/1.1\r\nConnection: close\r\nTransfer-Encoding: foo; bar = ;\r\n\r\n'
  82. # bad Content-Length
  83. bad_request 'GET / HTTP/1.1\r\nConnection: close\r\nContent-Length: 4294967296\r\n\r\n'
  84. bad_request 'GET / HTTP/1.1\r\nConnection: close\r\nContent-Length: 4294967300\r\n\r\n'
  85. bad_request 'GET / HTTP/1.1\r\nConnection: close\r\nContent-Length: foo\r\n\r\n'