summaryrefslogtreecommitdiff
path: root/test/webrick
Commit message (Collapse)AuthorAgeFilesLines
* Move webrick library into internal test toolchainHiroshi SHIBATA2020-12-1024-3804/+0
|
* [ruby/webrick] Allow empty POST and PUT requests without content lengthJeremy Evans2020-11-131-0/+12
| | | | | | | | RFC 7230 section 3.3.3 allows for this. Fixes #30 https://github.com/ruby/webrick/commit/069e9b1908
* Revert "[ruby/webrick] Add test for shutdown_pipe"Hiroshi SHIBATA2020-09-251-12/+0
| | | | This reverts commit c06eab13290757fc326bb2a6e3ac25cd53e00894.
* Revert "[ruby/webrick] Fix shutdown_pipe test issue"Hiroshi SHIBATA2020-09-251-20/+9
| | | | This reverts commit b8fdd38b2e01abcfd4cc8d007a3b3afb285f5ddb.
* Revert "[ruby/webrick] Allow empty POST and PUT requests without content length"Hiroshi SHIBATA2020-09-241-12/+0
| | | | | | This reverts commit ed12019ce6abe87aac87ec77ac081d37b25180a2. https://github.com/ruby/ruby/runs/1160423667?check_suite_focus=true#step:14:752
* [ruby/webrick] Manually pick commit from upstream repoHiroshi SHIBATA2020-09-241-0/+12
| | | | | | Fix test when run with US-ASCII encoding https://github.com/ruby/webrick/commit/f402aafb36bbd43be54621405da550643a1a1a4c
* [ruby/webrick] Only run test_big_bodies test on Ruby 2.5+Jeremy Evans2020-09-241-1/+1
| | | | | | | It was added after Ruby 2.5, and it looks like it never ran correctly on Ruby <2.5. https://github.com/ruby/webrick/commit/65fb03cb6a
* [ruby/webrick] Allow empty POST and PUT requests without content lengthJeremy Evans2020-09-241-0/+12
| | | | | | | | RFC 7230 section 3.3.3 allows for this. Fixes #30 https://github.com/ruby/webrick/commit/069e9b1908
* [ruby/webrick] Allow EPROTOTYPE error when writing junk to a socketJeremy Evans2020-09-241-1/+1
| | | | | | MacOS seems to raise this error in some cases. https://github.com/ruby/webrick/commit/0f0c9f1e61
* [ruby/webrick] Fix shutdown_pipe test issueJohn W Higgins2020-09-241-9/+20
| | | | https://github.com/ruby/webrick/commit/9676704c60
* [ruby/webrick] Ensure server port numbers are numeric and ensure they are ↵John W Higgins2020-09-241-0/+28
| | | | | | stored as integers https://github.com/ruby/webrick/commit/86ed621e11
* [ruby/webrick] Add test for shutdown_pipeJohn W Higgins2020-09-241-0/+12
| | | | https://github.com/ruby/webrick/commit/1daacc1849
* [ruby/webrick] Do not use ensure in a block without beginJeremy Evans2020-09-241-69/+71
| | | | | | | This syntax is not supported until Ruby 2.5, and Webrick still targets Ruby 2.3+. https://github.com/ruby/webrick/commit/fbe85b885f
* [ruby/webrick] Skip env-locale-sensitive CGI test on the "java" platformCharles Oliver Nutter2020-09-241-1/+1
| | | | | | | | | | | | | | | | | | | | | | JRuby's environment variables are provided by the Java Development Kit's (JDK's) classes, which present them as a map from string to string. In order to do this, those environment variable names and values must be decoded into characters, which breaks any variables that are intended to be "raw" bytes not necessarily decodable with the default system encoding. This issue is detailed in jruby/jruby#6248. The only solution on the JRuby side will be to bypass the JDK environment variable API and go directly to the native getenv/setenv system calls. This is not likely to happen in the near future, due to the complexity of such a change and the rarity of undecodable environment values. The exclude here was added due to the Windows platform also having a similar sensitivity to character encodings when working with environment variables. It seems appropriate to expand this skip to the "java" platform, as the root issue is largely the same. https://github.com/ruby/webrick/commit/dc453e5c3c
* Add tests of nested multibyte path and DirectoryIndexKazuhiro NISHIYAMA2020-06-221-13/+23
|
* Use section sign instead of Hiragana Letter AKazuhiro NISHIYAMA2020-06-201-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | It can convert to Windows-1252and Windows-31J. ``` "\u00a7".encode("Windows-1252") #=> "\xA7" "\u00a7".encode("Windows-31J") #=> "\x{8198}" ``` https://github.com/ruby/ruby/runs/788357527?check_suite_focus=true#step:14:959 ``` 1) Failure: WEBrick::TestFileHandler#test_cjk_in_path [D:/a/ruby/ruby/src/test/webrick/utils.rb:72]: exceptions on 2 threads: webrick log start: [2020-06-19 14:49:38] ERROR Encoding::CompatibilityError: incompatible character encodings: ASCII-8BIT and Windows-1252 D:/a/ruby/ruby/src/lib/webrick/httpservlet/filehandler.rb:341:in `+' D:/a/ruby/ruby/src/lib/webrick/httpservlet/filehandler.rb:341:in `set_filename' D:/a/ruby/ruby/src/lib/webrick/httpservlet/filehandler.rb:310:in `exec_handler' D:/a/ruby/ruby/src/lib/webrick/httpservlet/filehandler.rb:245:in `do_GET' D:/a/ruby/ruby/src/lib/webrick/httpservlet/abstract.rb:105:in `service' D:/a/ruby/ruby/src/lib/webrick/httpservlet/filehandler.rb:241:in `service' D:/a/ruby/ruby/src/lib/webrick/httpserver.rb:140:in `service' D:/a/ruby/ruby/src/lib/webrick/httpserver.rb:96:in `run' D:/a/ruby/ruby/src/lib/webrick/server.rb:307:in `block in start_thread' ```
* Use filesystem encoding as FileHandler's encodingKazuhiro NISHIYAMA2020-06-191-0/+5
| | | | | | | | | instead of `@root.encoding`. And fallback to ASCII-8BIT when filesystem encoding is US-ASCII. When `@root.encoding` is not compatible filesystem encoding, `Encoding::CompatibilityError` raised at `webrick/httpservlet/filehandler.rb:341`. So `DocumentRoot` must be compatible with filesystem encoding.
* Fix failure on mswin CIKazuhiro NISHIYAMA2020-06-191-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | https://rubyci.org/logs/mswinci.japaneast.cloudapp.azure.com/vc12-x64/ruby-master/log/20200619T054159Z.fail.html.gz ``` 1) Failure: WEBrick::TestFileHandler#test_cjk_in_path [D:/tmp/mswin-build20200619-14304-utgij/ruby/test/webrick/utils.rb:72]: exceptions on 2 threads: webrick log start: [2020-06-19 16:28:42] ERROR `/あ.txt' not found. webrick log end Filesystem encoding is Windows-31J. <"200"> expected but was <"404">. --- <[]> expected but was <["[2020-06-19 16:28:42] ERROR `/\xE3\x81\x82.txt' not found.\n"]>. ``` `prevent_directory_traversal` treats `path_info` as filesystem encoding. So path_info should be filesystem encoding in request URL. On some environments, fallback to ASCII-8BIT when EncodingError.
* test/webrick/test_httpresponse.rb: Use a longer indicator for crackYusuke Endoh2020-06-191-13/+13
| | | | | | | | | | | | | | | "hack" was too short. The tests checks the error html, which includes hostname. GitHub Actions hostname seems randomly generated, and it may include the indicator string. https://github.com/ruby/ruby/runs/784896235 ``` 1) Failure: WEBrick::TestHTTPResponse#test_prevent_response_splitting_cookie_headers_cr [/home/runner/work/ruby/ruby/src/test/webrick/test_httpresponse.rb:71]: Expected /hack/ to not match "HTTP/1.1 500 Internal Server Error\r\nContent-Type: text/html; charset=ISO-8859-1\r\n\r\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\">\n<HTML>\n <HEAD><TITLE>Internal Server Error</TITLE></HEAD>\n <BODY>\n <H1>Internal Server Error</H1>\n WEBrick::HTTPResponse::InvalidHeader\n <HR>\n <ADDRESS>\n WEBrick/1.6.0 (Ruby/2.8.0/2020-06-18) at\n fv-az89.dddawhu1s14uzpjkiz5fhackre.cx.internal.cloudapp.net:80\n </ADDRESS>\n </BODY>\n</HTML>\n". ``` This change uses longer indicator "cracked_indicator_for_test" instead.
* lib/webrick/httpservlet/filehandler.rb: always handle a path as UTF-8Yusuke Endoh2020-06-181-10/+1
| | | | | | | | | | | | | | | | https://rubyci.org/logs/mswinci.japaneast.cloudapp.azure.com/vc12-x64/ruby-master/log/20200618T113134Z.fail.html.gz ``` 1) Failure: WEBrick::TestFileHandler#test_cjk_in_path [D:/tmp/mswin-build20200618-84004-1t0dh8f/ruby/test/webrick/utils.rb:72]: exceptions on 2 threads: webrick log start: [2020-06-18 22:18:07] ERROR `/??.txt' not found. webrick log end Filesystem encoding is Windows-31J. <"200"> expected but was <"404">. ```
* Read in ASCII-8BIT to get rid of invalid encoding errorNobuyoshi Nakada2020-06-181-1/+1
|
* test/webrick/test_filehandler.rb: implicitly fall back to UTF-8Yusuke Endoh2020-06-181-2/+5
| | | | | | | | | | | https://ci.appveyor.com/project/ruby/ruby/builds/33588714/job/hcgin7xo3sarr0r2 ``` 2) Failure: WEBrick::TestFileHandler#test_cjk_in_path [D:/a/ruby/ruby/src/test/webrick/utils.rb:72]: exceptions on 1 threads: U+3042 to WINDOWS-1252 in conversion from UTF-8 to WINDOWS-1252 ```
* test/webrick/test_filehandler.rb: remove unused variableYusuke Endoh2020-06-181-1/+1
|
* test/webrick/test_filehandler.rb: no `.encode("filesystem")` if US-ASCIIYusuke Endoh2020-06-181-2/+7
| | | | | | | | | | http://ci.rvm.jp/logfiles/brlog.trunk-theap-asserts.20200618-002305 ``` I, [2020-06-18T00:28:11.661066 #31625] INFO -- : 1) Failure: I, [2020-06-18T00:28:11.661157 #31625] INFO -- : WEBrick::TestFileHandler#test_cjk_in_path [/tmp/ruby/v3/src/trunk-theap-asserts/test/webrick/utils.rb:72]: I, [2020-06-18T00:28:11.661216 #31625] INFO -- : exceptions on 1 threads: I, [2020-06-18T00:28:11.661269 #31625] INFO -- : U+3042 from UTF-8 to US-ASCII ```
* test/webrick/test_filehandler.rb: Second try to fix the CI errorYusuke Endoh2020-06-181-1/+2
| | | | | 93e6fa1d319d19ce7fba37e4b9924862447b9f38 failed to fix the issue. I suspect that the request path must be encoded as filesystem encoding.
* Show filesystem encoding in failure messageKazuhiro NISHIYAMA2020-06-171-1/+1
| | | | | | | | | | | | | | | | | | | | `test_cjk_in_path` failed on mswinci yet. https://rubyci.org/logs/mswinci.japaneast.cloudapp.azure.com/vc12-x64/ruby-master/log/20200616T192319Z.fail.html.gz ``` 1) Failure: WEBrick::TestFileHandler#test_cjk_in_path [D:/tmp/mswin-build20200617-120024-1brdn58/ruby/test/webrick/utils.rb:72]: exceptions on 2 threads: webrick log start: [2020-06-17 06:12:53] ERROR `/あ.txt' not found. webrick log end. <"200"> expected but was <"404">. --- <[]> expected but was <["[2020-06-17 06:12:53] ERROR `/\xE3\x81\x82.txt' not found.\n"]>. ```
* [ruby/webrick] Fix httpd error in CJK directoryKazuhiro NISHIYAMA2020-06-111-0/+13
| | | | | | [Bug #16753] https://github.com/ruby/webrick/commit/83cf440858
* restore server[:DocumentRootOptions] setting.Koichi Sasada2020-02-291-1/+2
| | | | | | | | Surprisingly (at least for me), `server[:DocumentRootOptions]` on Webrick is global information and it affect the result of test_short_filename. Random order test fails because of global information change. I doubt it is bug, but to fix random order test, I restore the value.
* support multi-run test for test/webrick/test_filehandler.rbS-H-GAMELINKS2020-02-131-0/+1
|
* [ruby/webrick] Check the feature by itself, instead of the version numberNobuyoshi Nakada2019-11-301-1/+1
| | | | https://github.com/ruby/webrick/commit/79d7922de9
* [ruby/webrick] Enabled chunked encoding if Transfer-Encoding: chunked header ↵Jeremy Evans2019-11-301-0/+7
| | | | | | | | | | is set Patch from Leonard Garvey. Fixes Ruby Bug 9986. https://github.com/ruby/webrick/commit/8cff7f3995
* [ruby/webrick] Allow WEBrick::HTTPServlet::CGIHandler :CGIInterpreter option ↵Jeremy Evans2019-11-302-1/+9
| | | | | | | | | | to be array This way you don't need to escape each entry. Implements Ruby Feature 15170. https://github.com/ruby/webrick/commit/d8086e600c
* [ruby/webrick] Support literal IPv6 addresses in X-Forwarded-HostJeremy Evans2019-10-241-0/+44
| | | | https://github.com/ruby/webrick/commit/6b6990ec81
* [ruby/webrick] Remove the squishing of whitespace in header valuesJeremy Evans2019-10-241-1/+1
| | | | | | | | | | While the stripping of header values is required by RFC 2616 4.2 and RFC 7230 3.2.4, the squishing is not and can break things, such as when one header contains an HMAC of another header. Fixes Ruby Bug 7021. https://github.com/ruby/webrick/commit/8b96088a86
* [ruby/webrick] after ruby-2.6.0, set Net::HTTP#write_timeoutthekuwayama2019-10-241-1/+1
| | | | https://github.com/ruby/webrick/commit/3b51f6b4d2
* WEBrick: prevent response splitting and header injectionYusuke Endoh2019-10-011-2/+44
| | | | | | | | This is a follow up to d9d4a28f1cdd05a0e8dabb36d747d40bbcc30f16. The commit prevented CRLR, but did not address an isolated CR or an isolated LF. Co-Authored-By: NARUSE, Yui <naruse@airemix.jp>
* Loop with String#scan without creating substringsNobuyoshi Nakada2019-10-011-0/+22
| | | | | Create the substrings necessary parts only, instead of cutting the rest of the buffer. Also removed a useless, probable typo, regexp.
* Adjust indent [ci skip]Nobuyoshi Nakada2019-08-111-1/+1
|
* Aliases capture_output to capture_io for test-unit compatiblity.Hiroshi SHIBATA2019-08-081-1/+1
|
* remove an unused variable.Tanaka Akira2019-07-111-1/+0
|
* WEBrick::HTTPResponse create tempfile if required.Tanaka Akira2019-07-111-0/+40
| | | | | | | | | | | | | | | | | | | | | WEBrick::HTTPProxyServer implementes HTTP proxy using WEBrick and Net::HTTP. WEBrick accepts HTTP/1.0 clients and Net::HTTP uses always HTTP/1.1. However HTTP/1.1 supports chunked transfer coding HTTP/1.0 doesn't. Chunked transfer coding doesn't require that content-length before the content is sent. But non-chunked transfer coding require content-length before the content is sent. So, when HTTP/1.0 clients connects WEBrick::HTTPProxyServer and origin server returns chunked response, WEBrick::HTTPProxyServer needs to store whole content to know the length of it. This patch do it using tempfile.
* httpstatus.rb 100% coveragemasakazutakewaka2019-06-241-0/+35
|
* Remove extraneous spaces at the end of status lineNobuyoshi Nakada2019-06-241-0/+7
| | | | | | | | | | | | | Remove extraneous spaces after the status code that is non-compliant with RFC, i.e `HTTP 200 OK `, to unnecessary confusion for WEBrick users, by a risk that WEBrick instances in the wild will have server responses flagged as suspicious or malicious due to a similar bug in [Cobalt Strike misconfiguration]. Reported by Matt Tennis <mtennis@paloaltonetworks.com> [Cobalt Strike misconfiguration]: https://blog.fox-it.com/2019/02/26/identifying-cobalt-strike-team-servers-in-the-wild/
* test/webrick/test_ssl_server.rb: Use EnvUtil.timeout for timeout scale factorYusuke Endoh2019-06-131-1/+1
| | | | | | | | | https://rubyci.org/logs/rubyci.s3.amazonaws.com/scw-9d6766/ruby-master/log/20190613T091708Z.fail.html.gz https://rubyci.org/logs/rubyci.s3.amazonaws.com/scw-9d6766/ruby-master/log/20190612T011708Z.fail.html.gz https://rubyci.org/logs/rubyci.s3.amazonaws.com/scw-9d6766/ruby-master/log/20190611T211707Z.fail.html.gz https://rubyci.org/logs/rubyci.s3.amazonaws.com/scw-9d6766/ruby-master/log/20190604T171708Z.fail.html.gz https://rubyci.org/logs/rubyci.s3.amazonaws.com/scw-9d6766/ruby-master/log/20190529T091707Z.fail.html.gz https://rubyci.org/logs/rubyci.s3.amazonaws.com/scw-9d6766/ruby-master/log/20190528T031708Z.fail.html.gz
* test/webrick/test_filehandler.rb: extend the timeout for Solaris CIYusuke Endoh2019-06-061-0/+2
| | | | https://rubyci.org/logs/rubyci.s3.amazonaws.com/unstable10s/ruby-master/log/20190602T031908Z.fail.html.gz
* Update String#crypt tests to work on OpenBSDJeremy Evans2019-06-011-0/+3
| | | | | | | Skip the webrick httpauth tests that use crypt when testing on OpenBSD. Fixes [Bug #11363]
* Ignore warnings about ambiguous first argument of regexp with assert match.Hiroshi SHIBATA2019-06-011-1/+1
|
* Added to check MJIT constant for the Ruby 2.3-2.5.hsbt2019-03-112-2/+2
| | | | | | | | This commit picked from https://github.com/ruby/webrick/commit/2c13beca2c25dc099b7ed20dbe4d7ede77dfef86 Co-authored-by: Colby Swandale <me@colby.fyi> git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67214 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* webrick/test_utils.rb: loosen timeout severityk0kubun2018-12-281-3/+3
| | | | | | | to stabilize CI failure like: https://rubyci.org/logs/rubyci.s3.amazonaws.com/osx1013/ruby-trunk/log/20181228T114501Z.fail.html.gz git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66616 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* webrick: add the ability to override res, req creationnormal2018-12-191-0/+32
| | | | | | | | | | | | | | | | | | | | | | | | | So that a customized HTTPServer subclass can use it's own Request/Response classes. To apply the override, make a subclass of WEBrick::HTTPServer and override the `create_request_and_response(with_webrick_config)` method. The method should return an Array of [request, response]. To check whether the Server supports this method (i.e. when using older versions of WEBrick when needing this functionality), you can ask the server if it responds to the method server.respond_to?(:create_request_and_response) This is backportable. [ruby-core:69604] [Feature #11266] From: Julik Tarkhanov <me@julik.nl> git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66452 b2dd03c8-39d4-4d8f-98ff-823fe69b080e