husc 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1028) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +11 -0
  3. data/.rspec +3 -0
  4. data/.travis.yml +6 -0
  5. data/CODE_OF_CONDUCT.md +74 -0
  6. data/Gemfile +7 -0
  7. data/Gemfile.lock +64 -0
  8. data/LICENSE.txt +21 -0
  9. data/README.md +44 -0
  10. data/Rakefile +6 -0
  11. data/bin/console +14 -0
  12. data/bin/setup +8 -0
  13. data/husc.gemspec +29 -0
  14. data/lib/husc.rb +213 -0
  15. data/lib/husc/version.rb +3 -0
  16. data/vendor/bundle/bin/htmldiff +29 -0
  17. data/vendor/bundle/bin/ldiff +29 -0
  18. data/vendor/bundle/bin/nokogiri +27 -0
  19. data/vendor/bundle/bin/rake +27 -0
  20. data/vendor/bundle/bin/rspec +27 -0
  21. data/vendor/bundle/cache/connection_pool-2.2.2.gem +0 -0
  22. data/vendor/bundle/cache/diff-lcs-1.3.gem +0 -0
  23. data/vendor/bundle/cache/domain_name-0.5.20190701.gem +0 -0
  24. data/vendor/bundle/cache/http-cookie-1.0.3.gem +0 -0
  25. data/vendor/bundle/cache/mechanize-2.7.6.gem +0 -0
  26. data/vendor/bundle/cache/mime-types-3.3.1.gem +0 -0
  27. data/vendor/bundle/cache/mime-types-data-3.2019.1009.gem +0 -0
  28. data/vendor/bundle/cache/mini_portile2-2.4.0.gem +0 -0
  29. data/vendor/bundle/cache/net-http-digest_auth-1.4.1.gem +0 -0
  30. data/vendor/bundle/cache/net-http-persistent-3.1.0.gem +0 -0
  31. data/vendor/bundle/cache/nokogiri-1.10.7.gem +0 -0
  32. data/vendor/bundle/cache/ntlm-http-0.1.1.gem +0 -0
  33. data/vendor/bundle/cache/rake-12.3.3.gem +0 -0
  34. data/vendor/bundle/cache/rspec-3.9.0.gem +0 -0
  35. data/vendor/bundle/cache/rspec-core-3.9.1.gem +0 -0
  36. data/vendor/bundle/cache/rspec-expectations-3.9.0.gem +0 -0
  37. data/vendor/bundle/cache/rspec-mocks-3.9.1.gem +0 -0
  38. data/vendor/bundle/cache/rspec-support-3.9.2.gem +0 -0
  39. data/vendor/bundle/cache/unf-0.1.4.gem +0 -0
  40. data/vendor/bundle/cache/unf_ext-0.0.7.6.gem +0 -0
  41. data/vendor/bundle/cache/webrobots-0.1.2.gem +0 -0
  42. data/vendor/bundle/extensions/x86_64-darwin-18/2.6.0-static/nokogiri-1.10.7/gem.build_complete +0 -0
  43. data/vendor/bundle/extensions/x86_64-darwin-18/2.6.0-static/nokogiri-1.10.7/gem_make.out +153 -0
  44. data/vendor/bundle/extensions/x86_64-darwin-18/2.6.0-static/nokogiri-1.10.7/mkmf.log +562 -0
  45. data/vendor/bundle/extensions/x86_64-darwin-18/2.6.0-static/nokogiri-1.10.7/nokogiri/nokogiri.bundle +0 -0
  46. data/vendor/bundle/extensions/x86_64-darwin-18/2.6.0-static/unf_ext-0.0.7.6/gem.build_complete +0 -0
  47. data/vendor/bundle/extensions/x86_64-darwin-18/2.6.0-static/unf_ext-0.0.7.6/gem_make.out +38 -0
  48. data/vendor/bundle/extensions/x86_64-darwin-18/2.6.0-static/unf_ext-0.0.7.6/mkmf.log +35 -0
  49. data/vendor/bundle/extensions/x86_64-darwin-18/2.6.0-static/unf_ext-0.0.7.6/unf_ext.bundle +0 -0
  50. data/vendor/bundle/gems/connection_pool-2.2.2/.gitignore +4 -0
  51. data/vendor/bundle/gems/connection_pool-2.2.2/.travis.yml +10 -0
  52. data/vendor/bundle/gems/connection_pool-2.2.2/Changes.md +123 -0
  53. data/vendor/bundle/gems/connection_pool-2.2.2/Gemfile +3 -0
  54. data/vendor/bundle/gems/connection_pool-2.2.2/LICENSE +20 -0
  55. data/vendor/bundle/gems/connection_pool-2.2.2/README.md +107 -0
  56. data/vendor/bundle/gems/connection_pool-2.2.2/Rakefile +6 -0
  57. data/vendor/bundle/gems/connection_pool-2.2.2/connection_pool.gemspec +21 -0
  58. data/vendor/bundle/gems/connection_pool-2.2.2/lib/connection_pool.rb +161 -0
  59. data/vendor/bundle/gems/connection_pool-2.2.2/lib/connection_pool/monotonic_time.rb +66 -0
  60. data/vendor/bundle/gems/connection_pool-2.2.2/lib/connection_pool/timed_stack.rb +176 -0
  61. data/vendor/bundle/gems/connection_pool-2.2.2/lib/connection_pool/version.rb +3 -0
  62. data/vendor/bundle/gems/connection_pool-2.2.2/test/helper.rb +8 -0
  63. data/vendor/bundle/gems/connection_pool-2.2.2/test/test_connection_pool.rb +516 -0
  64. data/vendor/bundle/gems/connection_pool-2.2.2/test/test_connection_pool_timed_stack.rb +149 -0
  65. data/vendor/bundle/gems/diff-lcs-1.3/.rspec +1 -0
  66. data/vendor/bundle/gems/diff-lcs-1.3/Code-of-Conduct.md +74 -0
  67. data/vendor/bundle/gems/diff-lcs-1.3/Contributing.md +83 -0
  68. data/vendor/bundle/gems/diff-lcs-1.3/History.md +220 -0
  69. data/vendor/bundle/gems/diff-lcs-1.3/License.md +39 -0
  70. data/vendor/bundle/gems/diff-lcs-1.3/Manifest.txt +37 -0
  71. data/vendor/bundle/gems/diff-lcs-1.3/README.rdoc +84 -0
  72. data/vendor/bundle/gems/diff-lcs-1.3/Rakefile +57 -0
  73. data/vendor/bundle/gems/diff-lcs-1.3/autotest/discover.rb +1 -0
  74. data/vendor/bundle/gems/diff-lcs-1.3/bin/htmldiff +32 -0
  75. data/vendor/bundle/gems/diff-lcs-1.3/bin/ldiff +6 -0
  76. data/vendor/bundle/gems/diff-lcs-1.3/docs/COPYING.txt +339 -0
  77. data/vendor/bundle/gems/diff-lcs-1.3/docs/artistic.txt +127 -0
  78. data/vendor/bundle/gems/diff-lcs-1.3/lib/diff-lcs.rb +3 -0
  79. data/vendor/bundle/gems/diff-lcs-1.3/lib/diff/lcs.rb +725 -0
  80. data/vendor/bundle/gems/diff-lcs-1.3/lib/diff/lcs/array.rb +7 -0
  81. data/vendor/bundle/gems/diff-lcs-1.3/lib/diff/lcs/block.rb +37 -0
  82. data/vendor/bundle/gems/diff-lcs-1.3/lib/diff/lcs/callbacks.rb +322 -0
  83. data/vendor/bundle/gems/diff-lcs-1.3/lib/diff/lcs/change.rb +181 -0
  84. data/vendor/bundle/gems/diff-lcs-1.3/lib/diff/lcs/htmldiff.rb +149 -0
  85. data/vendor/bundle/gems/diff-lcs-1.3/lib/diff/lcs/hunk.rb +276 -0
  86. data/vendor/bundle/gems/diff-lcs-1.3/lib/diff/lcs/internals.rb +307 -0
  87. data/vendor/bundle/gems/diff-lcs-1.3/lib/diff/lcs/ldiff.rb +167 -0
  88. data/vendor/bundle/gems/diff-lcs-1.3/lib/diff/lcs/string.rb +5 -0
  89. data/vendor/bundle/gems/diff-lcs-1.3/spec/change_spec.rb +65 -0
  90. data/vendor/bundle/gems/diff-lcs-1.3/spec/diff_spec.rb +47 -0
  91. data/vendor/bundle/gems/diff-lcs-1.3/spec/fixtures/ds1.csv +50 -0
  92. data/vendor/bundle/gems/diff-lcs-1.3/spec/fixtures/ds2.csv +51 -0
  93. data/vendor/bundle/gems/diff-lcs-1.3/spec/hunk_spec.rb +72 -0
  94. data/vendor/bundle/gems/diff-lcs-1.3/spec/issues_spec.rb +49 -0
  95. data/vendor/bundle/gems/diff-lcs-1.3/spec/lcs_spec.rb +56 -0
  96. data/vendor/bundle/gems/diff-lcs-1.3/spec/ldiff_spec.rb +47 -0
  97. data/vendor/bundle/gems/diff-lcs-1.3/spec/patch_spec.rb +422 -0
  98. data/vendor/bundle/gems/diff-lcs-1.3/spec/sdiff_spec.rb +214 -0
  99. data/vendor/bundle/gems/diff-lcs-1.3/spec/spec_helper.rb +321 -0
  100. data/vendor/bundle/gems/diff-lcs-1.3/spec/traverse_balanced_spec.rb +310 -0
  101. data/vendor/bundle/gems/diff-lcs-1.3/spec/traverse_sequences_spec.rb +139 -0
  102. data/vendor/bundle/gems/domain_name-0.5.20190701/.document +5 -0
  103. data/vendor/bundle/gems/domain_name-0.5.20190701/.gitignore +17 -0
  104. data/vendor/bundle/gems/domain_name-0.5.20190701/.travis.yml +21 -0
  105. data/vendor/bundle/gems/domain_name-0.5.20190701/CHANGELOG.md +219 -0
  106. data/vendor/bundle/gems/domain_name-0.5.20190701/Gemfile +4 -0
  107. data/vendor/bundle/gems/domain_name-0.5.20190701/LICENSE.txt +78 -0
  108. data/vendor/bundle/gems/domain_name-0.5.20190701/README.md +67 -0
  109. data/vendor/bundle/gems/domain_name-0.5.20190701/Rakefile +111 -0
  110. data/vendor/bundle/gems/domain_name-0.5.20190701/data/public_suffix_list.dat +12985 -0
  111. data/vendor/bundle/gems/domain_name-0.5.20190701/domain_name.gemspec +36 -0
  112. data/vendor/bundle/gems/domain_name-0.5.20190701/lib/domain_name.rb +297 -0
  113. data/vendor/bundle/gems/domain_name-0.5.20190701/lib/domain_name/etld_data.rb +8787 -0
  114. data/vendor/bundle/gems/domain_name-0.5.20190701/lib/domain_name/etld_data.rb.erb +11 -0
  115. data/vendor/bundle/gems/domain_name-0.5.20190701/lib/domain_name/punycode.rb +283 -0
  116. data/vendor/bundle/gems/domain_name-0.5.20190701/lib/domain_name/version.rb +3 -0
  117. data/vendor/bundle/gems/domain_name-0.5.20190701/test/helper.rb +17 -0
  118. data/vendor/bundle/gems/domain_name-0.5.20190701/test/test_domain_name-punycode.rb +97 -0
  119. data/vendor/bundle/gems/domain_name-0.5.20190701/test/test_domain_name.rb +317 -0
  120. data/vendor/bundle/gems/domain_name-0.5.20190701/tool/gen_etld_data.rb +63 -0
  121. data/vendor/bundle/gems/http-cookie-1.0.3/.gitignore +17 -0
  122. data/vendor/bundle/gems/http-cookie-1.0.3/.travis.yml +21 -0
  123. data/vendor/bundle/gems/http-cookie-1.0.3/CHANGELOG.md +22 -0
  124. data/vendor/bundle/gems/http-cookie-1.0.3/Gemfile +4 -0
  125. data/vendor/bundle/gems/http-cookie-1.0.3/LICENSE.txt +24 -0
  126. data/vendor/bundle/gems/http-cookie-1.0.3/README.md +235 -0
  127. data/vendor/bundle/gems/http-cookie-1.0.3/Rakefile +20 -0
  128. data/vendor/bundle/gems/http-cookie-1.0.3/http-cookie.gemspec +34 -0
  129. data/vendor/bundle/gems/http-cookie-1.0.3/lib/http-cookie.rb +1 -0
  130. data/vendor/bundle/gems/http-cookie-1.0.3/lib/http/cookie.rb +685 -0
  131. data/vendor/bundle/gems/http-cookie-1.0.3/lib/http/cookie/ruby_compat.rb +63 -0
  132. data/vendor/bundle/gems/http-cookie-1.0.3/lib/http/cookie/scanner.rb +231 -0
  133. data/vendor/bundle/gems/http-cookie-1.0.3/lib/http/cookie/version.rb +5 -0
  134. data/vendor/bundle/gems/http-cookie-1.0.3/lib/http/cookie_jar.rb +344 -0
  135. data/vendor/bundle/gems/http-cookie-1.0.3/lib/http/cookie_jar/abstract_saver.rb +65 -0
  136. data/vendor/bundle/gems/http-cookie-1.0.3/lib/http/cookie_jar/abstract_store.rb +124 -0
  137. data/vendor/bundle/gems/http-cookie-1.0.3/lib/http/cookie_jar/cookiestxt_saver.rb +106 -0
  138. data/vendor/bundle/gems/http-cookie-1.0.3/lib/http/cookie_jar/hash_store.rb +163 -0
  139. data/vendor/bundle/gems/http-cookie-1.0.3/lib/http/cookie_jar/mozilla_store.rb +458 -0
  140. data/vendor/bundle/gems/http-cookie-1.0.3/lib/http/cookie_jar/yaml_saver.rb +76 -0
  141. data/vendor/bundle/gems/http-cookie-1.0.3/test/helper.rb +55 -0
  142. data/vendor/bundle/gems/http-cookie-1.0.3/test/mechanize.yml +101 -0
  143. data/vendor/bundle/gems/http-cookie-1.0.3/test/simplecov_start.rb +2 -0
  144. data/vendor/bundle/gems/http-cookie-1.0.3/test/test_http_cookie.rb +1122 -0
  145. data/vendor/bundle/gems/http-cookie-1.0.3/test/test_http_cookie_jar.rb +985 -0
  146. data/vendor/bundle/gems/mechanize-2.7.6/.autotest +6 -0
  147. data/vendor/bundle/gems/mechanize-2.7.6/.gitignore +15 -0
  148. data/vendor/bundle/gems/mechanize-2.7.6/.travis.yml +36 -0
  149. data/vendor/bundle/gems/mechanize-2.7.6/CHANGELOG.rdoc +999 -0
  150. data/vendor/bundle/gems/mechanize-2.7.6/EXAMPLES.rdoc +192 -0
  151. data/vendor/bundle/gems/mechanize-2.7.6/GUIDE.rdoc +168 -0
  152. data/vendor/bundle/gems/mechanize-2.7.6/Gemfile +6 -0
  153. data/vendor/bundle/gems/mechanize-2.7.6/LICENSE.rdoc +20 -0
  154. data/vendor/bundle/gems/mechanize-2.7.6/README.rdoc +77 -0
  155. data/vendor/bundle/gems/mechanize-2.7.6/Rakefile +41 -0
  156. data/vendor/bundle/gems/mechanize-2.7.6/examples/flickr_upload.rb +22 -0
  157. data/vendor/bundle/gems/mechanize-2.7.6/examples/mech-dump.rb +5 -0
  158. data/vendor/bundle/gems/mechanize-2.7.6/examples/proxy_req.rb +7 -0
  159. data/vendor/bundle/gems/mechanize-2.7.6/examples/rubygems.rb +23 -0
  160. data/vendor/bundle/gems/mechanize-2.7.6/examples/spider.rb +22 -0
  161. data/vendor/bundle/gems/mechanize-2.7.6/examples/wikipedia_links_to_philosophy.rb +159 -0
  162. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize.rb +1369 -0
  163. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/chunked_termination_error.rb +7 -0
  164. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/content_type_error.rb +13 -0
  165. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/cookie.rb +73 -0
  166. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/cookie_jar.rb +190 -0
  167. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/directory_saver.rb +77 -0
  168. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/download.rb +84 -0
  169. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/element_matcher.rb +68 -0
  170. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/element_not_found_error.rb +19 -0
  171. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/file.rb +93 -0
  172. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/file_connection.rb +17 -0
  173. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/file_request.rb +30 -0
  174. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/file_response.rb +80 -0
  175. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/file_saver.rb +39 -0
  176. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/form.rb +724 -0
  177. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/form/button.rb +6 -0
  178. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/form/check_box.rb +19 -0
  179. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/form/field.rb +124 -0
  180. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/form/file_upload.rb +21 -0
  181. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/form/hidden.rb +3 -0
  182. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/form/image_button.rb +19 -0
  183. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/form/keygen.rb +34 -0
  184. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/form/multi_select_list.rb +93 -0
  185. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/form/option.rb +51 -0
  186. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/form/radio_button.rb +69 -0
  187. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/form/reset.rb +3 -0
  188. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/form/select_list.rb +44 -0
  189. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/form/submit.rb +3 -0
  190. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/form/text.rb +3 -0
  191. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/form/textarea.rb +3 -0
  192. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/headers.rb +23 -0
  193. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/history.rb +82 -0
  194. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/http.rb +8 -0
  195. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/http/agent.rb +1281 -0
  196. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/http/auth_challenge.rb +65 -0
  197. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/http/auth_realm.rb +31 -0
  198. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/http/auth_store.rb +123 -0
  199. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/http/content_disposition_parser.rb +191 -0
  200. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/http/www_authenticate_parser.rb +178 -0
  201. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/image.rb +6 -0
  202. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/page.rb +648 -0
  203. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/page/base.rb +7 -0
  204. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/page/frame.rb +29 -0
  205. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/page/image.rb +182 -0
  206. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/page/label.rb +20 -0
  207. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/page/link.rb +108 -0
  208. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/page/meta_refresh.rb +78 -0
  209. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/parser.rb +182 -0
  210. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/pluggable_parsers.rb +179 -0
  211. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/prependable.rb +89 -0
  212. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/redirect_limit_reached_error.rb +19 -0
  213. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/redirect_not_get_or_head_error.rb +21 -0
  214. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/response_code_error.rb +26 -0
  215. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/response_read_error.rb +38 -0
  216. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/robots_disallowed_error.rb +28 -0
  217. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case.rb +330 -0
  218. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/.document +1 -0
  219. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/bad_chunking_servlet.rb +14 -0
  220. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/basic_auth_servlet.rb +24 -0
  221. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/content_type_servlet.rb +8 -0
  222. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/digest_auth_servlet.rb +33 -0
  223. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/file_upload_servlet.rb +20 -0
  224. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/form_servlet.rb +55 -0
  225. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/gzip_servlet.rb +32 -0
  226. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/header_servlet.rb +14 -0
  227. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/http_refresh_servlet.rb +8 -0
  228. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/infinite_redirect_servlet.rb +10 -0
  229. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/infinite_refresh_servlet.rb +9 -0
  230. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/many_cookies_as_string_servlet.rb +37 -0
  231. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/many_cookies_servlet.rb +33 -0
  232. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/modified_since_servlet.rb +21 -0
  233. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/ntlm_servlet.rb +30 -0
  234. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/one_cookie_no_spaces_servlet.rb +11 -0
  235. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/one_cookie_servlet.rb +11 -0
  236. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/quoted_value_cookie_servlet.rb +11 -0
  237. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/redirect_servlet.rb +13 -0
  238. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/referer_servlet.rb +12 -0
  239. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/refresh_with_empty_url.rb +15 -0
  240. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/refresh_without_url.rb +14 -0
  241. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/response_code_servlet.rb +15 -0
  242. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/robots_txt_servlet.rb +14 -0
  243. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/send_cookies_servlet.rb +19 -0
  244. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/server.rb +36 -0
  245. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/servlets.rb +58 -0
  246. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/verb_servlet.rb +11 -0
  247. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/unauthorized_error.rb +22 -0
  248. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/unsupported_scheme_error.rb +8 -0
  249. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/util.rb +161 -0
  250. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/version.rb +3 -0
  251. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/xml_file.rb +47 -0
  252. data/vendor/bundle/gems/mechanize-2.7.6/mechanize.gemspec +66 -0
  253. data/vendor/bundle/gems/mechanize-2.7.6/test/data/htpasswd +1 -0
  254. data/vendor/bundle/gems/mechanize-2.7.6/test/data/server.crt +16 -0
  255. data/vendor/bundle/gems/mechanize-2.7.6/test/data/server.csr +12 -0
  256. data/vendor/bundle/gems/mechanize-2.7.6/test/data/server.key +15 -0
  257. data/vendor/bundle/gems/mechanize-2.7.6/test/data/server.pem +15 -0
  258. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/alt_text.html +10 -0
  259. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/bad_form_test.html +9 -0
  260. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/button.jpg +0 -0
  261. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/canonical_uri.html +9 -0
  262. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/dir with spaces/foo.html +1 -0
  263. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/empty_form.html +6 -0
  264. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/file_upload.html +26 -0
  265. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/find_link.html +38 -0
  266. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/form_multi_select.html +16 -0
  267. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/form_multival.html +37 -0
  268. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/form_no_action.html +18 -0
  269. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/form_no_input_name.html +16 -0
  270. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/form_order_test.html +11 -0
  271. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/form_select.html +16 -0
  272. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/form_set_fields.html +14 -0
  273. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/form_test.html +188 -0
  274. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/frame_referer_test.html +10 -0
  275. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/frame_test.html +30 -0
  276. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/google.html +13 -0
  277. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/index.html +6 -0
  278. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/link with space.html +5 -0
  279. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/meta_cookie.html +11 -0
  280. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/no_title_test.html +6 -0
  281. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/noindex.html +9 -0
  282. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/rails_3_encoding_hack_form_test.html +27 -0
  283. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/relative/tc_relative_links.html +21 -0
  284. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/robots.html +8 -0
  285. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/tc_bad_charset.html +9 -0
  286. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/tc_bad_links.html +5 -0
  287. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/tc_base_link.html +8 -0
  288. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/tc_blank_form.html +11 -0
  289. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/tc_charset.html +6 -0
  290. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/tc_checkboxes.html +19 -0
  291. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/tc_encoded_links.html +5 -0
  292. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/tc_field_precedence.html +11 -0
  293. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/tc_follow_meta.html +8 -0
  294. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/tc_follow_meta_loop_1.html +8 -0
  295. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/tc_follow_meta_loop_2.html +8 -0
  296. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/tc_form_action.html +48 -0
  297. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/tc_links.html +21 -0
  298. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/tc_meta_in_body.html +9 -0
  299. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/tc_pretty_print.html +17 -0
  300. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/tc_referer.html +16 -0
  301. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/tc_relative_links.html +19 -0
  302. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/tc_textarea.html +23 -0
  303. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/test_click.html +11 -0
  304. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/unusual______.html +5 -0
  305. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize.rb +1361 -0
  306. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_cookie.rb +547 -0
  307. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_cookie_jar.rb +582 -0
  308. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_directory_saver.rb +59 -0
  309. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_download.rb +89 -0
  310. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_element_not_found_error.rb +15 -0
  311. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_file.rb +107 -0
  312. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_file_connection.rb +21 -0
  313. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_file_request.rb +25 -0
  314. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_file_response.rb +23 -0
  315. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_file_saver.rb +21 -0
  316. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_form.rb +1012 -0
  317. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_form_check_box.rb +48 -0
  318. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_form_encoding.rb +109 -0
  319. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_form_field.rb +77 -0
  320. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_form_file_upload.rb +20 -0
  321. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_form_image_button.rb +12 -0
  322. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_form_keygen.rb +32 -0
  323. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_form_multi_select_list.rb +97 -0
  324. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_form_option.rb +59 -0
  325. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_form_radio_button.rb +95 -0
  326. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_form_select_list.rb +80 -0
  327. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_form_textarea.rb +52 -0
  328. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_headers.rb +35 -0
  329. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_history.rb +103 -0
  330. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_http_agent.rb +1754 -0
  331. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_http_auth_challenge.rb +63 -0
  332. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_http_auth_realm.rb +55 -0
  333. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_http_auth_store.rb +232 -0
  334. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_http_content_disposition_parser.rb +139 -0
  335. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_http_www_authenticate_parser.rb +203 -0
  336. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_image.rb +8 -0
  337. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_link.rb +146 -0
  338. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_page.rb +280 -0
  339. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_page_encoding.rb +187 -0
  340. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_page_frame.rb +16 -0
  341. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_page_image.rb +190 -0
  342. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_page_link.rb +373 -0
  343. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_page_meta_refresh.rb +150 -0
  344. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_parser.rb +315 -0
  345. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_pluggable_parser.rb +67 -0
  346. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_redirect_limit_reached_error.rb +24 -0
  347. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_redirect_not_get_or_head_error.rb +14 -0
  348. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_response_read_error.rb +28 -0
  349. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_subclass.rb +22 -0
  350. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_util.rb +143 -0
  351. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_xml_file.rb +29 -0
  352. data/vendor/bundle/gems/mechanize-2.7.6/test/test_multi_select.rb +119 -0
  353. data/vendor/bundle/gems/mime-types-3.3.1/Code-of-Conduct.md +73 -0
  354. data/vendor/bundle/gems/mime-types-3.3.1/Contributing.md +143 -0
  355. data/vendor/bundle/gems/mime-types-3.3.1/History.md +240 -0
  356. data/vendor/bundle/gems/mime-types-3.3.1/Licence.md +25 -0
  357. data/vendor/bundle/gems/mime-types-3.3.1/Manifest.txt +31 -0
  358. data/vendor/bundle/gems/mime-types-3.3.1/README.rdoc +193 -0
  359. data/vendor/bundle/gems/mime-types-3.3.1/Rakefile +284 -0
  360. data/vendor/bundle/gems/mime-types-3.3.1/lib/mime-types.rb +3 -0
  361. data/vendor/bundle/gems/mime-types-3.3.1/lib/mime/type.rb +587 -0
  362. data/vendor/bundle/gems/mime-types-3.3.1/lib/mime/type/columnar.rb +57 -0
  363. data/vendor/bundle/gems/mime-types-3.3.1/lib/mime/types.rb +231 -0
  364. data/vendor/bundle/gems/mime-types-3.3.1/lib/mime/types/_columnar.rb +136 -0
  365. data/vendor/bundle/gems/mime-types-3.3.1/lib/mime/types/cache.rb +58 -0
  366. data/vendor/bundle/gems/mime-types-3.3.1/lib/mime/types/columnar.rb +3 -0
  367. data/vendor/bundle/gems/mime-types-3.3.1/lib/mime/types/container.rb +96 -0
  368. data/vendor/bundle/gems/mime-types-3.3.1/lib/mime/types/deprecations.rb +32 -0
  369. data/vendor/bundle/gems/mime-types-3.3.1/lib/mime/types/full.rb +19 -0
  370. data/vendor/bundle/gems/mime-types-3.3.1/lib/mime/types/loader.rb +146 -0
  371. data/vendor/bundle/gems/mime-types-3.3.1/lib/mime/types/logger.rb +39 -0
  372. data/vendor/bundle/gems/mime-types-3.3.1/lib/mime/types/registry.rb +90 -0
  373. data/vendor/bundle/gems/mime-types-3.3.1/test/bad-fixtures/malformed +9 -0
  374. data/vendor/bundle/gems/mime-types-3.3.1/test/fixture/json.json +1 -0
  375. data/vendor/bundle/gems/mime-types-3.3.1/test/fixture/old-data +9 -0
  376. data/vendor/bundle/gems/mime-types-3.3.1/test/fixture/yaml.yaml +55 -0
  377. data/vendor/bundle/gems/mime-types-3.3.1/test/minitest_helper.rb +13 -0
  378. data/vendor/bundle/gems/mime-types-3.3.1/test/test_mime_type.rb +610 -0
  379. data/vendor/bundle/gems/mime-types-3.3.1/test/test_mime_types.rb +169 -0
  380. data/vendor/bundle/gems/mime-types-3.3.1/test/test_mime_types_cache.rb +118 -0
  381. data/vendor/bundle/gems/mime-types-3.3.1/test/test_mime_types_class.rb +159 -0
  382. data/vendor/bundle/gems/mime-types-3.3.1/test/test_mime_types_lazy.rb +49 -0
  383. data/vendor/bundle/gems/mime-types-3.3.1/test/test_mime_types_loader.rb +32 -0
  384. data/vendor/bundle/gems/mime-types-data-3.2019.1009/Code-of-Conduct.md +75 -0
  385. data/vendor/bundle/gems/mime-types-data-3.2019.1009/Contributing.md +162 -0
  386. data/vendor/bundle/gems/mime-types-data-3.2019.1009/History.md +406 -0
  387. data/vendor/bundle/gems/mime-types-data-3.2019.1009/Licence.md +25 -0
  388. data/vendor/bundle/gems/mime-types-data-3.2019.1009/Manifest.txt +31 -0
  389. data/vendor/bundle/gems/mime-types-data-3.2019.1009/README.md +63 -0
  390. data/vendor/bundle/gems/mime-types-data-3.2019.1009/Rakefile +94 -0
  391. data/vendor/bundle/gems/mime-types-data-3.2019.1009/data/mime-types.json +1 -0
  392. data/vendor/bundle/gems/mime-types-data-3.2019.1009/data/mime.content_type.column +2215 -0
  393. data/vendor/bundle/gems/mime-types-data-3.2019.1009/data/mime.docs.column +2215 -0
  394. data/vendor/bundle/gems/mime-types-data-3.2019.1009/data/mime.encoding.column +2215 -0
  395. data/vendor/bundle/gems/mime-types-data-3.2019.1009/data/mime.flags.column +2215 -0
  396. data/vendor/bundle/gems/mime-types-data-3.2019.1009/data/mime.friendly.column +2215 -0
  397. data/vendor/bundle/gems/mime-types-data-3.2019.1009/data/mime.pext.column +2215 -0
  398. data/vendor/bundle/gems/mime-types-data-3.2019.1009/data/mime.use_instead.column +2215 -0
  399. data/vendor/bundle/gems/mime-types-data-3.2019.1009/data/mime.xrefs.column +2215 -0
  400. data/vendor/bundle/gems/mime-types-data-3.2019.1009/lib/mime-types-data.rb +3 -0
  401. data/vendor/bundle/gems/mime-types-data-3.2019.1009/lib/mime/types/data.rb +21 -0
  402. data/vendor/bundle/gems/mime-types-data-3.2019.1009/types/application.yaml +16361 -0
  403. data/vendor/bundle/gems/mime-types-data-3.2019.1009/types/audio.yaml +1644 -0
  404. data/vendor/bundle/gems/mime-types-data-3.2019.1009/types/chemical.yaml +71 -0
  405. data/vendor/bundle/gems/mime-types-data-3.2019.1009/types/conference.yaml +9 -0
  406. data/vendor/bundle/gems/mime-types-data-3.2019.1009/types/drawing.yaml +15 -0
  407. data/vendor/bundle/gems/mime-types-data-3.2019.1009/types/font.yaml +65 -0
  408. data/vendor/bundle/gems/mime-types-data-3.2019.1009/types/image.yaml +1069 -0
  409. data/vendor/bundle/gems/mime-types-data-3.2019.1009/types/message.yaml +200 -0
  410. data/vendor/bundle/gems/mime-types-data-3.2019.1009/types/model.yaml +302 -0
  411. data/vendor/bundle/gems/mime-types-data-3.2019.1009/types/multipart.yaml +179 -0
  412. data/vendor/bundle/gems/mime-types-data-3.2019.1009/types/text.yaml +1055 -0
  413. data/vendor/bundle/gems/mime-types-data-3.2019.1009/types/video.yaml +1070 -0
  414. data/vendor/bundle/gems/mime-types-data-3.2019.1009/types/world.yaml +8 -0
  415. data/vendor/bundle/gems/mini_portile2-2.4.0/.concourse.yml +83 -0
  416. data/vendor/bundle/gems/mini_portile2-2.4.0/.gitignore +7 -0
  417. data/vendor/bundle/gems/mini_portile2-2.4.0/.travis.yml +15 -0
  418. data/vendor/bundle/gems/mini_portile2-2.4.0/CHANGELOG.md +209 -0
  419. data/vendor/bundle/gems/mini_portile2-2.4.0/Gemfile +4 -0
  420. data/vendor/bundle/gems/mini_portile2-2.4.0/LICENSE.txt +20 -0
  421. data/vendor/bundle/gems/mini_portile2-2.4.0/README.md +245 -0
  422. data/vendor/bundle/gems/mini_portile2-2.4.0/Rakefile +29 -0
  423. data/vendor/bundle/gems/mini_portile2-2.4.0/appveyor.yml +25 -0
  424. data/vendor/bundle/gems/mini_portile2-2.4.0/concourse/mini_portile.yml +141 -0
  425. data/vendor/bundle/gems/mini_portile2-2.4.0/concourse/tasks/rake-test/task.ps1 +11 -0
  426. data/vendor/bundle/gems/mini_portile2-2.4.0/concourse/tasks/rake-test/task.sh +13 -0
  427. data/vendor/bundle/gems/mini_portile2-2.4.0/lib/mini_portile2.rb +3 -0
  428. data/vendor/bundle/gems/mini_portile2-2.4.0/lib/mini_portile2/mini_portile.rb +556 -0
  429. data/vendor/bundle/gems/mini_portile2-2.4.0/lib/mini_portile2/mini_portile_cmake.rb +40 -0
  430. data/vendor/bundle/gems/mini_portile2-2.4.0/lib/mini_portile2/version.rb +3 -0
  431. data/vendor/bundle/gems/mini_portile2-2.4.0/mini_portile2.gemspec +42 -0
  432. data/vendor/bundle/gems/mini_portile2-2.4.0/test/assets/git/config +4 -0
  433. data/vendor/bundle/gems/mini_portile2-2.4.0/test/assets/gpg-fixtures/data +1 -0
  434. data/vendor/bundle/gems/mini_portile2-2.4.0/test/assets/gpg-fixtures/data.asc +9 -0
  435. data/vendor/bundle/gems/mini_portile2-2.4.0/test/assets/gpg-fixtures/data.invalid.asc +9 -0
  436. data/vendor/bundle/gems/mini_portile2-2.4.0/test/assets/patch 1.diff +7 -0
  437. data/vendor/bundle/gems/mini_portile2-2.4.0/test/assets/test mini portile-1.0.0/configure +11 -0
  438. data/vendor/bundle/gems/mini_portile2-2.4.0/test/assets/test-cmake-1.0/CMakeLists.txt +7 -0
  439. data/vendor/bundle/gems/mini_portile2-2.4.0/test/assets/test-cmake-1.0/hello.c +4 -0
  440. data/vendor/bundle/gems/mini_portile2-2.4.0/test/assets/test-download-archive.tar.gz +1 -0
  441. data/vendor/bundle/gems/mini_portile2-2.4.0/test/helper.rb +60 -0
  442. data/vendor/bundle/gems/mini_portile2-2.4.0/test/test_cmake.rb +64 -0
  443. data/vendor/bundle/gems/mini_portile2-2.4.0/test/test_cook.rb +115 -0
  444. data/vendor/bundle/gems/mini_portile2-2.4.0/test/test_digest.rb +215 -0
  445. data/vendor/bundle/gems/mini_portile2-2.4.0/test/test_download.rb +71 -0
  446. data/vendor/bundle/gems/mini_portile2-2.4.0/test/test_proxy.rb +121 -0
  447. data/vendor/bundle/gems/net-http-digest_auth-1.4.1/.autotest +8 -0
  448. data/vendor/bundle/gems/net-http-digest_auth-1.4.1/.travis.yml +16 -0
  449. data/vendor/bundle/gems/net-http-digest_auth-1.4.1/History.txt +52 -0
  450. data/vendor/bundle/gems/net-http-digest_auth-1.4.1/Manifest.txt +10 -0
  451. data/vendor/bundle/gems/net-http-digest_auth-1.4.1/README.txt +44 -0
  452. data/vendor/bundle/gems/net-http-digest_auth-1.4.1/Rakefile +25 -0
  453. data/vendor/bundle/gems/net-http-digest_auth-1.4.1/lib/net/http/digest_auth.rb +173 -0
  454. data/vendor/bundle/gems/net-http-digest_auth-1.4.1/sample/auth_server.rb +47 -0
  455. data/vendor/bundle/gems/net-http-digest_auth-1.4.1/sample/net_http_example.rb +27 -0
  456. data/vendor/bundle/gems/net-http-digest_auth-1.4.1/test/test_net_http_digest_auth.rb +130 -0
  457. data/vendor/bundle/gems/net-http-persistent-3.1.0/.autotest +9 -0
  458. data/vendor/bundle/gems/net-http-persistent-3.1.0/.gemtest +0 -0
  459. data/vendor/bundle/gems/net-http-persistent-3.1.0/.travis.yml +24 -0
  460. data/vendor/bundle/gems/net-http-persistent-3.1.0/Gemfile +15 -0
  461. data/vendor/bundle/gems/net-http-persistent-3.1.0/History.txt +391 -0
  462. data/vendor/bundle/gems/net-http-persistent-3.1.0/Manifest.txt +14 -0
  463. data/vendor/bundle/gems/net-http-persistent-3.1.0/README.rdoc +82 -0
  464. data/vendor/bundle/gems/net-http-persistent-3.1.0/Rakefile +31 -0
  465. data/vendor/bundle/gems/net-http-persistent-3.1.0/lib/net/http/persistent.rb +1202 -0
  466. data/vendor/bundle/gems/net-http-persistent-3.1.0/lib/net/http/persistent/connection.rb +40 -0
  467. data/vendor/bundle/gems/net-http-persistent-3.1.0/lib/net/http/persistent/pool.rb +53 -0
  468. data/vendor/bundle/gems/net-http-persistent-3.1.0/lib/net/http/persistent/timed_stack_multi.rb +79 -0
  469. data/vendor/bundle/gems/net-http-persistent-3.1.0/test/test_net_http_persistent.rb +1621 -0
  470. data/vendor/bundle/gems/net-http-persistent-3.1.0/test/test_net_http_persistent_timed_stack_multi.rb +151 -0
  471. data/vendor/bundle/gems/nokogiri-1.10.7/LICENSE-DEPENDENCIES.md +1614 -0
  472. data/vendor/bundle/gems/nokogiri-1.10.7/LICENSE.md +9 -0
  473. data/vendor/bundle/gems/nokogiri-1.10.7/README.md +198 -0
  474. data/vendor/bundle/gems/nokogiri-1.10.7/bin/nokogiri +118 -0
  475. data/vendor/bundle/gems/nokogiri-1.10.7/dependencies.yml +74 -0
  476. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/.sitearchdir.-.nokogiri.time +0 -0
  477. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/Makefile +629 -0
  478. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/depend +358 -0
  479. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/extconf.rb +686 -0
  480. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/html_document.c +170 -0
  481. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/html_document.h +10 -0
  482. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/html_document.o +0 -0
  483. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/html_element_description.c +279 -0
  484. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/html_element_description.h +10 -0
  485. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/html_element_description.o +0 -0
  486. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/html_entity_lookup.c +32 -0
  487. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/html_entity_lookup.h +8 -0
  488. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/html_entity_lookup.o +0 -0
  489. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/html_sax_parser_context.c +116 -0
  490. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/html_sax_parser_context.h +11 -0
  491. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/html_sax_parser_context.o +0 -0
  492. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/html_sax_push_parser.c +87 -0
  493. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/html_sax_push_parser.h +9 -0
  494. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/html_sax_push_parser.o +0 -0
  495. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/nokogiri.bundle +0 -0
  496. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/nokogiri.c +141 -0
  497. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/nokogiri.h +121 -0
  498. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/nokogiri.o +0 -0
  499. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_attr.c +103 -0
  500. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_attr.h +9 -0
  501. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_attr.o +0 -0
  502. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_attribute_decl.c +70 -0
  503. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_attribute_decl.h +9 -0
  504. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_attribute_decl.o +0 -0
  505. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_cdata.c +62 -0
  506. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_cdata.h +9 -0
  507. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_cdata.o +0 -0
  508. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_comment.c +69 -0
  509. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_comment.h +9 -0
  510. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_comment.o +0 -0
  511. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_document.c +608 -0
  512. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_document.h +23 -0
  513. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_document.o +0 -0
  514. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_document_fragment.c +48 -0
  515. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_document_fragment.h +10 -0
  516. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_document_fragment.o +0 -0
  517. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_dtd.c +202 -0
  518. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_dtd.h +10 -0
  519. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_dtd.o +0 -0
  520. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_element_content.c +123 -0
  521. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_element_content.h +10 -0
  522. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_element_content.o +0 -0
  523. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_element_decl.c +69 -0
  524. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_element_decl.h +9 -0
  525. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_element_decl.o +0 -0
  526. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_encoding_handler.c +79 -0
  527. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_encoding_handler.h +8 -0
  528. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_encoding_handler.o +0 -0
  529. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_entity_decl.c +110 -0
  530. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_entity_decl.h +10 -0
  531. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_entity_decl.o +0 -0
  532. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_entity_reference.c +52 -0
  533. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_entity_reference.h +9 -0
  534. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_entity_reference.o +0 -0
  535. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_io.c +61 -0
  536. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_io.h +11 -0
  537. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_io.o +0 -0
  538. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_libxml2_hacks.c +112 -0
  539. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_libxml2_hacks.h +12 -0
  540. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_libxml2_hacks.o +0 -0
  541. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_namespace.c +111 -0
  542. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_namespace.h +14 -0
  543. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_namespace.o +0 -0
  544. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_node.c +1753 -0
  545. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_node.h +13 -0
  546. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_node.o +0 -0
  547. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_node_set.c +486 -0
  548. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_node_set.h +12 -0
  549. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_node_set.o +0 -0
  550. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_processing_instruction.c +56 -0
  551. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_processing_instruction.h +9 -0
  552. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_processing_instruction.o +0 -0
  553. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_reader.c +668 -0
  554. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_reader.h +10 -0
  555. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_reader.o +0 -0
  556. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_relax_ng.c +161 -0
  557. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_relax_ng.h +9 -0
  558. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_relax_ng.o +0 -0
  559. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_sax_parser.c +310 -0
  560. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_sax_parser.h +39 -0
  561. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_sax_parser.o +0 -0
  562. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_sax_parser_context.c +262 -0
  563. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_sax_parser_context.h +10 -0
  564. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_sax_parser_context.o +0 -0
  565. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_sax_push_parser.c +159 -0
  566. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_sax_push_parser.h +9 -0
  567. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_sax_push_parser.o +0 -0
  568. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_schema.c +205 -0
  569. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_schema.h +9 -0
  570. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_schema.o +0 -0
  571. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_syntax_error.c +64 -0
  572. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_syntax_error.h +13 -0
  573. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_syntax_error.o +0 -0
  574. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_text.c +52 -0
  575. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_text.h +9 -0
  576. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_text.o +0 -0
  577. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_xpath_context.c +298 -0
  578. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_xpath_context.h +10 -0
  579. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_xpath_context.o +0 -0
  580. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xslt_stylesheet.c +270 -0
  581. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xslt_stylesheet.h +14 -0
  582. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xslt_stylesheet.o +0 -0
  583. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri.rb +144 -0
  584. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/css.rb +27 -0
  585. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/css/node.rb +52 -0
  586. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/css/parser.rb +750 -0
  587. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/css/parser.y +272 -0
  588. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/css/parser_extras.rb +91 -0
  589. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/css/syntax_error.rb +7 -0
  590. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/css/tokenizer.rb +153 -0
  591. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/css/tokenizer.rex +55 -0
  592. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/css/xpath_visitor.rb +230 -0
  593. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/decorators/slop.rb +42 -0
  594. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/html.rb +37 -0
  595. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/html/builder.rb +35 -0
  596. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/html/document.rb +335 -0
  597. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/html/document_fragment.rb +49 -0
  598. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/html/element_description.rb +23 -0
  599. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/html/element_description_defaults.rb +671 -0
  600. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/html/entity_lookup.rb +13 -0
  601. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/html/sax/parser.rb +62 -0
  602. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/html/sax/parser_context.rb +16 -0
  603. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/html/sax/push_parser.rb +36 -0
  604. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/nokogiri.bundle +0 -0
  605. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/syntax_error.rb +4 -0
  606. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/version.rb +109 -0
  607. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml.rb +75 -0
  608. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/attr.rb +14 -0
  609. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/attribute_decl.rb +18 -0
  610. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/builder.rb +446 -0
  611. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/cdata.rb +11 -0
  612. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/character_data.rb +7 -0
  613. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/document.rb +285 -0
  614. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/document_fragment.rb +160 -0
  615. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/dtd.rb +32 -0
  616. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/element_content.rb +36 -0
  617. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/element_decl.rb +13 -0
  618. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/entity_decl.rb +19 -0
  619. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/entity_reference.rb +18 -0
  620. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/namespace.rb +13 -0
  621. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/node.rb +902 -0
  622. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/node/save_options.rb +61 -0
  623. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/node_set.rb +371 -0
  624. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/notation.rb +6 -0
  625. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/parse_options.rb +120 -0
  626. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/pp.rb +2 -0
  627. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/pp/character_data.rb +18 -0
  628. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/pp/node.rb +56 -0
  629. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/processing_instruction.rb +8 -0
  630. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/reader.rb +112 -0
  631. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/relax_ng.rb +32 -0
  632. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/sax.rb +4 -0
  633. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/sax/document.rb +171 -0
  634. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/sax/parser.rb +122 -0
  635. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/sax/parser_context.rb +16 -0
  636. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/sax/push_parser.rb +60 -0
  637. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/schema.rb +63 -0
  638. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/searchable.rb +230 -0
  639. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/syntax_error.rb +70 -0
  640. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/text.rb +9 -0
  641. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/xpath.rb +10 -0
  642. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/xpath/syntax_error.rb +11 -0
  643. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/xpath_context.rb +16 -0
  644. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xslt.rb +56 -0
  645. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xslt/stylesheet.rb +25 -0
  646. data/vendor/bundle/gems/nokogiri-1.10.7/lib/xsd/xmlparser/nokogiri.rb +102 -0
  647. data/vendor/bundle/gems/nokogiri-1.10.7/patches/libxml2/0001-Revert-Do-not-URI-escape-in-server-side-includes.patch +78 -0
  648. data/vendor/bundle/gems/nokogiri-1.10.7/patches/libxml2/0002-Remove-script-macro-support.patch +40 -0
  649. data/vendor/bundle/gems/nokogiri-1.10.7/patches/libxml2/0003-Update-entities-to-remove-handling-of-ssi.patch +44 -0
  650. data/vendor/bundle/gems/nokogiri-1.10.7/patches/libxml2/0004-libxml2.la-is-in-top_builddir.patch +25 -0
  651. data/vendor/bundle/gems/ntlm-http-0.1.1/README +25 -0
  652. data/vendor/bundle/gems/ntlm-http-0.1.1/Rakefile +66 -0
  653. data/vendor/bundle/gems/ntlm-http-0.1.1/examples/http.rb +86 -0
  654. data/vendor/bundle/gems/ntlm-http-0.1.1/examples/imap.rb +73 -0
  655. data/vendor/bundle/gems/ntlm-http-0.1.1/examples/smtp.rb +94 -0
  656. data/vendor/bundle/gems/ntlm-http-0.1.1/lib/net/ntlm.rb +774 -0
  657. data/vendor/bundle/gems/ntlm-http-0.1.1/lib/net/ntlm_http.rb +854 -0
  658. data/vendor/bundle/gems/ntlm-http-0.1.1/ntlm-http-0.1.1.gemspec +16 -0
  659. data/vendor/bundle/gems/ntlm-http-0.1.1/test/function_test.rb +111 -0
  660. data/vendor/bundle/gems/rake-12.3.3/CONTRIBUTING.rdoc +43 -0
  661. data/vendor/bundle/gems/rake-12.3.3/Gemfile +3 -0
  662. data/vendor/bundle/gems/rake-12.3.3/History.rdoc +2344 -0
  663. data/vendor/bundle/gems/rake-12.3.3/MIT-LICENSE +21 -0
  664. data/vendor/bundle/gems/rake-12.3.3/README.rdoc +156 -0
  665. data/vendor/bundle/gems/rake-12.3.3/Rakefile +41 -0
  666. data/vendor/bundle/gems/rake-12.3.3/azure-pipelines.yml +11 -0
  667. data/vendor/bundle/gems/rake-12.3.3/bin/bundle +105 -0
  668. data/vendor/bundle/gems/rake-12.3.3/bin/console +7 -0
  669. data/vendor/bundle/gems/rake-12.3.3/bin/rake +29 -0
  670. data/vendor/bundle/gems/rake-12.3.3/bin/rdoc +29 -0
  671. data/vendor/bundle/gems/rake-12.3.3/bin/rubocop +29 -0
  672. data/vendor/bundle/gems/rake-12.3.3/bin/setup +6 -0
  673. data/vendor/bundle/gems/rake-12.3.3/doc/command_line_usage.rdoc +158 -0
  674. data/vendor/bundle/gems/rake-12.3.3/doc/example/Rakefile1 +38 -0
  675. data/vendor/bundle/gems/rake-12.3.3/doc/example/Rakefile2 +35 -0
  676. data/vendor/bundle/gems/rake-12.3.3/doc/example/a.c +6 -0
  677. data/vendor/bundle/gems/rake-12.3.3/doc/example/b.c +6 -0
  678. data/vendor/bundle/gems/rake-12.3.3/doc/example/main.c +11 -0
  679. data/vendor/bundle/gems/rake-12.3.3/doc/glossary.rdoc +42 -0
  680. data/vendor/bundle/gems/rake-12.3.3/doc/jamis.rb +592 -0
  681. data/vendor/bundle/gems/rake-12.3.3/doc/proto_rake.rdoc +127 -0
  682. data/vendor/bundle/gems/rake-12.3.3/doc/rake.1 +156 -0
  683. data/vendor/bundle/gems/rake-12.3.3/doc/rakefile.rdoc +622 -0
  684. data/vendor/bundle/gems/rake-12.3.3/doc/rational.rdoc +151 -0
  685. data/vendor/bundle/gems/rake-12.3.3/exe/rake +27 -0
  686. data/vendor/bundle/gems/rake-12.3.3/lib/rake.rb +71 -0
  687. data/vendor/bundle/gems/rake-12.3.3/lib/rake/application.rb +824 -0
  688. data/vendor/bundle/gems/rake-12.3.3/lib/rake/backtrace.rb +24 -0
  689. data/vendor/bundle/gems/rake-12.3.3/lib/rake/clean.rb +78 -0
  690. data/vendor/bundle/gems/rake-12.3.3/lib/rake/cloneable.rb +17 -0
  691. data/vendor/bundle/gems/rake-12.3.3/lib/rake/cpu_counter.rb +107 -0
  692. data/vendor/bundle/gems/rake-12.3.3/lib/rake/default_loader.rb +15 -0
  693. data/vendor/bundle/gems/rake-12.3.3/lib/rake/dsl_definition.rb +195 -0
  694. data/vendor/bundle/gems/rake-12.3.3/lib/rake/early_time.rb +22 -0
  695. data/vendor/bundle/gems/rake-12.3.3/lib/rake/ext/core.rb +26 -0
  696. data/vendor/bundle/gems/rake-12.3.3/lib/rake/ext/string.rb +176 -0
  697. data/vendor/bundle/gems/rake-12.3.3/lib/rake/file_creation_task.rb +25 -0
  698. data/vendor/bundle/gems/rake-12.3.3/lib/rake/file_list.rb +435 -0
  699. data/vendor/bundle/gems/rake-12.3.3/lib/rake/file_task.rb +54 -0
  700. data/vendor/bundle/gems/rake-12.3.3/lib/rake/file_utils.rb +137 -0
  701. data/vendor/bundle/gems/rake-12.3.3/lib/rake/file_utils_ext.rb +145 -0
  702. data/vendor/bundle/gems/rake-12.3.3/lib/rake/invocation_chain.rb +57 -0
  703. data/vendor/bundle/gems/rake-12.3.3/lib/rake/invocation_exception_mixin.rb +17 -0
  704. data/vendor/bundle/gems/rake-12.3.3/lib/rake/late_time.rb +18 -0
  705. data/vendor/bundle/gems/rake-12.3.3/lib/rake/linked_list.rb +112 -0
  706. data/vendor/bundle/gems/rake-12.3.3/lib/rake/loaders/makefile.rb +54 -0
  707. data/vendor/bundle/gems/rake-12.3.3/lib/rake/multi_task.rb +14 -0
  708. data/vendor/bundle/gems/rake-12.3.3/lib/rake/name_space.rb +38 -0
  709. data/vendor/bundle/gems/rake-12.3.3/lib/rake/packagetask.rb +207 -0
  710. data/vendor/bundle/gems/rake-12.3.3/lib/rake/phony.rb +16 -0
  711. data/vendor/bundle/gems/rake-12.3.3/lib/rake/private_reader.rb +21 -0
  712. data/vendor/bundle/gems/rake-12.3.3/lib/rake/promise.rb +100 -0
  713. data/vendor/bundle/gems/rake-12.3.3/lib/rake/pseudo_status.rb +30 -0
  714. data/vendor/bundle/gems/rake-12.3.3/lib/rake/rake_module.rb +67 -0
  715. data/vendor/bundle/gems/rake-12.3.3/lib/rake/rake_test_loader.rb +27 -0
  716. data/vendor/bundle/gems/rake-12.3.3/lib/rake/rule_recursion_overflow_error.rb +20 -0
  717. data/vendor/bundle/gems/rake-12.3.3/lib/rake/scope.rb +43 -0
  718. data/vendor/bundle/gems/rake-12.3.3/lib/rake/task.rb +413 -0
  719. data/vendor/bundle/gems/rake-12.3.3/lib/rake/task_argument_error.rb +8 -0
  720. data/vendor/bundle/gems/rake-12.3.3/lib/rake/task_arguments.rb +109 -0
  721. data/vendor/bundle/gems/rake-12.3.3/lib/rake/task_manager.rb +324 -0
  722. data/vendor/bundle/gems/rake-12.3.3/lib/rake/tasklib.rb +12 -0
  723. data/vendor/bundle/gems/rake-12.3.3/lib/rake/testtask.rb +224 -0
  724. data/vendor/bundle/gems/rake-12.3.3/lib/rake/thread_history_display.rb +49 -0
  725. data/vendor/bundle/gems/rake-12.3.3/lib/rake/thread_pool.rb +163 -0
  726. data/vendor/bundle/gems/rake-12.3.3/lib/rake/trace_output.rb +23 -0
  727. data/vendor/bundle/gems/rake-12.3.3/lib/rake/version.rb +10 -0
  728. data/vendor/bundle/gems/rake-12.3.3/lib/rake/win32.rb +51 -0
  729. data/vendor/bundle/gems/rake-12.3.3/rake.gemspec +42 -0
  730. data/vendor/bundle/gems/rspec-3.9.0/LICENSE.md +27 -0
  731. data/vendor/bundle/gems/rspec-3.9.0/README.md +43 -0
  732. data/vendor/bundle/gems/rspec-3.9.0/lib/rspec.rb +3 -0
  733. data/vendor/bundle/gems/rspec-3.9.0/lib/rspec/version.rb +5 -0
  734. data/vendor/bundle/gems/rspec-core-3.9.1/.document +5 -0
  735. data/vendor/bundle/gems/rspec-core-3.9.1/.yardopts +8 -0
  736. data/vendor/bundle/gems/rspec-core-3.9.1/Changelog.md +2274 -0
  737. data/vendor/bundle/gems/rspec-core-3.9.1/LICENSE.md +26 -0
  738. data/vendor/bundle/gems/rspec-core-3.9.1/README.md +384 -0
  739. data/vendor/bundle/gems/rspec-core-3.9.1/exe/rspec +4 -0
  740. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/autorun.rb +3 -0
  741. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core.rb +186 -0
  742. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/backtrace_formatter.rb +65 -0
  743. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/bisect/coordinator.rb +62 -0
  744. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/bisect/example_minimizer.rb +173 -0
  745. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/bisect/fork_runner.rb +135 -0
  746. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/bisect/server.rb +61 -0
  747. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/bisect/shell_command.rb +126 -0
  748. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/bisect/shell_runner.rb +73 -0
  749. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/bisect/utilities.rb +58 -0
  750. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/configuration.rb +2336 -0
  751. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/configuration_options.rb +233 -0
  752. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/did_you_mean.rb +46 -0
  753. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/drb.rb +113 -0
  754. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/dsl.rb +98 -0
  755. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/example.rb +656 -0
  756. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/example_group.rb +889 -0
  757. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/example_status_persister.rb +235 -0
  758. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/filter_manager.rb +231 -0
  759. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/flat_map.rb +20 -0
  760. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/formatters.rb +272 -0
  761. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/formatters/base_bisect_formatter.rb +45 -0
  762. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/formatters/base_formatter.rb +70 -0
  763. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/formatters/base_text_formatter.rb +75 -0
  764. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/formatters/bisect_drb_formatter.rb +29 -0
  765. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/formatters/bisect_progress_formatter.rb +157 -0
  766. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/formatters/console_codes.rb +68 -0
  767. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/formatters/deprecation_formatter.rb +223 -0
  768. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/formatters/documentation_formatter.rb +102 -0
  769. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/formatters/exception_presenter.rb +508 -0
  770. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/formatters/failure_list_formatter.rb +23 -0
  771. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/formatters/fallback_message_formatter.rb +28 -0
  772. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/formatters/helpers.rb +110 -0
  773. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/formatters/html_formatter.rb +153 -0
  774. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/formatters/html_printer.rb +414 -0
  775. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/formatters/html_snippet_extractor.rb +120 -0
  776. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/formatters/json_formatter.rb +102 -0
  777. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/formatters/profile_formatter.rb +68 -0
  778. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/formatters/progress_formatter.rb +29 -0
  779. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/formatters/protocol.rb +182 -0
  780. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/formatters/snippet_extractor.rb +134 -0
  781. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/formatters/syntax_highlighter.rb +91 -0
  782. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/hooks.rb +632 -0
  783. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/invocations.rb +87 -0
  784. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/memoized_helpers.rb +554 -0
  785. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/metadata.rb +498 -0
  786. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/metadata_filter.rb +255 -0
  787. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/minitest_assertions_adapter.rb +31 -0
  788. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/mocking_adapters/flexmock.rb +31 -0
  789. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/mocking_adapters/mocha.rb +57 -0
  790. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/mocking_adapters/null.rb +14 -0
  791. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/mocking_adapters/rr.rb +31 -0
  792. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/mocking_adapters/rspec.rb +32 -0
  793. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/notifications.rb +521 -0
  794. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/option_parser.rb +316 -0
  795. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/ordering.rb +158 -0
  796. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/output_wrapper.rb +29 -0
  797. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/pending.rb +165 -0
  798. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/profiler.rb +34 -0
  799. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/project_initializer.rb +48 -0
  800. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/project_initializer/.rspec +1 -0
  801. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/project_initializer/spec/spec_helper.rb +100 -0
  802. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/rake_task.rb +188 -0
  803. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/reporter.rb +265 -0
  804. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/ruby_project.rb +53 -0
  805. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/runner.rb +204 -0
  806. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/sandbox.rb +37 -0
  807. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/set.rb +54 -0
  808. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/shared_context.rb +55 -0
  809. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/shared_example_group.rb +269 -0
  810. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/shell_escape.rb +49 -0
  811. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/test_unit_assertions_adapter.rb +30 -0
  812. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/version.rb +9 -0
  813. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/warnings.rb +40 -0
  814. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/world.rb +275 -0
  815. data/vendor/bundle/gems/rspec-expectations-3.9.0/.document +5 -0
  816. data/vendor/bundle/gems/rspec-expectations-3.9.0/.yardopts +6 -0
  817. data/vendor/bundle/gems/rspec-expectations-3.9.0/Changelog.md +1170 -0
  818. data/vendor/bundle/gems/rspec-expectations-3.9.0/LICENSE.md +25 -0
  819. data/vendor/bundle/gems/rspec-expectations-3.9.0/README.md +320 -0
  820. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/expectations.rb +82 -0
  821. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/expectations/block_snippet_extractor.rb +253 -0
  822. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/expectations/configuration.rb +215 -0
  823. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/expectations/expectation_target.rb +127 -0
  824. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/expectations/fail_with.rb +39 -0
  825. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/expectations/failure_aggregator.rb +194 -0
  826. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/expectations/handler.rb +170 -0
  827. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/expectations/minitest_integration.rb +58 -0
  828. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/expectations/syntax.rb +132 -0
  829. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/expectations/version.rb +8 -0
  830. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers.rb +1038 -0
  831. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/aliased_matcher.rb +116 -0
  832. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in.rb +52 -0
  833. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/all.rb +86 -0
  834. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/base_matcher.rb +193 -0
  835. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/be.rb +288 -0
  836. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/be_between.rb +77 -0
  837. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/be_instance_of.rb +26 -0
  838. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/be_kind_of.rb +20 -0
  839. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/be_within.rb +72 -0
  840. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/change.rb +428 -0
  841. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/compound.rb +276 -0
  842. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/contain_exactly.rb +302 -0
  843. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/cover.rb +24 -0
  844. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/eq.rb +40 -0
  845. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/eql.rb +34 -0
  846. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/equal.rb +81 -0
  847. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/exist.rb +90 -0
  848. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/has.rb +103 -0
  849. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/have_attributes.rb +114 -0
  850. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/include.rb +149 -0
  851. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/match.rb +106 -0
  852. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/operators.rb +128 -0
  853. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/output.rb +200 -0
  854. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/raise_error.rb +230 -0
  855. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/respond_to.rb +174 -0
  856. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/satisfy.rb +60 -0
  857. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/start_or_end_with.rb +94 -0
  858. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/throw_symbol.rb +132 -0
  859. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/yield.rb +432 -0
  860. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/composable.rb +171 -0
  861. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/dsl.rb +534 -0
  862. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/english_phrasing.rb +58 -0
  863. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/expecteds_for_multiple_diffs.rb +82 -0
  864. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/fail_matchers.rb +42 -0
  865. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/generated_descriptions.rb +41 -0
  866. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/matcher_delegator.rb +35 -0
  867. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/matcher_protocol.rb +99 -0
  868. data/vendor/bundle/gems/rspec-mocks-3.9.1/.document +5 -0
  869. data/vendor/bundle/gems/rspec-mocks-3.9.1/.yardopts +6 -0
  870. data/vendor/bundle/gems/rspec-mocks-3.9.1/Changelog.md +1133 -0
  871. data/vendor/bundle/gems/rspec-mocks-3.9.1/LICENSE.md +25 -0
  872. data/vendor/bundle/gems/rspec-mocks-3.9.1/README.md +463 -0
  873. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks.rb +130 -0
  874. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/any_instance.rb +11 -0
  875. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/any_instance/chain.rb +111 -0
  876. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/any_instance/error_generator.rb +31 -0
  877. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/any_instance/expect_chain_chain.rb +31 -0
  878. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/any_instance/expectation_chain.rb +50 -0
  879. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/any_instance/message_chains.rb +83 -0
  880. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/any_instance/proxy.rb +116 -0
  881. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/any_instance/recorder.rb +294 -0
  882. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/any_instance/stub_chain.rb +51 -0
  883. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/any_instance/stub_chain_chain.rb +23 -0
  884. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/argument_list_matcher.rb +100 -0
  885. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/argument_matchers.rb +322 -0
  886. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/configuration.rb +212 -0
  887. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/error_generator.rb +369 -0
  888. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/example_methods.rb +434 -0
  889. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/instance_method_stasher.rb +146 -0
  890. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/marshal_extension.rb +41 -0
  891. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/matchers/expectation_customization.rb +20 -0
  892. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/matchers/have_received.rb +134 -0
  893. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/matchers/receive.rb +132 -0
  894. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/matchers/receive_message_chain.rb +82 -0
  895. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/matchers/receive_messages.rb +77 -0
  896. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/message_chain.rb +87 -0
  897. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/message_expectation.rb +751 -0
  898. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/method_double.rb +287 -0
  899. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/method_reference.rb +202 -0
  900. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/minitest_integration.rb +68 -0
  901. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/mutate_const.rb +339 -0
  902. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/object_reference.rb +149 -0
  903. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/order_group.rb +81 -0
  904. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/proxy.rb +503 -0
  905. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/space.rb +238 -0
  906. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/standalone.rb +3 -0
  907. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/syntax.rb +325 -0
  908. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/targets.rb +124 -0
  909. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/test_double.rb +171 -0
  910. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/verifying_double.rb +129 -0
  911. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/verifying_message_expectation.rb +54 -0
  912. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/verifying_proxy.rb +220 -0
  913. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/version.rb +9 -0
  914. data/vendor/bundle/gems/rspec-support-3.9.2/Changelog.md +292 -0
  915. data/vendor/bundle/gems/rspec-support-3.9.2/LICENSE.md +23 -0
  916. data/vendor/bundle/gems/rspec-support-3.9.2/README.md +40 -0
  917. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support.rb +149 -0
  918. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/caller_filter.rb +83 -0
  919. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/comparable_version.rb +46 -0
  920. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/differ.rb +215 -0
  921. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/directory_maker.rb +63 -0
  922. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/encoded_string.rb +161 -0
  923. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/fuzzy_matcher.rb +48 -0
  924. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/hunk_generator.rb +47 -0
  925. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/matcher_definition.rb +42 -0
  926. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/method_signature_verifier.rb +438 -0
  927. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/mutex.rb +73 -0
  928. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/object_formatter.rb +275 -0
  929. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/recursive_const_methods.rb +76 -0
  930. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/reentrant_mutex.rb +53 -0
  931. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/ruby_features.rb +185 -0
  932. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/source.rb +75 -0
  933. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/source/location.rb +21 -0
  934. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/source/node.rb +110 -0
  935. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/source/token.rb +87 -0
  936. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/spec.rb +81 -0
  937. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/spec/deprecation_helpers.rb +64 -0
  938. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/spec/formatting_support.rb +9 -0
  939. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/spec/in_sub_process.rb +69 -0
  940. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/spec/library_wide_checks.rb +150 -0
  941. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/spec/shell_out.rb +89 -0
  942. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/spec/stderr_splitter.rb +67 -0
  943. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/spec/string_matcher.rb +46 -0
  944. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/spec/with_isolated_directory.rb +13 -0
  945. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/spec/with_isolated_stderr.rb +13 -0
  946. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/version.rb +7 -0
  947. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/warnings.rb +39 -0
  948. data/vendor/bundle/gems/unf-0.1.4/.gitignore +17 -0
  949. data/vendor/bundle/gems/unf-0.1.4/.travis.yml +17 -0
  950. data/vendor/bundle/gems/unf-0.1.4/CHANGELOG.md +46 -0
  951. data/vendor/bundle/gems/unf-0.1.4/Gemfile +4 -0
  952. data/vendor/bundle/gems/unf-0.1.4/LICENSE +24 -0
  953. data/vendor/bundle/gems/unf-0.1.4/README.md +39 -0
  954. data/vendor/bundle/gems/unf-0.1.4/Rakefile +21 -0
  955. data/vendor/bundle/gems/unf-0.1.4/lib/unf.rb +38 -0
  956. data/vendor/bundle/gems/unf-0.1.4/lib/unf/normalizer.rb +35 -0
  957. data/vendor/bundle/gems/unf-0.1.4/lib/unf/normalizer_cruby.rb +1 -0
  958. data/vendor/bundle/gems/unf-0.1.4/lib/unf/normalizer_jruby.rb +30 -0
  959. data/vendor/bundle/gems/unf-0.1.4/lib/unf/version.rb +3 -0
  960. data/vendor/bundle/gems/unf-0.1.4/test/helper.rb +18 -0
  961. data/vendor/bundle/gems/unf-0.1.4/test/normalization-test.txt +108816 -0
  962. data/vendor/bundle/gems/unf-0.1.4/test/test_unf.rb +41 -0
  963. data/vendor/bundle/gems/unf-0.1.4/unf.gemspec +35 -0
  964. data/vendor/bundle/gems/unf_ext-0.0.7.6/.document +5 -0
  965. data/vendor/bundle/gems/unf_ext-0.0.7.6/.gitignore +19 -0
  966. data/vendor/bundle/gems/unf_ext-0.0.7.6/.travis.yml +24 -0
  967. data/vendor/bundle/gems/unf_ext-0.0.7.6/CHANGELOG.md +42 -0
  968. data/vendor/bundle/gems/unf_ext-0.0.7.6/Gemfile +4 -0
  969. data/vendor/bundle/gems/unf_ext-0.0.7.6/LICENSE.txt +22 -0
  970. data/vendor/bundle/gems/unf_ext-0.0.7.6/README.md +57 -0
  971. data/vendor/bundle/gems/unf_ext-0.0.7.6/Rakefile +31 -0
  972. data/vendor/bundle/gems/unf_ext-0.0.7.6/ext/unf_ext/.sitearchdir.time +0 -0
  973. data/vendor/bundle/gems/unf_ext-0.0.7.6/ext/unf_ext/extconf.rb +50 -0
  974. data/vendor/bundle/gems/unf_ext-0.0.7.6/ext/unf_ext/unf.cc +75 -0
  975. data/vendor/bundle/gems/unf_ext-0.0.7.6/ext/unf_ext/unf.o +0 -0
  976. data/vendor/bundle/gems/unf_ext-0.0.7.6/ext/unf_ext/unf/normalizer.hh +139 -0
  977. data/vendor/bundle/gems/unf_ext-0.0.7.6/ext/unf_ext/unf/table.hh +13617 -0
  978. data/vendor/bundle/gems/unf_ext-0.0.7.6/ext/unf_ext/unf/trie/char_stream.hh +150 -0
  979. data/vendor/bundle/gems/unf_ext-0.0.7.6/ext/unf_ext/unf/trie/node.hh +25 -0
  980. data/vendor/bundle/gems/unf_ext-0.0.7.6/ext/unf_ext/unf/trie/searcher.hh +194 -0
  981. data/vendor/bundle/gems/unf_ext-0.0.7.6/ext/unf_ext/unf/util.hh +24 -0
  982. data/vendor/bundle/gems/unf_ext-0.0.7.6/ext/unf_ext/unf_ext.bundle +0 -0
  983. data/vendor/bundle/gems/unf_ext-0.0.7.6/lib/unf_ext.bundle +0 -0
  984. data/vendor/bundle/gems/unf_ext-0.0.7.6/lib/unf_ext.rb +5 -0
  985. data/vendor/bundle/gems/unf_ext-0.0.7.6/lib/unf_ext/version.rb +5 -0
  986. data/vendor/bundle/gems/unf_ext-0.0.7.6/test/helper.rb +18 -0
  987. data/vendor/bundle/gems/unf_ext-0.0.7.6/test/normalization-test.txt +112332 -0
  988. data/vendor/bundle/gems/unf_ext-0.0.7.6/test/test_unf_ext.rb +41 -0
  989. data/vendor/bundle/gems/unf_ext-0.0.7.6/unf_ext.gemspec +42 -0
  990. data/vendor/bundle/gems/webrobots-0.1.2/.document +4 -0
  991. data/vendor/bundle/gems/webrobots-0.1.2/.gitignore +11 -0
  992. data/vendor/bundle/gems/webrobots-0.1.2/.travis.yml +17 -0
  993. data/vendor/bundle/gems/webrobots-0.1.2/Gemfile +4 -0
  994. data/vendor/bundle/gems/webrobots-0.1.2/LICENSE.txt +24 -0
  995. data/vendor/bundle/gems/webrobots-0.1.2/README.rdoc +38 -0
  996. data/vendor/bundle/gems/webrobots-0.1.2/Rakefile +29 -0
  997. data/vendor/bundle/gems/webrobots-0.1.2/lib/webrobots.rb +213 -0
  998. data/vendor/bundle/gems/webrobots-0.1.2/lib/webrobots/nokogiri.rb +32 -0
  999. data/vendor/bundle/gems/webrobots-0.1.2/lib/webrobots/robotstxt.rb +752 -0
  1000. data/vendor/bundle/gems/webrobots-0.1.2/lib/webrobots/robotstxt.ry +487 -0
  1001. data/vendor/bundle/gems/webrobots-0.1.2/lib/webrobots/version.rb +3 -0
  1002. data/vendor/bundle/gems/webrobots-0.1.2/test/helper.rb +25 -0
  1003. data/vendor/bundle/gems/webrobots-0.1.2/test/simplecov_start.rb +9 -0
  1004. data/vendor/bundle/gems/webrobots-0.1.2/test/test_webrobots.rb +806 -0
  1005. data/vendor/bundle/gems/webrobots-0.1.2/test/vcr_cassettes/major_sites.yml +2006 -0
  1006. data/vendor/bundle/gems/webrobots-0.1.2/webrobots.gemspec +46 -0
  1007. data/vendor/bundle/specifications/connection_pool-2.2.2.gemspec +38 -0
  1008. data/vendor/bundle/specifications/diff-lcs-1.3.gemspec +61 -0
  1009. data/vendor/bundle/specifications/domain_name-0.5.20190701.gemspec +46 -0
  1010. data/vendor/bundle/specifications/http-cookie-1.0.3.gemspec +52 -0
  1011. data/vendor/bundle/specifications/mechanize-2.7.6.gemspec +69 -0
  1012. data/vendor/bundle/specifications/mime-types-3.3.1.gemspec +85 -0
  1013. data/vendor/bundle/specifications/mime-types-data-3.2019.1009.gemspec +60 -0
  1014. data/vendor/bundle/specifications/mini_portile2-2.4.0.gemspec +48 -0
  1015. data/vendor/bundle/specifications/net-http-digest_auth-1.4.1.gemspec +43 -0
  1016. data/vendor/bundle/specifications/net-http-persistent-3.1.0.gemspec +52 -0
  1017. data/vendor/bundle/specifications/nokogiri-1.10.7.gemspec +85 -0
  1018. data/vendor/bundle/specifications/ntlm-http-0.1.1.gemspec +24 -0
  1019. data/vendor/bundle/specifications/rake-12.3.3.gemspec +49 -0
  1020. data/vendor/bundle/specifications/rspec-3.9.0.gemspec +43 -0
  1021. data/vendor/bundle/specifications/rspec-core-3.9.1.gemspec +63 -0
  1022. data/vendor/bundle/specifications/rspec-expectations-3.9.0.gemspec +51 -0
  1023. data/vendor/bundle/specifications/rspec-mocks-3.9.1.gemspec +51 -0
  1024. data/vendor/bundle/specifications/rspec-support-3.9.2.gemspec +39 -0
  1025. data/vendor/bundle/specifications/unf-0.1.4.gemspec +46 -0
  1026. data/vendor/bundle/specifications/unf_ext-0.0.7.6.gemspec +51 -0
  1027. data/vendor/bundle/specifications/webrobots-0.1.2.gemspec +65 -0
  1028. metadata +1100 -0
