husc 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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
+