@@ -0,0 +1,95 @@
1
+ require 'mechanize/test_case'
2
+
3
+ class TestMechanizeFormRadioButton < Mechanize::TestCase
4
+
5
+ def setup
6
+ super
7
+
8
+ @page = html_page <<-BODY
9
+ <form name="form1" method="post" action="/form_post">
10
+ <label for="blue">Blue</label>
11
+ <input type="radio" name="color" value="blue" id="blue">
12
+ <input type="radio" name="color" value="brown">
13
+ <input type="radio" name="color" value="green">
14
+ <input type="radio" name="color" value="red">
15
+ <input type="radio" name="color" value="yellow" id="a">
16
+ <input type="radio" name="color" value="yellow" id="b">
17
+
18
+ <input type="submit" value="Submit">
19
+ </form>
20
+ BODY
21
+
22
+ @form = @page.forms.first
23
+
24
+ @blue = @form.radiobutton_with :value => 'blue'
25
+ @brown = @form.radiobutton_with :value => 'brown'
26
+ @green = @form.radiobutton_with :value => 'green'
27
+ @red = @form.radiobutton_with :value => 'red'
28
+ @yellow = @form.radiobutton_with :id => 'a'
29
+ end
30
+
31
+ def test_check
32
+ @blue.check
33
+
34
+ assert @blue.checked?
35
+ refute @brown.checked?
36
+ refute @green.checked?
37
+ refute @red.checked?
38
+ refute @yellow.checked?
39
+ end
40
+
41
+ def test_check_multiple
42
+ @blue.check
43
+ @brown.check
44
+
45
+ refute @blue.checked?
46
+ assert @brown.checked?
47
+ refute @green.checked?
48
+ refute @red.checked?
49
+ refute @yellow.checked?
50
+ end
51
+
52
+ def test_click
53
+ @blue.click
54
+
55
+ assert @blue.checked?
56
+
57
+ @blue.click
58
+
59
+ refute @blue.checked?
60
+ end
61
+
62
+ def test_equals2
63
+ refute_equal @yellow, @red
64
+
65
+ other_yellow = @form.radiobutton_with :id => 'b'
66
+
67
+ assert_equal @yellow, other_yellow
68
+ end
69
+
70
+ def test_hash
71
+ refute_equal @yellow.hash, @red.hash
72
+
73
+ other_yellow = @form.radiobutton_with :id => 'b'
74
+
75
+ assert_equal @yellow.hash, other_yellow.hash
76
+ end
77
+
78
+ def test_label
79
+ assert_equal 'Blue', @blue.label.text
80
+ end
81
+
82
+ def test_uncheck
83
+ @blue.check
84
+
85
+ @blue.uncheck
86
+
87
+ refute @blue.checked?
88
+ refute @brown.checked?
89
+ refute @green.checked?
90
+ refute @red.checked?
91
+ refute @yellow.checked?
92
+ end
93
+
94
+ end
95
+
@@ -0,0 +1,80 @@
1
+ require 'mechanize/test_case'
2
+
3
+ class TestMechanizeFormSelectList < Mechanize::TestCase
4
+
5
+ def setup
6
+ super
7
+
8
+ page = html_page <<-BODY
9
+ <form name="form1" method="post" action="/form_post">
10
+ <select name="select">
11
+ <option value="1">Option 1</option>
12
+ <option value="2" selected>Option 2</option>
13
+ <option value="3">Option 3</option>
14
+ <option value="4">Option 4</option>
15
+ <option value="5">Option 5</option>
16
+ <option value="6">Option 6</option>
17
+ </select>
18
+ </form>
19
+ BODY
20
+
21
+ form = page.forms.first
22
+ @select = form.fields.first
23
+ end
24
+
25
+ def test_inspect
26
+ assert_match "value: 2", @select.inspect
27
+ end
28
+
29
+ def test_option_with
30
+ option = @select.option_with :value => '1'
31
+
32
+ assert_equal '1', option.value
33
+ end
34
+
35
+ def test_options_with
36
+ options = @select.options_with :value => /[12]/
37
+
38
+ assert_equal 2, options.length
39
+ end
40
+
41
+ def test_query_value
42
+ assert_equal [%w[select 2]], @select.query_value
43
+
44
+ @select.select_all
45
+
46
+ assert_equal [%w[select 6]], @select.query_value
47
+ end
48
+
49
+ def test_select_all
50
+ @select.select_all
51
+
52
+ assert_equal "6", @select.value
53
+ end
54
+
55
+ def test_select_none
56
+ @select.select_none
57
+
58
+ assert_equal "1", @select.value
59
+ end
60
+
61
+ def test_selected_options
62
+ assert_equal [@select.options[1]], @select.selected_options
63
+
64
+ @select.options.last.click
65
+
66
+ assert_equal [@select.options.last], @select.selected_options
67
+ end
68
+
69
+ def test_value
70
+ assert_equal "2", @select.value
71
+ end
72
+
73
+ def test_value_equals
74
+ @select.value = %w[a 1 2]
75
+
76
+ assert_equal "a", @select.value
77
+ end
78
+
79
+ end
80
+
@@ -0,0 +1,52 @@
1
+ require 'mechanize/test_case'
2
+
3
+ class TestMechanizeFormTextarea < Mechanize::TestCase
4
+ def setup
5
+ super
6
+
7
+ @page = @mech.get("http://localhost/tc_textarea.html")
8
+ end
9
+
10
+ def test_empty_text_area
11
+ form = @page.forms_with(:name => 'form1').first
12
+ assert_equal('', form.field_with(:name => 'text1').value)
13
+ form.text1 = 'Hello World'
14
+ assert_equal('Hello World', form.field_with(:name => 'text1').value)
15
+ page = @mech.submit(form)
16
+ assert_equal(1, page.links.length)
17
+ assert_equal('text1:Hello World', page.links[0].text)
18
+ end
19
+
20
+ def test_non_empty_textfield
21
+ form = @page.forms_with(:name => 'form2').first
22
+ assert_equal('sample text', form.field_with(:name => 'text1').value)
23
+ page = @mech.submit(form)
24
+ assert_equal(1, page.links.length)
25
+ assert_equal('text1:sample text', page.links[0].text)
26
+ end
27
+
28
+ def test_multi_textfield
29
+ form = @page.form_with(:name => 'form3')
30
+
31
+ assert_equal(2, form.fields_with(:name => 'text1').length)
32
+ assert_equal('', form.fields_with(:name => 'text1')[0].value)
33
+ assert_equal('sample text', form.fields_with(:name => 'text1')[1].value)
34
+
35
+ form.text1 = 'Hello World'
36
+
37
+ assert_equal('Hello World', form.fields_with(:name => 'text1')[0].value)
38
+ assert_equal('sample text', form.fields_with(:name => 'text1')[1].value)
39
+
40
+ page = @mech.submit(form)
41
+
42
+ assert_equal(2, page.links.length)
43
+
44
+ link = page.links_with(:text => 'text1:sample text')
45
+
46
+ assert_equal(1, link.length)
47
+
48
+ link = page.links_with(:text => 'text1:Hello World')
49
+
50
+ assert_equal(1, link.length)
51
+ end
52
+ end
@@ -0,0 +1,35 @@
1
+ require 'mechanize/test_case'
2
+
3
+ class TestMechanizeHeaders < Mechanize::TestCase
4
+ def setup
5
+ super
6
+
7
+ @headers = Mechanize::Headers.new
8
+ @headers['content-type'] = 'text/html'
9
+ @headers['Content-encoding'] = 'gzip'
10
+ @headers['SERVER'] = 'Apache/2.2'
11
+ end
12
+
13
+ def test_aref
14
+ assert_equal('Apache/2.2', @headers['server'])
15
+ assert_equal('text/html', @headers['Content-Type'])
16
+ end
17
+
18
+ def test_key?
19
+ assert_equal(true, @headers.key?('content-Encoding'))
20
+ end
21
+
22
+ def test_canonical_each
23
+ all_keys = ['Content-Type', 'Content-Encoding', 'Server']
24
+ keys = all_keys.dup
25
+ @headers.canonical_each { |key, value|
26
+ case keys.delete(key)
27
+ when *all_keys
28
+ # ok
29
+ else
30
+ flunk "unexpected key: #{key}"
31
+ end
32
+ }
33
+ assert_equal([], keys)
34
+ end
35
+ end
@@ -0,0 +1,103 @@
1
+ require 'mechanize/test_case'
2
+
3
+ class TestMechanizeHistory < Mechanize::TestCase
4
+
5
+ def setup
6
+ super
7
+
8
+ @uri = URI 'http://example/'
9
+ @uri2 = @uri + '/a'
10
+ @history = Mechanize::History.new
11
+ end
12
+
13
+ def test_initialize
14
+ assert_empty @history
15
+ end
16
+
17
+ def test_clear
18
+ @history.push :page, @uri
19
+
20
+ @history.clear
21
+
22
+ assert_empty @history
23
+ end
24
+
25
+ def test_pop
26
+ assert_nil @history.pop
27
+
28
+ @history.push :page1, @uri
29
+ @history.push :page2, @uri2
30
+
31
+ assert_equal :page2, @history.pop
32
+ refute_empty @history
33
+ end
34
+
35
+ def test_push
36
+ p1 = page @uri
37
+
38
+ obj = @history.push p1
39
+
40
+ assert_same @history, obj
41
+ assert_equal 1, @history.length
42
+
43
+ p2 = page @uri2
44
+
45
+ @history.push p2
46
+
47
+ assert_equal 2, @history.length
48
+ end
49
+
50
+ def test_push_max_size
51
+ @history = Mechanize::History.new 2
52
+
53
+ @history.push :page1, @uri
54
+
55
+ assert_equal 1, @history.length
56
+
57
+ @history.push :page2, @uri
58
+
59
+ assert_equal 2, @history.length
60
+
61
+ @history.push :page3, @uri
62
+
63
+ assert_equal 2, @history.length
64
+ end
65
+
66
+ def test_push_uri
67
+ obj = @history.push :page, @uri
68
+
69
+ assert_same @history, obj
70
+ assert_equal 1, @history.length
71
+
72
+ @history.push :page2, @uri
73
+
74
+ assert_equal 2, @history.length
75
+ end
76
+
77
+ def test_shift
78
+ assert_nil @history.shift
79
+
80
+ @history.push :page1, @uri
81
+ @history.push :page2, @uri2
82
+
83
+ page = @history.shift
84
+
85
+ assert_equal :page1, page
86
+ refute_empty @history
87
+
88
+ @history.shift
89
+
90
+ assert_empty @history
91
+ end
92
+
93
+ def test_visited_eh
94
+ refute @history.visited? @uri
95
+
96
+ @history.push page @uri
97
+
98
+ assert @history.visited? URI('http://example')
99
+ assert @history.visited? URI('http://example/')
100
+ end
101
+
102
+ end
103
+
@@ -0,0 +1,1754 @@
1
+ # coding: utf-8
2
+
3
+ require 'mechanize/test_case'
4
+
5
+ class TestMechanizeHttpAgent < Mechanize::TestCase
6
+
7
+ def setup
8
+ super
9
+
10
+ @agent = @mech.agent
11
+
12
+ @uri = URI.parse 'http://example/'
13
+
14
+ @req = Net::HTTP::Get.new '/'
15
+ @res = Net::HTTPOK.allocate
16
+ @res.instance_variable_set :@code, 200
17
+ @res.instance_variable_set :@header, {}
18
+
19
+ @headers = if RUBY_VERSION >= '2.0.0' then
20
+ %w[accept accept-encoding user-agent]
21
+ else
22
+ %w[accept user-agent]
23
+ end
24
+ end
25
+
26
+ def auth_realm uri, scheme, type
27
+ base_uri = uri + '/'
28
+ realm = Mechanize::HTTP::AuthRealm.new scheme, base_uri, 'r'
29
+ @agent.authenticate_methods[base_uri][type] << realm
30
+
31
+ realm
32
+ end
33
+
34
+ def jruby_zlib?
35
+ if RUBY_ENGINE == 'jruby'
36
+ meth = caller[0][/`(\w+)/, 1]
37
+ warn "#{meth}: skipped because how Zlib handles error is different in JRuby"
38
+ true
39
+ else
40
+ false
41
+ end
42
+ end
43
+
44
+ def test_agent_is_named
45
+ assert_equal 'mechanize', Mechanize::HTTP::Agent.new.http.name
46
+ assert_equal 'unique', Mechanize::HTTP::Agent.new('unique').http.name
47
+ end
48
+
49
+ def test_auto_io
50
+ Tempfile.open 'input' do |input_io|
51
+ input_io.binmode
52
+ input_io.write '12345'
53
+ input_io.rewind
54
+
55
+ out_io = @agent.auto_io @NAME, 1024, input_io
56
+
57
+ assert_equal '12345', out_io.string
58
+
59
+ assert_equal Encoding::BINARY, out_io.string.encoding if
60
+ Object.const_defined? :Encoding
61
+ end
62
+ end
63
+
64
+ def test_auto_io_chunk
65
+ Tempfile.open 'input' do |input_io|
66
+ chunks = []
67
+
68
+ input_io.binmode
69
+ input_io.write '12345'
70
+ input_io.rewind
71
+
72
+ @agent.auto_io @NAME, 1, input_io do |chunk|
73
+ chunks << chunk
74
+ end
75
+
76
+ assert_equal %w[1 2 3 4 5], chunks
77
+ end
78
+ end
79
+
80
+ def test_auto_io_tempfile
81
+ @agent.max_file_buffer = 3
82
+
83
+ Tempfile.open 'input' do |input_io|
84
+ input_io.binmode
85
+ input_io.write '12345'
86
+ input_io.rewind
87
+
88
+ out_io = @agent.auto_io @NAME, 1, input_io
89
+
90
+ result = out_io.read
91
+ assert_equal '12345', result
92
+
93
+ assert_equal Encoding::BINARY, result.encoding if
94
+ Object.const_defined? :Encoding
95
+ end
96
+ end
97
+
98
+ def test_auto_io_yield
99
+ Tempfile.open 'input' do |input_io|
100
+ input_io.binmode
101
+ input_io.write '12345'
102
+ input_io.rewind
103
+
104
+ out_io = @agent.auto_io @NAME, 1024, input_io do |chunk|
105
+ "x#{chunk}"
106
+ end
107
+
108
+ assert_equal 'x12345', out_io.string
109
+ end
110
+ end
111
+
112
+ def test_certificate_equals
113
+ cert_path = File.expand_path '../data/server.crt', __FILE__
114
+ cert = OpenSSL::X509::Certificate.new File.read cert_path
115
+
116
+ @agent.certificate = cert
117
+
118
+ assert_equal cert.to_pem, @agent.certificate.to_pem
119
+ end
120
+
121
+ def test_certificate_equals_file
122
+ cert_path = File.expand_path '../data/server.crt', __FILE__
123
+
124
+ cert = OpenSSL::X509::Certificate.new File.read cert_path
125
+
126
+ @agent.certificate = cert_path
127
+
128
+ assert_equal cert.to_pem, @agent.certificate.to_pem
129
+ end
130
+
131
+ def test_connection_for_file
132
+ uri = URI.parse 'file:///nonexistent'
133
+ conn = @agent.connection_for uri
134
+
135
+ assert_equal Mechanize::FileConnection.new, conn
136
+ end
137
+
138
+ def test_connection_for_http
139
+ conn = @agent.connection_for @uri
140
+
141
+ assert_equal @agent.http, conn
142
+ end
143
+
144
+ def test_disable_keep_alive
145
+ @agent.disable_keep_alive @req
146
+
147
+ refute @req['connection']
148
+ end
149
+
150
+ def test_disable_keep_alive_no
151
+ @agent.keep_alive = false
152
+
153
+ @agent.disable_keep_alive @req
154
+
155
+ assert_equal 'close', @req['connection']
156
+ end
157
+
158
+ def test_enable_gzip
159
+ @agent.enable_gzip @req
160
+
161
+ assert_equal 'gzip,deflate,identity', @req['accept-encoding']
162
+ end
163
+
164
+ def test_enable_gzip_no
165
+ @agent.gzip_enabled = false
166
+
167
+ @agent.enable_gzip @req
168
+
169
+ assert_equal 'identity', @req['accept-encoding']
170
+ end
171
+
172
+ def test_fetch_file_nonexistent
173
+ in_tmpdir do
174
+ nonexistent = File.join Dir.pwd, 'nonexistent'
175
+
176
+ uri = URI.parse "file:///#{nonexistent}"
177
+
178
+ e = assert_raises Mechanize::ResponseCodeError do
179
+ @agent.fetch uri
180
+ end
181
+
182
+ assert_match "404 => Net::HTTPNotFound for #{uri}", e.message
183
+ end
184
+ end
185
+
186
+ def test_fetch_file_plus
187
+ Tempfile.open '++plus++' do |io|
188
+ content = 'plusses +++'
189
+ io.write content
190
+ io.rewind
191
+
192
+ uri = URI.parse "file://#{Mechanize::Util.uri_escape io.path}"
193
+
194
+ page = @agent.fetch uri
195
+
196
+ assert_equal content, page.body
197
+ assert_kind_of Mechanize::File, page
198
+ end
199
+ end
200
+
201
+ def test_fetch_file_space
202
+ foo = File.expand_path("../htdocs/dir with spaces/foo.html", __FILE__)
203
+
204
+ uri = URI.parse "file://#{Mechanize::Util.uri_escape foo}"
205
+
206
+ page = @agent.fetch uri
207
+
208
+ assert_equal File.read(foo), page.body
209
+ assert_kind_of Mechanize::Page, page
210
+ end
211
+
212
+ def test_fetch_head_gzip
213
+ uri = @uri + '/gzip?file=index.html'
214
+
215
+ page = @agent.fetch uri, :head
216
+
217
+ assert_kind_of Mechanize::Page, page
218
+ end
219
+
220
+ def test_fetch_hooks
221
+ @agent.pre_connect_hooks << proc do |agent, request|
222
+ assert_equal '/index.html', request.path
223
+ assert_equal @agent, agent
224
+ end
225
+
226
+ @agent.post_connect_hooks << proc do |agent, uri, response, body|
227
+ assert_equal @agent, agent
228
+ assert_equal URI('http://example/index.html'), uri
229
+ assert_equal '200', response.code
230
+ assert_kind_of String, body
231
+ end
232
+
233
+ @agent.fetch URI 'http://example/index.html'
234
+ end
235
+
236
+ def test_fetch_ignore_bad_chunking
237
+ @agent.ignore_bad_chunking = true
238
+
239
+ file = @agent.fetch 'http://example/bad_chunking'
240
+
241
+ assert_equal '0123456789', file.content
242
+ end
243
+
244
+ def test_fetch_post_connect_hook
245
+ response = nil
246
+ @agent.post_connect_hooks << lambda { |_, _, res, _| response = res }
247
+
248
+ @agent.fetch 'http://localhost/'
249
+
250
+ assert response
251
+ end
252
+
253
+ def test_fetch_redirect_header
254
+ page = @agent.fetch('http://example/redirect', :get,
255
+ 'X-Location' => '/http_headers',
256
+ 'Range' => 'bytes=0-99999')
257
+
258
+ assert_match 'range|bytes=0-999', page.body
259
+ end
260
+
261
+ def test_fetch_server_error
262
+ e = assert_raises Mechanize::ResponseCodeError do
263
+ @mech.get 'http://localhost/response_code?code=500'
264
+ end
265
+
266
+ assert_equal '500', e.response_code
267
+ end
268
+
269
+ def test_fetch_allowed_error_codes
270
+ @agent.allowed_error_codes = ['500']
271
+
272
+ page = @mech.get 'http://localhost/response_code?code=500'
273
+
274
+ assert_equal '500', page.code
275
+ end
276
+
277
+ def test_fetch_allowed_error_codes_int
278
+ @agent.allowed_error_codes = [500]
279
+
280
+ page = @mech.get 'http://localhost/response_code?code=500'
281
+
282
+ assert_equal '500', page.code
283
+ end
284
+
285
+ def test_get_meta_refresh_header_follow_self
286
+ @agent.follow_meta_refresh = true
287
+ @agent.follow_meta_refresh_self = true
288
+
289
+ page = Mechanize::Page.new(@uri, nil, '', 200, @mech)
290
+ @res.instance_variable_set :@header, 'refresh' => ['0']
291
+
292
+ refresh = @agent.get_meta_refresh @res, @uri, page
293
+
294
+ assert_equal [0.0, URI('http://example/')], refresh
295
+ end
296
+
297
+ def test_get_meta_refresh_header_no_follow
298
+ page = Mechanize::Page.new(@uri, nil, '', 200, @mech)
299
+ @res.instance_variable_set :@header, 'refresh' => ['0']
300
+
301
+ refresh = @agent.get_meta_refresh @res, @uri, page
302
+
303
+ assert_nil refresh
304
+ end
305
+
306
+ def test_get_meta_refresh_header_no_follow_self
307
+ @agent.follow_meta_refresh = true
308
+
309
+ page = Mechanize::Page.new(@uri, nil, '', 200, @mech)
310
+ @res.instance_variable_set :@header, 'refresh' => ['0']
311
+
312
+ refresh = @agent.get_meta_refresh @res, @uri, page
313
+
314
+ assert_nil refresh
315
+ end
316
+
317
+ def test_get_meta_refresh_meta_follow_self
318
+ @agent.follow_meta_refresh = true
319
+ @agent.follow_meta_refresh_self = true
320
+
321
+ body = <<-BODY
322
+ <title></title>
323
+ <meta http-equiv="refresh" content="0">
324
+ BODY
325
+
326
+ page = Mechanize::Page.new(@uri, nil, body, 200, @mech)
327
+
328
+ refresh = @agent.get_meta_refresh @res, @uri, page
329
+
330
+ assert_equal [0, nil], refresh
331
+ end
332
+
333
+ def test_get_meta_refresh_meta_no_follow
334
+ body = <<-BODY
335
+ <title></title>
336
+ <meta http-equiv="refresh" content="0">
337
+ BODY
338
+
339
+ page = Mechanize::Page.new(@uri, nil, body, 200, @mech)
340
+
341
+ refresh = @agent.get_meta_refresh @res, @uri, page
342
+
343
+ assert_nil refresh
344
+ end
345
+
346
+ def test_get_meta_refresh_meta_no_follow_self
347
+ @agent.follow_meta_refresh = true
348
+
349
+ body = <<-BODY
350
+ <title></title>
351
+ <meta http-equiv="refresh" content="0">
352
+ BODY
353
+
354
+ page = Mechanize::Page.new(@uri, nil, body, 200, @mech)
355
+
356
+ refresh = @agent.get_meta_refresh @res, @uri, page
357
+
358
+ assert_nil refresh
359
+ end
360
+
361
+ def test_get_robots
362
+ robotstxt = @agent.get_robots 'http://localhost/robots.txt'
363
+ refute_equal '', robotstxt
364
+
365
+ robotstxt = @agent.get_robots 'http://localhost/response_code?code=404'
366
+ assert_equal '', robotstxt
367
+ end
368
+
369
+ def test_hook_content_encoding_response
370
+ @mech.content_encoding_hooks << lambda{|agent, uri, response, response_body_io|
371
+ response['content-encoding'] = 'gzip' if response['content-encoding'] == 'agzip'}
372
+
373
+ @res.instance_variable_set :@header, 'content-encoding' => %w[agzip]
374
+ body_io = StringIO.new 'part'
375
+ @agent.hook_content_encoding @res, @uri, body_io
376
+
377
+ assert_equal 'gzip', @res['content-encoding']
378
+ end
379
+
380
+ def test_http_request_file
381
+ uri = URI.parse 'file:///nonexistent'
382
+ request = @agent.http_request uri, :get
383
+
384
+ assert_kind_of Mechanize::FileRequest, request
385
+ assert_equal '/nonexistent', request.path
386
+ end
387
+
388
+ def test_http_request_get
389
+ request = @agent.http_request @uri, :get
390
+
391
+ assert_kind_of Net::HTTP::Get, request
392
+ assert_equal '/', request.path
393
+ end
394
+
395
+ def test_http_request_post
396
+ request = @agent.http_request @uri, :post
397
+
398
+ assert_kind_of Net::HTTP::Post, request
399
+ assert_equal '/', request.path
400
+ end
401
+
402
+ def test_idle_timeout_equals
403
+ @agent.idle_timeout = 1
404
+
405
+ assert_equal 1, @agent.http.idle_timeout
406
+ end
407
+
408
+ def test_inflate
409
+ body_io = StringIO.new "x\x9C+H,*\x01\x00\x04?\x01\xB8"
410
+
411
+ result = @agent.inflate body_io
412
+
413
+ assert_equal 'part', result.read
414
+ end
415
+
416
+ def test_post_connect
417
+ @agent.post_connect_hooks << proc { |agent, uri, response, body|
418
+ assert_equal @agent, agent
419
+ assert_equal @res, response
420
+ assert_equal 'body', body
421
+ throw :called
422
+ }
423
+
424
+ io = StringIO.new 'body'
425
+
426
+ assert_throws :called do
427
+ @agent.post_connect @uri, @res, io
428
+ end
429
+
430
+ assert_equal 0, io.pos
431
+ end
432
+
433
+ def test_pre_connect
434
+ @agent.pre_connect_hooks << proc { |agent, request|
435
+ assert_equal @agent, agent
436
+ assert_equal @req, request
437
+ throw :called
438
+ }
439
+
440
+ assert_throws :called do
441
+ @agent.pre_connect @req
442
+ end
443
+ end
444
+
445
+ def test_request_add_headers
446
+ @agent.request_add_headers @req, 'Content-Length' => 300
447
+
448
+ assert_equal '300', @req['content-length']
449
+ end
450
+
451
+ def test_request_add_headers_etag
452
+ @agent.request_add_headers @req, :etag => '300'
453
+
454
+ assert_equal '300', @req['etag']
455
+ end
456
+
457
+ def test_request_add_headers_if_modified_since
458
+ @agent.request_add_headers @req, :if_modified_since => 'some_date'
459
+
460
+ assert_equal 'some_date', @req['if-modified-since']
461
+ end
462
+
463
+ def test_request_add_headers_none
464
+ @agent.request_add_headers @req
465
+
466
+ assert_equal @headers, @req.to_hash.keys.sort
467
+ end
468
+
469
+ def test_request_add_headers_request_headers
470
+ @agent.request_headers['X-Foo'] = 'bar'
471
+
472
+ @agent.request_add_headers @req
473
+
474
+ assert_equal @headers + %w[x-foo], @req.to_hash.keys.sort
475
+ end
476
+
477
+ def test_request_add_headers_symbol
478
+ e = assert_raises ArgumentError do
479
+ @agent.request_add_headers @req, :content_length => 300
480
+ end
481
+
482
+ assert_equal 'unknown header symbol content_length', e.message
483
+ end
484
+
485
+ def test_request_auth_basic
486
+ @agent.add_auth @uri, 'user', 'password'
487
+
488
+ auth_realm @uri, 'Basic', :basic
489
+
490
+ @agent.request_auth @req, @uri
491
+
492
+ assert_match %r%^Basic %, @req['Authorization']
493
+ end
494
+
495
+ def test_request_auth_digest
496
+ @agent.add_auth @uri, 'user', 'password'
497
+
498
+ realm = auth_realm @uri, 'Digest', :digest
499
+ @agent.digest_challenges[realm] = 'Digest realm=r, qop="auth"'
500
+
501
+ @agent.request_auth @req, @uri
502
+
503
+ assert_match %r%^Digest %, @req['Authorization']
504
+ assert_match %r%qop=auth%, @req['Authorization']
505
+
506
+ @req['Authorization'] = nil
507
+ @agent.request_auth @req, @uri
508
+
509
+ assert_match %r%^Digest %, @req['Authorization']
510
+ assert_match %r%qop=auth%, @req['Authorization']
511
+ end
512
+
513
+ def test_request_auth_iis_digest
514
+ @agent.add_auth @uri, 'user', 'password'
515
+
516
+ realm = auth_realm @uri, 'Digest', :digest
517
+ @agent.digest_challenges[realm] = 'Digest realm=r, qop="auth"'
518
+
519
+ @agent.request_auth @req, @uri
520
+
521
+ assert_match %r%^Digest %, @req['Authorization']
522
+ assert_match %r%qop=auth%, @req['Authorization']
523
+ end
524
+
525
+ def test_request_auth_none
526
+ @agent.request_auth @req, @uri
527
+
528
+ assert_nil @req['Authorization']
529
+ end
530
+
531
+ def test_request_cookies
532
+ uri = URI.parse 'http://host.example.com'
533
+ @agent.cookie_jar.parse 'hello=world domain=.example.com', uri
534
+
535
+ @agent.request_cookies @req, uri
536
+
537
+ assert_equal 'hello="world domain=.example.com"', @req['Cookie']
538
+ end
539
+
540
+ def test_request_cookies_many
541
+ uri = URI.parse 'http://host.example.com'
542
+ cookie_str = 'a=b domain=.example.com, c=d domain=.example.com'
543
+ @agent.cookie_jar.parse cookie_str, uri
544
+
545
+ @agent.request_cookies @req, uri
546
+
547
+ expected_variant1 = /a="b domain=\.example\.com"; c="d domain=\.example\.com"/
548
+ expected_variant2 = /c="d domain=\.example\.com"; a="b domain=\.example\.com"/
549
+
550
+ assert_match(/^(#{expected_variant1}|#{expected_variant2})$/, @req['Cookie'])
551
+ end
552
+
553
+ def test_request_cookies_none
554
+ @agent.request_cookies @req, @uri
555
+
556
+ assert_nil @req['Cookie']
557
+ end
558
+
559
+ def test_request_cookies_wrong_domain
560
+ uri = URI.parse 'http://host.example.com'
561
+ @agent.cookie_jar.parse 'hello=world domain=.example.com', uri
562
+
563
+ @agent.request_cookies @req, @uri
564
+
565
+ assert_nil @req['Cookie']
566
+ end
567
+
568
+ def test_request_host
569
+ @agent.request_host @req, @uri
570
+
571
+ assert_equal 'example', @req['host']
572
+ end
573
+
574
+ def test_request_host_nonstandard
575
+ @uri.port = 81
576
+
577
+ @agent.request_host @req, @uri
578
+
579
+ assert_equal 'example:81', @req['host']
580
+ end
581
+
582
+ def test_request_language_charset
583
+ @agent.request_language_charset @req
584
+
585
+ assert_equal 'en-us,en;q=0.5', @req['accept-language']
586
+ assert_equal 'ISO-8859-1,utf-8;q=0.7,*;q=0.7', @req['accept-charset']
587
+ end
588
+
589
+ def test_request_referer
590
+ referer = URI.parse 'http://old.example'
591
+
592
+ @agent.request_referer @req, @uri, referer
593
+
594
+ assert_equal 'http://old.example', @req['referer']
595
+ end
596
+
597
+ def test_request_referer_https
598
+ uri = URI.parse 'https://example'
599
+ referer = URI.parse 'https://old.example'
600
+
601
+ @agent.request_referer @req, uri, referer
602
+
603
+ assert_equal 'https://old.example', @req['referer']
604
+ end
605
+
606
+ def test_request_referer_https_downgrade
607
+ referer = URI.parse 'https://old.example'
608
+
609
+ @agent.request_referer @req, @uri, referer
610
+
611
+ assert_nil @req['referer']
612
+ end
613
+
614
+ def test_request_referer_https_downgrade_case
615
+ uri = URI.parse 'http://example'
616
+ referer = URI.parse 'httpS://old.example'
617
+
618
+ @agent.request_referer @req, uri, referer
619
+
620
+ assert_nil @req['referer']
621
+ end
622
+
623
+ def test_request_referer_https_upgrade
624
+ uri = URI.parse 'https://example'
625
+ referer = URI.parse 'http://old.example'
626
+
627
+ @agent.request_referer @req, uri, referer
628
+
629
+ assert_equal 'http://old.example', @req['referer']
630
+ end
631
+
632
+ def test_request_referer_none
633
+ @agent.request_referer @req, @uri, nil
634
+
635
+ assert_nil @req['referer']
636
+ end
637
+
638
+ def test_request_referer_strip
639
+ uri = URI.parse 'http://example.com/index.html'
640
+
641
+ host_path = "old.example/page.html?q=x"
642
+ referer = "http://#{host_path}"
643
+
644
+ [
645
+ "",
646
+ "@",
647
+ "user1@",
648
+ ":@",
649
+ "user1:@",
650
+ ":password1@",
651
+ "user1:password1@",
652
+ ].each { |userinfo|
653
+ ['', '#frag'].each { |frag|
654
+ url = URI.parse "http://#{userinfo}#{host_path}#{frag}"
655
+
656
+ @agent.request_referer @req, uri, url
657
+
658
+ assert_equal referer, @req['referer'], url
659
+ }
660
+ }
661
+ end
662
+
663
+ def test_request_user_agent
664
+ @agent.request_user_agent @req
665
+
666
+ assert_match %r%^Mechanize/#{Mechanize::VERSION}%, @req['user-agent']
667
+
668
+ ruby_version = if RUBY_PATCHLEVEL >= 0 then
669
+ "#{RUBY_VERSION}p#{RUBY_PATCHLEVEL}"
670
+ else
671
+ "#{RUBY_VERSION}dev#{RUBY_REVISION}"
672
+ end
673
+
674
+ assert_match %r%Ruby/#{ruby_version}%, @req['user-agent']
675
+ end
676
+
677
+ def test_resolve_bad_uri
678
+ e = assert_raises ArgumentError do
679
+ @agent.resolve 'google'
680
+ end
681
+
682
+ assert_equal 'absolute URL needed (not google)', e.message
683
+ end
684
+
685
+ def test_resolve_uri_without_path
686
+ e = assert_raises ArgumentError do
687
+ @agent.resolve 'http:%5C%5Cfoo'
688
+ end
689
+
690
+ assert_equal 'hierarchical URL needed (not http:%5C%5Cfoo)', e.message
691
+ end
692
+
693
+ def test_resolve_utf8
694
+ uri = 'http://example?q=ü'
695
+
696
+ resolved = @agent.resolve uri
697
+
698
+ assert_equal '/?q=%C3%BC', resolved.request_uri
699
+ end
700
+
701
+ def test_resolve_parameters_body
702
+ input_params = { :q => 'hello' }
703
+
704
+ uri, params = @agent.resolve_parameters @uri, :post, input_params
705
+
706
+ assert_equal 'http://example/', uri.to_s
707
+ assert_equal input_params, params
708
+ end
709
+
710
+ def test_resolve_parameters_query
711
+ uri, params = @agent.resolve_parameters @uri, :get, :q => 'hello'
712
+
713
+ assert_equal 'http://example/?q=hello', uri.to_s
714
+ assert_nil params
715
+ end
716
+
717
+ def test_resolve_parameters_query_append
718
+ input_params = { :q => 'hello' }
719
+ @uri.query = 'a=b'
720
+
721
+ uri, params = @agent.resolve_parameters @uri, :get, input_params
722
+
723
+ assert_equal 'http://example/?a=b&q=hello', uri.to_s
724
+ assert_nil params
725
+ end
726
+
727
+ def test_resolve_slashes
728
+ page = Mechanize::Page.new URI('http://example/foo/'), nil, '', 200, @mech
729
+ uri = '/bar/http://example/test/'
730
+
731
+ resolved = @agent.resolve uri, page
732
+
733
+ assert_equal 'http://example/bar/http://example/test/', resolved.to_s
734
+ end
735
+
736
+ def test_response_authenticate
737
+ @agent.add_auth @uri, 'user', 'password'
738
+
739
+ @res.instance_variable_set :@header, 'www-authenticate' => ['Basic realm=r']
740
+
741
+ @agent.response_authenticate @res, nil, @uri, @req, {}, nil, nil
742
+
743
+ base_uri = @uri + '/'
744
+ realm = Mechanize::HTTP::AuthRealm.new 'Basic', base_uri, 'r'
745
+ assert_equal [realm], @agent.authenticate_methods[base_uri][:basic]
746
+ end
747
+
748
+ def test_response_authenticate_digest
749
+ @agent.add_auth @uri, 'user', 'password'
750
+
751
+ @res.instance_variable_set(:@header,
752
+ 'www-authenticate' => ['Digest realm=r'])
753
+
754
+ @agent.response_authenticate @res, nil, @uri, @req, {}, nil, nil
755
+
756
+ base_uri = @uri + '/'
757
+ realm = Mechanize::HTTP::AuthRealm.new 'Digest', base_uri, 'r'
758
+ assert_equal [realm], @agent.authenticate_methods[base_uri][:digest]
759
+
760
+ challenge = Mechanize::HTTP::AuthChallenge.new('Digest',
761
+ { 'realm' => 'r' },
762
+ 'Digest realm=r')
763
+
764
+ assert_equal challenge, @agent.digest_challenges[realm]
765
+ end
766
+
767
+ def test_response_authenticate_digest_iis
768
+ @agent.add_auth @uri, 'user', 'password'
769
+
770
+ @res.instance_variable_set(:@header,
771
+ 'www-authenticate' => ['Digest realm=r'],
772
+ 'server' => ['Microsoft-IIS'])
773
+ @agent.response_authenticate @res, nil, @uri, @req, {}, nil, nil
774
+
775
+ base_uri = @uri + '/'
776
+ realm = Mechanize::HTTP::AuthRealm.new 'Digest', base_uri, 'r'
777
+ assert_equal [realm], @agent.authenticate_methods[base_uri][:iis_digest]
778
+ end
779
+
780
+ def test_response_authenticate_multiple
781
+ @agent.add_auth @uri, 'user', 'password'
782
+
783
+ @res.instance_variable_set(:@header,
784
+ 'www-authenticate' =>
785
+ ['Basic realm=r, Digest realm=r'])
786
+
787
+ @agent.response_authenticate @res, nil, @uri, @req, {}, nil, nil
788
+
789
+ base_uri = @uri + '/'
790
+ realm = Mechanize::HTTP::AuthRealm.new 'Digest', base_uri, 'r'
791
+ assert_equal [realm], @agent.authenticate_methods[base_uri][:digest]
792
+
793
+ assert_empty @agent.authenticate_methods[base_uri][:basic]
794
+ end
795
+
796
+ def test_response_authenticate_no_credentials
797
+ @res.instance_variable_set :@header, 'www-authenticate' => ['Basic realm=r']
798
+
799
+ e = assert_raises Mechanize::UnauthorizedError do
800
+ @agent.response_authenticate @res, fake_page, @uri, @req, {}, nil, nil
801
+ end
802
+
803
+ assert_match 'no credentials', e.message
804
+ assert_match 'available realms: r', e.message
805
+ end
806
+
807
+ def test_response_authenticate_no_www_authenticate
808
+ @agent.add_auth @uri, 'user', 'password'
809
+
810
+ denied_uri = URI('http://example/denied')
811
+
812
+ denied = page denied_uri, 'text/html', '', 401
813
+
814
+ e = assert_raises Mechanize::UnauthorizedError do
815
+ @agent.response_authenticate @res, denied, @uri, @req, {}, nil, nil
816
+ end
817
+
818
+ assert_equal "401 => Net::HTTPUnauthorized for #{denied_uri} -- " \
819
+ "WWW-Authenticate header missing in response",
820
+ e.message
821
+ end
822
+
823
+ def test_response_authenticate_ntlm
824
+ @uri += '/ntlm'
825
+ @agent.add_auth @uri, 'user', 'password'
826
+
827
+ @res.instance_variable_set(:@header,
828
+ 'www-authenticate' => ['Negotiate, NTLM'])
829
+
830
+ page = @agent.response_authenticate @res, nil, @uri, @req, {}, nil, nil
831
+
832
+ assert_equal 'ok', page.body # lame test
833
+ end
834
+
835
+ def test_response_authenticate_unknown
836
+ @agent.add_auth @uri, 'user', 'password'
837
+
838
+ page = Mechanize::File.new nil, nil, nil, 401
839
+ @res.instance_variable_set(:@header,
840
+ 'www-authenticate' => ['Unknown realm=r'])
841
+
842
+ assert_raises Mechanize::UnauthorizedError do
843
+ @agent.response_authenticate @res, page, @uri, @req, nil, nil, nil
844
+ end
845
+ end
846
+
847
+ def test_response_content_encoding_7_bit
848
+ @res.instance_variable_set :@header, 'content-encoding' => %w[7bit]
849
+
850
+ body = @agent.response_content_encoding @res, StringIO.new('part')
851
+
852
+ assert_equal 'part', body.read
853
+ end
854
+
855
+ def test_response_content_encoding_deflate
856
+ @res.instance_variable_set :@header, 'content-encoding' => %w[deflate]
857
+ body_io = StringIO.new "x\x9C+H,*\x01\x00\x04?\x01\xB8"
858
+
859
+ body = @agent.response_content_encoding @res, body_io
860
+
861
+ assert_equal 'part', body.read
862
+
863
+ assert body_io.closed?
864
+ end
865
+
866
+ def test_response_content_encoding_deflate_chunked
867
+ @res.instance_variable_set :@header, 'content-encoding' => %w[deflate]
868
+ body_io = StringIO.new "x\x9C+H,*\x01\x00\x04?\x01\xB8"
869
+
870
+ body = @agent.response_content_encoding @res, body_io
871
+
872
+ assert_equal 'part', body.read
873
+ end
874
+
875
+ def test_response_content_encoding_deflate_corrupt
876
+ @res.instance_variable_set :@header, 'content-encoding' => %w[deflate]
877
+ body_io = StringIO.new "x\x9C+H,*\x01\x00\x04?\x01" # missing 1 byte
878
+
879
+ e = assert_raises Mechanize::Error do
880
+ @agent.response_content_encoding @res, body_io
881
+ end
882
+
883
+ assert_match %r%error handling content-encoding deflate:%, e.message
884
+ assert_match %r%Zlib%, e.message
885
+
886
+ assert body_io.closed?
887
+ end
888
+
889
+ def test_response_content_encoding_deflate_empty
890
+ @res.instance_variable_set :@header, 'content-encoding' => %w[deflate]
891
+
892
+ body = @agent.response_content_encoding @res, StringIO.new
893
+
894
+ assert_equal '', body.read
895
+ end
896
+
897
+ # IIS/6.0 ASP.NET/2.0.50727 does not wrap deflate with zlib, WTF?
898
+ def test_response_content_encoding_deflate_no_zlib
899
+ @res.instance_variable_set :@header, 'content-encoding' => %w[deflate]
900
+
901
+ body = @agent.response_content_encoding @res, StringIO.new("+H,*\001\000")
902
+
903
+ assert_equal 'part', body.read
904
+ end
905
+
906
+ def test_response_content_encoding_gzip
907
+ @res.instance_variable_set :@header, 'content-encoding' => %w[gzip]
908
+ body_io = StringIO.new \
909
+ "\037\213\b\0002\002\225M\000\003+H,*\001\000\306p\017I\004\000\000\000"
910
+
911
+ body = @agent.response_content_encoding @res, body_io
912
+
913
+ assert_equal 'part', body.read
914
+
915
+ assert body_io.closed?
916
+ end
917
+
918
+ def test_response_content_encoding_gzip_chunked
919
+ def @res.content_length() nil end
920
+ @res.instance_variable_set :@header, 'content-encoding' => %w[gzip]
921
+ body_io = StringIO.new \
922
+ "\037\213\b\0002\002\225M\000\003+H,*\001\000\306p\017I\004\000\000\000"
923
+
924
+ body = @agent.response_content_encoding @res, body_io
925
+
926
+ assert_equal 'part', body.read
927
+ end
928
+
929
+ def test_response_content_encoding_gzip_corrupt
930
+ log = StringIO.new
931
+ logger = Logger.new log
932
+ @agent.context.log = logger
933
+
934
+ @res.instance_variable_set :@header, 'content-encoding' => %w[gzip]
935
+ body_io = StringIO.new \
936
+ "\037\213\b\0002\002\225M\000\003+H,*\001"
937
+
938
+ return if jruby_zlib?
939
+
940
+ e = assert_raises Mechanize::Error do
941
+ @agent.response_content_encoding @res, body_io
942
+ end
943
+
944
+ assert_match %r%error handling content-encoding gzip:%, e.message
945
+ assert_match %r%Zlib%, e.message
946
+
947
+ assert_match %r%unable to gunzip response: unexpected end of file%,
948
+ log.string
949
+ assert_match %r%unable to inflate response: buffer error%,
950
+ log.string
951
+
952
+ assert body_io.closed?
953
+ end
954
+
955
+ def test_response_content_encoding_gzip_checksum_corrupt_crc
956
+ log = StringIO.new
957
+ logger = Logger.new log
958
+ @agent.context.log = logger
959
+
960
+ @res.instance_variable_set :@header, 'content-encoding' => %w[gzip]
961
+ body_io = StringIO.new \
962
+ "\037\213\b\0002\002\225M\000\003+H,*\001\000\306p\017J\004\000\000\000"
963
+
964
+ body = @agent.response_content_encoding @res, body_io
965
+
966
+ assert_equal 'part', body.read
967
+
968
+ assert body_io.closed?
969
+
970
+ assert_match %r%invalid compressed data -- crc error%, log.string
971
+ rescue IOError
972
+ raise unless jruby_zlib?
973
+ end
974
+
975
+ def test_response_content_encoding_gzip_checksum_corrupt_length
976
+ log = StringIO.new
977
+ logger = Logger.new log
978
+ @agent.context.log = logger
979
+
980
+ @res.instance_variable_set :@header, 'content-encoding' => %w[gzip]
981
+ body_io = StringIO.new \
982
+ "\037\213\b\0002\002\225M\000\003+H,*\001\000\306p\017I\005\000\000\000"
983
+
984
+ @agent.response_content_encoding @res, body_io
985
+
986
+ assert body_io.closed?
987
+
988
+ assert_match %r%invalid compressed data -- length error%, log.string
989
+ rescue IOError
990
+ raise unless jruby_zlib?
991
+ end
992
+
993
+ def test_response_content_encoding_gzip_checksum_truncated
994
+ log = StringIO.new
995
+ logger = Logger.new log
996
+ @agent.context.log = logger
997
+
998
+ @res.instance_variable_set :@header, 'content-encoding' => %w[gzip]
999
+ body_io = StringIO.new \
1000
+ "\037\213\b\0002\002\225M\000\003+H,*\001\000\306p\017I\004\000\000"
1001
+
1002
+ @agent.response_content_encoding @res, body_io
1003
+
1004
+ assert body_io.closed?
1005
+
1006
+ assert_match %r%unable to gunzip response: footer is not found%, log.string
1007
+ rescue IOError
1008
+ raise unless jruby_zlib?
1009
+ end
1010
+
1011
+ def test_response_content_encoding_gzip_empty
1012
+ @res.instance_variable_set :@header, 'content-encoding' => %w[gzip]
1013
+
1014
+ body = @agent.response_content_encoding @res, StringIO.new
1015
+
1016
+ assert_equal '', body.read
1017
+ end
1018
+
1019
+ def test_response_content_encoding_gzip_encoding_bad
1020
+ @res.instance_variable_set(:@header,
1021
+ 'content-encoding' => %w[gzip],
1022
+ 'content-type' => 'text/html; charset=UTF-8')
1023
+
1024
+ # "test\xB2"
1025
+ body_io = StringIO.new \
1026
+ "\037\213\b\000*+\314N\000\003+I-.\331\004\000x\016\003\376\005\000\000\000"
1027
+
1028
+ body = @agent.response_content_encoding @res, body_io
1029
+
1030
+ expected = "test\xB2"
1031
+ expected.force_encoding Encoding::BINARY if have_encoding?
1032
+
1033
+ content = body.read
1034
+ assert_equal expected, content
1035
+ assert_equal Encoding::BINARY, content.encoding if have_encoding?
1036
+ end
1037
+
1038
+ def test_response_content_encoding_gzip_no_footer
1039
+ @res.instance_variable_set :@header, 'content-encoding' => %w[gzip]
1040
+ body_io = StringIO.new \
1041
+ "\037\213\b\0002\002\225M\000\003+H,*\001\000"
1042
+
1043
+ body = @agent.response_content_encoding @res, body_io
1044
+
1045
+ assert_equal 'part', body.read
1046
+
1047
+ assert body_io.closed?
1048
+ rescue IOError
1049
+ raise unless jruby_zlib?
1050
+ end
1051
+
1052
+ def test_response_content_encoding_none
1053
+ @res.instance_variable_set :@header, 'content-encoding' => %w[none]
1054
+
1055
+ body = @agent.response_content_encoding @res, StringIO.new('part')
1056
+
1057
+ assert_equal 'part', body.read
1058
+ end
1059
+
1060
+ def test_response_content_encoding_empty_string
1061
+ @res.instance_variable_set :@header, 'content-encoding' => %w[]
1062
+
1063
+ body = @agent.response_content_encoding @res, StringIO.new('part')
1064
+
1065
+ assert_equal 'part', body.read
1066
+ end
1067
+
1068
+ def test_response_content_encoding_identity
1069
+ @res.instance_variable_set :@header, 'content-encoding' => %w[identity]
1070
+
1071
+ body = @agent.response_content_encoding @res, StringIO.new('part')
1072
+
1073
+ assert_equal 'part', body.read
1074
+ end
1075
+
1076
+ def test_response_content_encoding_tempfile_7_bit
1077
+ body_io = tempfile 'part'
1078
+
1079
+ @res.instance_variable_set :@header, 'content-encoding' => %w[7bit]
1080
+
1081
+ body = @agent.response_content_encoding @res, body_io
1082
+
1083
+ assert_equal 'part', body.read
1084
+ refute body_io.closed?
1085
+ ensure
1086
+ begin
1087
+ body_io.close! if body_io and not body_io.closed?
1088
+ rescue IOError
1089
+ # HACK for ruby 1.8
1090
+ end
1091
+ end
1092
+
1093
+ def test_response_content_encoding_tempfile_gzip
1094
+ body_io = tempfile "x\x9C+H,*\x01\x00\x04?\x01\xB8"
1095
+ @res.instance_variable_set :@header, 'content-encoding' => %w[deflate]
1096
+
1097
+ body = @agent.response_content_encoding @res, body_io
1098
+
1099
+ assert_equal 'part', body.read
1100
+ assert body_io.closed?
1101
+ ensure
1102
+ body_io.close! if body_io and not body_io.closed?
1103
+ end
1104
+
1105
+ def test_response_content_encoding_unknown
1106
+ @res.instance_variable_set :@header, 'content-encoding' => %w[unknown]
1107
+ body = StringIO.new 'part'
1108
+
1109
+ e = assert_raises Mechanize::Error do
1110
+ @agent.response_content_encoding @res, body
1111
+ end
1112
+
1113
+ assert_equal 'unsupported content-encoding: unknown', e.message
1114
+ end
1115
+
1116
+ def test_response_content_encoding_x_gzip
1117
+ @res.instance_variable_set :@header, 'content-encoding' => %w[x-gzip]
1118
+ body_io = StringIO.new \
1119
+ "\037\213\b\0002\002\225M\000\003+H,*\001\000\306p\017I\004\000\000\000"
1120
+
1121
+ body = @agent.response_content_encoding @res, body_io
1122
+
1123
+ assert_equal 'part', body.read
1124
+ end
1125
+
1126
+ def test_response_cookies
1127
+ uri = URI.parse 'http://host.example.com'
1128
+ cookie_str = 'a=b domain=.example.com'
1129
+ @res.instance_variable_set(:@header,
1130
+ 'set-cookie' => [cookie_str],
1131
+ 'content-type' => %w[text/html])
1132
+ page = Mechanize::Page.new uri, @res, '', 200, @mech
1133
+
1134
+ @agent.response_cookies @res, uri, page
1135
+
1136
+ assert_equal ['a="b domain=.example.com"'],
1137
+ @agent.cookie_jar.cookies(uri).map { |c| c.to_s }
1138
+ end
1139
+
1140
+ def test_response_cookies_many
1141
+ uri = URI.parse 'http://host.example.com'
1142
+ cookie1 = 'a=b domain=.example.com'
1143
+ cookie2 = 'c=d domain=.example.com'
1144
+ cookies = [cookie1, cookie2]
1145
+ @res.instance_variable_set(:@header,
1146
+ 'set-cookie' => cookies,
1147
+ 'content-type' => %w[text/html])
1148
+ page = Mechanize::Page.new uri, @res, '', 200, @mech
1149
+
1150
+ @agent.response_cookies @res, uri, page
1151
+
1152
+ cookies_from_jar = @agent.cookie_jar.cookies(uri)
1153
+
1154
+ assert_equal 2, cookies_from_jar.length
1155
+ assert_equal [
1156
+ 'a="b domain=.example.com"',
1157
+ 'c="d domain=.example.com"',
1158
+ ], cookies_from_jar.sort_by { |c| c.name }.map(&:to_s)
1159
+ end
1160
+
1161
+ def test_response_cookies_meta
1162
+ uri = URI.parse 'http://host.example.com'
1163
+ cookie_str = 'a=b domain=.example.com'
1164
+
1165
+ body = <<-BODY
1166
+ <head>
1167
+ <meta http-equiv="Set-Cookie" content="#{cookie_str}">
1168
+ </head>"
1169
+ BODY
1170
+
1171
+ @res.instance_variable_set(:@header,
1172
+ 'content-type' => %w[text/html])
1173
+ page = Mechanize::Page.new uri, @res, body, 200, @mech
1174
+
1175
+ @agent.response_cookies @res, uri, page
1176
+
1177
+ assert_equal ['a="b domain=.example.com"'],
1178
+ @agent.cookie_jar.cookies(uri).map { |c| c.to_s }
1179
+ end
1180
+
1181
+ def test_response_cookies_meta_bogus
1182
+ uri = URI.parse 'http://host.example.com'
1183
+
1184
+ body = <<-BODY
1185
+ <head>
1186
+ <meta http-equiv="Set-Cookie">
1187
+ </head>"
1188
+ BODY
1189
+
1190
+ @res.instance_variable_set(:@header,
1191
+ 'content-type' => %w[text/html])
1192
+ page = Mechanize::Page.new uri, @res, body, 200, @mech
1193
+
1194
+ @agent.response_cookies @res, uri, page
1195
+
1196
+ assert_empty @agent.cookie_jar.cookies(uri)
1197
+ end
1198
+
1199
+ def test_response_follow_meta_refresh
1200
+ uri = URI.parse 'http://example/#id+1'
1201
+
1202
+ body = <<-BODY
1203
+ <title></title>
1204
+ <meta http-equiv="refresh" content="0">
1205
+ BODY
1206
+
1207
+ page = Mechanize::Page.new(uri, nil, body, 200, @mech)
1208
+
1209
+ @agent.follow_meta_refresh = true
1210
+ @agent.follow_meta_refresh_self = true
1211
+
1212
+ page = @agent.response_follow_meta_refresh @res, uri, page, 0
1213
+
1214
+ assert_equal uri, page.uri
1215
+ end
1216
+
1217
+ def test_response_follow_meta_refresh_limit
1218
+ uri = URI.parse 'http://example/#id+1'
1219
+
1220
+ body = <<-BODY
1221
+ <title></title>
1222
+ <meta http-equiv="refresh" content="0">
1223
+ BODY
1224
+
1225
+ page = Mechanize::Page.new(uri, nil, body, 200, @mech)
1226
+
1227
+ @agent.follow_meta_refresh = true
1228
+ @agent.follow_meta_refresh_self = true
1229
+
1230
+ assert_raises Mechanize::RedirectLimitReachedError do
1231
+ @agent.response_follow_meta_refresh(@res, uri, page,
1232
+ @agent.redirection_limit)
1233
+ end
1234
+ end
1235
+
1236
+ def test_response_meta_refresh_with_insecure_url
1237
+ uri = URI.parse 'http://example/#id+1'
1238
+
1239
+ body = <<-BODY
1240
+ <title></title>
1241
+ <meta http-equiv="refresh" content="0; url=file:///dev/zero">
1242
+ BODY
1243
+
1244
+ page = Mechanize::Page.new(uri, nil, body, 200, @mech)
1245
+
1246
+ @agent.follow_meta_refresh = true
1247
+
1248
+ assert_raises Mechanize::Error do
1249
+ @agent.response_follow_meta_refresh(@res, uri, page,
1250
+ @agent.redirection_limit)
1251
+ end
1252
+ end
1253
+
1254
+ def test_response_parse
1255
+ body = '<title>hi</title>'
1256
+ @res.instance_variable_set :@header, 'content-type' => %w[text/html]
1257
+
1258
+ page = @agent.response_parse @res, body, @uri
1259
+
1260
+ assert_instance_of Mechanize::Page, page
1261
+ assert_equal @mech, page.mech
1262
+ end
1263
+
1264
+ def test_response_parse_content_type_case
1265
+ body = '<title>hi</title>'
1266
+ @res.instance_variable_set(:@header, 'content-type' => %w[text/HTML])
1267
+
1268
+ page = @agent.response_parse @res, body, @uri
1269
+
1270
+ assert_instance_of Mechanize::Page, page
1271
+
1272
+ assert_equal 'text/HTML', page.content_type
1273
+ end
1274
+
1275
+ def test_response_parse_content_type_encoding
1276
+ body = '<title>hi</title>'
1277
+ @res.instance_variable_set(:@header,
1278
+ 'content-type' =>
1279
+ %w[text/html;charset=ISO-8859-1])
1280
+
1281
+ page = @agent.response_parse @res, body, @uri
1282
+
1283
+ assert_instance_of Mechanize::Page, page
1284
+ assert_equal @mech, page.mech
1285
+
1286
+ assert_equal 'ISO-8859-1', page.encoding
1287
+ assert_equal 'ISO-8859-1', page.parser.encoding
1288
+ end
1289
+
1290
+ def test_response_parse_content_type_encoding_broken_iso_8859_1
1291
+ body = '<title>hi</title>'
1292
+ @res.instance_variable_set(:@header,
1293
+ 'content-type' =>
1294
+ %w[text/html; charset=ISO_8859-1])
1295
+
1296
+ page = @agent.response_parse @res, body, @uri
1297
+
1298
+ assert_instance_of Mechanize::Page, page
1299
+ assert_equal 'ISO_8859-1', page.encoding
1300
+ end
1301
+
1302
+ def test_response_parse_content_type_encoding_broken_utf_8
1303
+ body = '<title>hi</title>'
1304
+ @res.instance_variable_set(:@header,
1305
+ 'content-type' =>
1306
+ %w[text/html; charset=UTF8])
1307
+
1308
+ page = @agent.response_parse @res, body, @uri
1309
+
1310
+ assert_instance_of Mechanize::Page, page
1311
+ assert_equal 'UTF8', page.encoding
1312
+ assert_equal 'UTF8', page.parser.encoding
1313
+ end
1314
+
1315
+ def test_response_parse_content_type_encoding_garbage
1316
+ body = '<title>hi</title>'
1317
+ @res.instance_variable_set(:@header,
1318
+ 'content-type' =>
1319
+ %w[text/html; charset=garbage_charset])
1320
+
1321
+ page = @agent.response_parse @res, body, @uri
1322
+
1323
+ assert_instance_of Mechanize::Page, page
1324
+ assert_equal @mech, page.mech
1325
+ end
1326
+
1327
+ def test_response_parse_content_type_encoding_semicolon
1328
+ body = '<title>hi</title>'
1329
+ @res.instance_variable_set(:@header,
1330
+ 'content-type' =>
1331
+ %w[text/html;charset=UTF-8;])
1332
+
1333
+ page = @agent.response_parse @res, body, @uri
1334
+
1335
+ assert_instance_of Mechanize::Page, page
1336
+
1337
+ assert_equal 'UTF-8', page.encoding
1338
+ end
1339
+
1340
+ def test_response_read
1341
+ def @res.read_body() yield 'part' end
1342
+ def @res.content_length() 4 end
1343
+
1344
+ io = @agent.response_read @res, @req, @uri
1345
+
1346
+ body = io.read
1347
+
1348
+ assert_equal 'part', body
1349
+ assert_equal Encoding::BINARY, body.encoding
1350
+ end
1351
+
1352
+ def test_response_read_chunked_no_trailer
1353
+ @res['Transfer-Encoding'] = 'chunked'
1354
+ def @res.content_length() end
1355
+ def @res.read_body
1356
+ yield 'a' * 10
1357
+ raise EOFError
1358
+ end
1359
+
1360
+ e = assert_raises Mechanize::ChunkedTerminationError do
1361
+ @agent.response_read @res, @req, @uri
1362
+ end
1363
+
1364
+ assert_equal 'aaaaaaaaaa', e.body_io.read
1365
+ end
1366
+
1367
+ def test_response_read_content_length_head
1368
+ req = Net::HTTP::Head.new '/'
1369
+
1370
+ def @res.content_length() end
1371
+ def @res.read_body() end
1372
+
1373
+ io = @agent.response_read @res, req, @uri
1374
+
1375
+ assert_equal '', io.read
1376
+ end
1377
+
1378
+ def test_response_read_content_length_mismatch
1379
+ def @res.content_length() 5 end
1380
+ def @res.read_body() yield 'part' end
1381
+
1382
+ e = assert_raises Mechanize::ResponseReadError do
1383
+ @agent.response_read @res, @req, @uri
1384
+ end
1385
+
1386
+ assert_equal 'Content-Length (5) does not match response body length (4)' \
1387
+ ' (Mechanize::ResponseReadError)', e.message
1388
+ end
1389
+
1390
+ def test_response_read_content_length_redirect
1391
+ res = Net::HTTPFound.allocate
1392
+ def res.content_length() 5 end
1393
+ def res.code() 302 end
1394
+ def res.read_body() yield 'part' end
1395
+ res.instance_variable_set :@header, {}
1396
+
1397
+ io = @agent.response_read res, @req, @uri
1398
+
1399
+ assert_equal 'part', io.read
1400
+ end
1401
+
1402
+ def test_response_read_error
1403
+ def @res.read_body()
1404
+ yield 'part'
1405
+ raise Net::HTTP::Persistent::Error
1406
+ end
1407
+
1408
+ e = assert_raises Mechanize::ResponseReadError do
1409
+ @agent.response_read @res, @req, @uri
1410
+ end
1411
+
1412
+ assert_equal @res, e.response
1413
+ assert_equal 'part', e.body_io.read
1414
+ assert_kind_of Net::HTTP::Persistent::Error, e.error
1415
+ end
1416
+
1417
+ def test_response_read_file
1418
+ Tempfile.open 'pi.txt' do |tempfile|
1419
+ tempfile.write "π\n"
1420
+ tempfile.flush
1421
+ tempfile.rewind
1422
+
1423
+ uri = URI.parse "file://#{tempfile.path}"
1424
+ req = Mechanize::FileRequest.new uri
1425
+ res = Mechanize::FileResponse.new tempfile.path
1426
+
1427
+ io = @agent.response_read res, req, uri
1428
+
1429
+ expected = "π\n".force_encoding(Encoding::BINARY)
1430
+
1431
+ # Ruby 1.8.7 doesn't let us set the write mode of the tempfile to binary,
1432
+ # so we should expect an inserted carriage return on some platforms
1433
+ expected_with_carriage_return = "π\r\n".force_encoding(Encoding::BINARY)
1434
+
1435
+ body = io.read
1436
+ assert_match(/^(#{expected}|#{expected_with_carriage_return})$/m, body)
1437
+ assert_equal Encoding::BINARY, body.encoding
1438
+ end
1439
+ end
1440
+
1441
+ def test_response_read_large
1442
+ @agent.max_file_buffer = 10240
1443
+
1444
+ def @res.read_body() yield 'a' * 10241 end
1445
+ def @res.content_length() 10241 end
1446
+
1447
+ io = @agent.response_read @res, @req, @uri
1448
+
1449
+ assert_kind_of Tempfile, io
1450
+ assert_equal 10241, io.stat.size
1451
+ end
1452
+
1453
+ def test_response_read_large_chunked
1454
+ @agent.max_file_buffer = 10240
1455
+
1456
+ def @res.read_body
1457
+ 11.times do yield 'a' * 1024 end
1458
+ end
1459
+ def @res.content_length() end
1460
+
1461
+ io = @agent.response_read @res, @req, @uri
1462
+
1463
+ assert_kind_of Tempfile, io
1464
+ assert_equal 11264, io.stat.size
1465
+ end
1466
+
1467
+ def test_response_read_no_body
1468
+ req = Net::HTTP::Options.new '/'
1469
+
1470
+ def @res.content_length() end
1471
+ def @res.read_body() end
1472
+
1473
+ io = @agent.response_read @res, req, @uri
1474
+
1475
+ assert_equal '', io.read
1476
+ end
1477
+
1478
+ def test_response_read_unknown_code
1479
+ res = Net::HTTPUnknownResponse.allocate
1480
+ res.instance_variable_set :@code, 9999
1481
+ res.instance_variable_set :@header, {}
1482
+ def res.read_body() yield 'part' end
1483
+
1484
+ e = assert_raises Mechanize::ResponseCodeError do
1485
+ @agent.response_read res, @req, @uri
1486
+ end
1487
+
1488
+ assert_equal res, e.page
1489
+ end
1490
+
1491
+ def test_response_redirect
1492
+ @agent.redirect_ok = true
1493
+ referer = page 'http://example/referer'
1494
+
1495
+ page = fake_page
1496
+ page = @agent.response_redirect({ 'Location' => '/index.html' }, :get,
1497
+ page, 0, {}, referer)
1498
+
1499
+ assert_equal URI('http://fake.example/index.html'), page.uri
1500
+
1501
+ assert_equal 'http://example/referer', requests.first['Referer']
1502
+ end
1503
+
1504
+ def test_response_redirect_header
1505
+ @agent.redirect_ok = true
1506
+ referer = page 'http://example/referer'
1507
+
1508
+ headers = {
1509
+ 'Range' => 'bytes=0-9999',
1510
+ 'Content-Type' => 'application/x-www-form-urlencoded',
1511
+ 'Content-Length' => '9999',
1512
+ }
1513
+
1514
+ page = fake_page
1515
+ page = @agent.response_redirect({ 'Location' => '/http_headers' }, :get,
1516
+ page, 0, headers, referer)
1517
+
1518
+ assert_equal URI('http://fake.example/http_headers'), page.uri
1519
+
1520
+ assert_match 'range|bytes=0-9999', page.body
1521
+ refute_match 'content-type|application/x-www-form-urlencoded', page.body
1522
+ refute_match 'content-length|9999', page.body
1523
+ end
1524
+
1525
+ def test_response_redirect_malformed
1526
+ @agent.redirect_ok = true
1527
+ referer = page 'http://example/referer'
1528
+
1529
+ page = fake_page
1530
+ page = @agent.response_redirect({ 'Location' => '/index.html?q=あ' }, :get,
1531
+ page, 0, {}, referer)
1532
+
1533
+ assert_equal URI('http://fake.example/index.html?q=%E3%81%82'), page.uri
1534
+
1535
+ assert_equal 'http://example/referer', requests.first['Referer']
1536
+ end
1537
+
1538
+ def test_response_redirect_insecure
1539
+ @agent.redirect_ok = true
1540
+ referer = page 'http://example/referer'
1541
+
1542
+ assert_raises Mechanize::Error do
1543
+ @agent.response_redirect({ 'Location' => 'file:///etc/passwd' }, :get,
1544
+ fake_page, 0, {}, referer)
1545
+ end
1546
+ end
1547
+
1548
+ def test_response_redirect_limit
1549
+ @agent.redirect_ok = true
1550
+ referer = page 'http://example/referer'
1551
+
1552
+ assert_raises Mechanize::RedirectLimitReachedError do
1553
+ @agent.response_redirect({ 'Location' => '/index.html' }, :get,
1554
+ fake_page, @agent.redirection_limit, {}, referer)
1555
+ end
1556
+ end
1557
+
1558
+ def test_response_redirect_not_ok
1559
+ @agent.redirect_ok = false
1560
+
1561
+ page = fake_page
1562
+ page = @agent.response_redirect({ 'Location' => '/other' }, :get, page, 0,
1563
+ {}, page)
1564
+
1565
+ assert_equal URI('http://fake.example'), page.uri
1566
+ end
1567
+
1568
+ def test_response_redirect_permanent
1569
+ @agent.redirect_ok = :permanent
1570
+
1571
+ response = Net::HTTPMovedPermanently.allocate
1572
+ response.instance_variable_set :@header, { 'location' => %w[/index.html] }
1573
+
1574
+ page = fake_page
1575
+ page = @agent.response_redirect response, :get, page, 0, {}, page
1576
+
1577
+ assert_equal URI('http://fake.example/index.html'), page.uri
1578
+ end
1579
+
1580
+ def test_response_redirect_permanent_temporary
1581
+ @agent.redirect_ok = :permanent
1582
+
1583
+ response = Net::HTTPMovedTemporarily.allocate
1584
+ response.instance_variable_set :@header, { 'location' => %w[/index.html] }
1585
+
1586
+ page = fake_page
1587
+ page = @agent.response_redirect response, :get, page, 0, {}, page
1588
+
1589
+ assert_equal URI('http://fake.example/'), page.uri
1590
+ end
1591
+
1592
+ def test_retry_change_request_equals
1593
+ refute @agent.http.retry_change_requests
1594
+
1595
+ @agent.retry_change_requests = true
1596
+
1597
+ assert @agent.http.retry_change_requests
1598
+ end
1599
+
1600
+ def test_robots_allowed_eh
1601
+ allowed = URI 'http://localhost/index.html'
1602
+ disallowed = URI 'http://localhost/norobots.html'
1603
+
1604
+ assert @agent.robots_allowed? allowed
1605
+ refute @agent.robots_allowed? disallowed
1606
+
1607
+ refute @agent.robots_disallowed? allowed
1608
+ assert @agent.robots_disallowed? disallowed
1609
+ end
1610
+
1611
+ def test_robots_allowed_eh_noindex
1612
+ @agent.robots = true
1613
+
1614
+ noindex = URI 'http://localhost/noindex.html'
1615
+
1616
+ assert @agent.robots_allowed? noindex
1617
+
1618
+ assert_raises Mechanize::RobotsDisallowedError do
1619
+ @agent.fetch noindex
1620
+ end
1621
+ end
1622
+
1623
+ def test_robots_infinite_loop
1624
+ @agent.robots = true
1625
+ @agent.redirect_ok = true
1626
+
1627
+ assert_raises Mechanize::RobotsDisallowedError do
1628
+ @agent.fetch URI('http://301/norobots.html')
1629
+ end
1630
+
1631
+ @agent.fetch URI('http://301/robots.html')
1632
+ end
1633
+
1634
+ def test_set_proxy
1635
+ @agent.set_proxy 'www.example.com', 9001, 'joe', 'lol'
1636
+
1637
+ assert_equal @agent.proxy_uri.host, 'www.example.com'
1638
+ assert_equal @agent.proxy_uri.port, 9001
1639
+ assert_equal @agent.proxy_uri.user, 'joe'
1640
+ assert_equal @agent.proxy_uri.password, 'lol'
1641
+ end
1642
+
1643
+ def test_set_proxy_port_string
1644
+ @agent.set_proxy 'www.example.com', '9001', 'joe', 'lol'
1645
+
1646
+ assert_equal @agent.proxy_uri.host, 'www.example.com'
1647
+ assert_equal @agent.proxy_uri.port, 9001
1648
+ assert_equal @agent.proxy_uri.user, 'joe'
1649
+ assert_equal @agent.proxy_uri.password, 'lol'
1650
+ end
1651
+
1652
+ def test_set_proxy_service_name
1653
+ @agent.set_proxy 'www.example.com', 'http', 'joe', 'lol'
1654
+
1655
+ assert_equal @agent.proxy_uri.host, 'www.example.com'
1656
+ assert_equal @agent.proxy_uri.port, 80
1657
+ assert_equal @agent.proxy_uri.user, 'joe'
1658
+ assert_equal @agent.proxy_uri.password, 'lol'
1659
+ end
1660
+
1661
+ def test_set_proxy_service_name_bad
1662
+ e = assert_raises ArgumentError do
1663
+ @agent.set_proxy 'www.example.com', 'nonexistent service', 'joe', 'lol'
1664
+ end
1665
+
1666
+ assert_equal 'invalid value for port: "nonexistent service"', e.message
1667
+ end
1668
+
1669
+ def test_set_proxy_with_scheme
1670
+ @agent.set_proxy 'http://www.example.com', 9001, 'joe', 'lol'
1671
+
1672
+ assert_equal @agent.proxy_uri.host, 'www.example.com'
1673
+ assert_equal @agent.proxy_uri.port, 9001
1674
+ assert_equal @agent.proxy_uri.user, 'joe'
1675
+ assert_equal @agent.proxy_uri.password, 'lol'
1676
+ end
1677
+
1678
+ def test_set_proxy_url
1679
+ @agent.set_proxy 'http://joe:lol@www.example.com:9001'
1680
+
1681
+ assert_equal @agent.proxy_uri.host, 'www.example.com'
1682
+ assert_equal @agent.proxy_uri.port, 9001
1683
+ assert_equal @agent.proxy_uri.user, 'joe'
1684
+ assert_equal @agent.proxy_uri.password, 'lol'
1685
+ end
1686
+
1687
+ def test_set_proxy_uri
1688
+ @agent.set_proxy URI('http://joe:lol@www.example.com:9001')
1689
+
1690
+ assert_equal @agent.proxy_uri.host, 'www.example.com'
1691
+ assert_equal @agent.proxy_uri.port, 9001
1692
+ assert_equal @agent.proxy_uri.user, 'joe'
1693
+ assert_equal @agent.proxy_uri.password, 'lol'
1694
+ end
1695
+
1696
+ def test_set_proxy_url_and_credentials
1697
+ @agent.set_proxy 'http://www.example.com:9001', nil, 'joe', 'lol'
1698
+
1699
+ assert_equal @agent.proxy_uri.host, 'www.example.com'
1700
+ assert_equal @agent.proxy_uri.port, 9001
1701
+ assert_equal @agent.proxy_uri.user, 'joe'
1702
+ assert_equal @agent.proxy_uri.password, 'lol'
1703
+ end
1704
+
1705
+ def test_setting_agent_name
1706
+ mech = Mechanize.new 'user-set-name'
1707
+ assert_equal 'user-set-name', mech.agent.http.name
1708
+ end
1709
+
1710
+ def test_ssl
1711
+ in_tmpdir do
1712
+ store = OpenSSL::X509::Store.new
1713
+ @agent.ca_file = '.'
1714
+ @agent.cert_store = store
1715
+ @agent.certificate = ssl_certificate
1716
+ @agent.private_key = ssl_private_key
1717
+ @agent.ssl_version = 'SSLv3'
1718
+ @agent.verify_callback = proc { |ok, context| }
1719
+
1720
+ http = @agent.http
1721
+
1722
+ assert_equal '.', http.ca_file
1723
+ assert_equal store, http.cert_store
1724
+ assert_equal ssl_certificate, http.certificate
1725
+ assert_equal ssl_private_key, http.private_key
1726
+ assert_equal 'SSLv3', http.ssl_version
1727
+ assert_equal OpenSSL::SSL::VERIFY_PEER, http.verify_mode
1728
+ assert http.verify_callback
1729
+ end
1730
+ end
1731
+
1732
+ def test_use_tempfile_eh
1733
+ refute @agent.use_tempfile? nil
1734
+
1735
+ @agent.max_file_buffer = 1
1736
+
1737
+ refute @agent.use_tempfile? 0
1738
+ assert @agent.use_tempfile? 1
1739
+
1740
+ @agent.max_file_buffer = nil
1741
+
1742
+ refute @agent.use_tempfile? 1
1743
+ end
1744
+
1745
+ def test_verify_none_equals
1746
+ @agent.verify_mode = OpenSSL::SSL::VERIFY_NONE
1747
+
1748
+ http = @agent.http
1749
+
1750
+ assert_equal OpenSSL::SSL::VERIFY_NONE, http.verify_mode
1751
+ end
1752
+
1753
+ end
1754
+