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,40 @@
1
+ ##
2
+ # A Net::HTTP connection wrapper that holds extra information for managing the
3
+ # connection's lifetime.
4
+
5
+ class Net::HTTP::Persistent::Connection # :nodoc:
6
+
7
+ attr_accessor :http
8
+
9
+ attr_accessor :last_use
10
+
11
+ attr_accessor :requests
12
+
13
+ attr_accessor :ssl_generation
14
+
15
+ def initialize http_class, http_args, ssl_generation
16
+ @http = http_class.new(*http_args)
17
+ @ssl_generation = ssl_generation
18
+
19
+ reset
20
+ end
21
+
22
+ def finish
23
+ @http.finish
24
+ rescue IOError
25
+ ensure
26
+ reset
27
+ end
28
+
29
+ def reset
30
+ @last_use = Net::HTTP::Persistent::EPOCH
31
+ @requests = 0
32
+ end
33
+
34
+ def ressl ssl_generation
35
+ @ssl_generation = ssl_generation
36
+
37
+ finish
38
+ end
39
+
40
+ end
@@ -0,0 +1,53 @@
1
+ class Net::HTTP::Persistent::Pool < ConnectionPool # :nodoc:
2
+
3
+ attr_reader :available # :nodoc:
4
+ attr_reader :key # :nodoc:
5
+
6
+ def initialize(options = {}, &block)
7
+ super
8
+
9
+ @available = Net::HTTP::Persistent::TimedStackMulti.new(@size, &block)
10
+ @key = "current-#{@available.object_id}"
11
+ end
12
+
13
+ def checkin net_http_args
14
+ stack = Thread.current[@key][net_http_args] ||= []
15
+
16
+ raise ConnectionPool::Error, 'no connections are checked out' if
17
+ stack.empty?
18
+
19
+ conn = stack.pop
20
+
21
+ if stack.empty?
22
+ @available.push conn, connection_args: net_http_args
23
+
24
+ Thread.current[@key].delete(net_http_args)
25
+ Thread.current[@key] = nil if Thread.current[@key].empty?
26
+ end
27
+
28
+ nil
29
+ end
30
+
31
+ def checkout net_http_args
32
+ stacks = Thread.current[@key] ||= {}
33
+ stack = stacks[net_http_args] ||= []
34
+
35
+ if stack.empty? then
36
+ conn = @available.pop connection_args: net_http_args
37
+ else
38
+ conn = stack.last
39
+ end
40
+
41
+ stack.push conn
42
+
43
+ conn
44
+ end
45
+
46
+ def shutdown
47
+ Thread.current[@key] = nil
48
+ super
49
+ end
50
+ end
51
+
52
+ require 'net/http/persistent/timed_stack_multi'
53
+
@@ -0,0 +1,79 @@
1
+ class Net::HTTP::Persistent::TimedStackMulti < ConnectionPool::TimedStack # :nodoc:
2
+
3
+ ##
4
+ # Returns a new hash that has arrays for keys
5
+ #
6
+ # Using a class method to limit the bindings referenced by the hash's
7
+ # default_proc
8
+
9
+ def self.hash_of_arrays # :nodoc:
10
+ Hash.new { |h,k| h[k] = [] }
11
+ end
12
+
13
+ def initialize(size = 0, &block)
14
+ super
15
+
16
+ @enqueued = 0
17
+ @ques = self.class.hash_of_arrays
18
+ @lru = {}
19
+ @key = :"connection_args-#{object_id}"
20
+ end
21
+
22
+ def empty?
23
+ (@created - @enqueued) >= @max
24
+ end
25
+
26
+ def length
27
+ @max - @created + @enqueued
28
+ end
29
+
30
+ private
31
+
32
+ def connection_stored? options = {} # :nodoc:
33
+ !@ques[options[:connection_args]].empty?
34
+ end
35
+
36
+ def fetch_connection options = {} # :nodoc:
37
+ connection_args = options[:connection_args]
38
+
39
+ @enqueued -= 1
40
+ lru_update connection_args
41
+ @ques[connection_args].pop
42
+ end
43
+
44
+ def lru_update connection_args # :nodoc:
45
+ @lru.delete connection_args
46
+ @lru[connection_args] = true
47
+ end
48
+
49
+ def shutdown_connections # :nodoc:
50
+ @ques.each_key do |key|
51
+ super connection_args: key
52
+ end
53
+ end
54
+
55
+ def store_connection obj, options = {} # :nodoc:
56
+ @ques[options[:connection_args]].push obj
57
+ @enqueued += 1
58
+ end
59
+
60
+ def try_create options = {} # :nodoc:
61
+ connection_args = options[:connection_args]
62
+
63
+ if @created >= @max && @enqueued >= 1
64
+ oldest, = @lru.first
65
+ @lru.delete oldest
66
+ @ques[oldest].pop
67
+
68
+ @created -= 1
69
+ end
70
+
71
+ if @created < @max
72
+ @created += 1
73
+ lru_update connection_args
74
+ return @create_block.call(connection_args)
75
+ end
76
+ end
77
+
78
+ end
79
+
@@ -0,0 +1,1621 @@
1
+ require 'rubygems'
2
+ require 'minitest/autorun'
3
+ require 'net/http/persistent'
4
+ require 'stringio'
5
+
6
+ HAVE_OPENSSL = defined?(OpenSSL::SSL)
7
+
8
+ module Net::HTTP::Persistent::TestConnect
9
+ def self.included mod
10
+ mod.send :alias_method, :orig_connect, :connect
11
+
12
+ def mod.use_connect which
13
+ self.send :remove_method, :connect
14
+ self.send :alias_method, :connect, which
15
+ end
16
+ end
17
+
18
+ def host_down_connect
19
+ raise Errno::EHOSTDOWN
20
+ end
21
+
22
+ def test_connect
23
+ unless use_ssl? then
24
+ io = Object.new
25
+ def io.setsockopt(*a) @setsockopts ||= []; @setsockopts << a end
26
+
27
+ @socket = Net::BufferedIO.new io
28
+
29
+ return
30
+ end
31
+
32
+ io = open '/dev/null'
33
+ def io.setsockopt(*a) @setsockopts ||= []; @setsockopts << a end
34
+
35
+ @ssl_context ||= OpenSSL::SSL::SSLContext.new
36
+
37
+ @ssl_context.verify_mode = OpenSSL::SSL::VERIFY_PEER unless
38
+ @ssl_context.verify_mode
39
+
40
+ s = OpenSSL::SSL::SSLSocket.new io, @ssl_context
41
+
42
+ @socket = Net::BufferedIO.new s
43
+ end
44
+
45
+ def refused_connect
46
+ raise Errno::ECONNREFUSED
47
+ end
48
+ end
49
+
50
+ class Net::HTTP
51
+ include Net::HTTP::Persistent::TestConnect
52
+ end
53
+
54
+ class TestNetHttpPersistent < Minitest::Test
55
+
56
+ def setup
57
+ @http = Net::HTTP::Persistent.new
58
+
59
+ @uri = URI.parse 'http://example.com/path'
60
+
61
+ ENV.delete 'http_proxy'
62
+ ENV.delete 'HTTP_PROXY'
63
+ ENV.delete 'http_proxy_user'
64
+ ENV.delete 'HTTP_PROXY_USER'
65
+ ENV.delete 'http_proxy_pass'
66
+ ENV.delete 'HTTP_PROXY_PASS'
67
+ ENV.delete 'no_proxy'
68
+ ENV.delete 'NO_PROXY'
69
+
70
+ Net::HTTP.use_connect :test_connect
71
+ end
72
+
73
+ def teardown
74
+ Net::HTTP.use_connect :orig_connect
75
+ end
76
+
77
+ class BasicConnection
78
+ attr_accessor :started, :finished, :address, :port, :use_ssl,
79
+ :read_timeout, :open_timeout, :keep_alive_timeout
80
+ attr_accessor :ciphers, :ssl_timeout, :ssl_version, :min_version,
81
+ :max_version, :verify_depth, :verify_mode, :cert_store,
82
+ :ca_file, :ca_path, :cert, :key
83
+ attr_reader :req, :debug_output
84
+ def initialize
85
+ @started, @finished = 0, 0
86
+ @address, @port = 'example.com', 80
87
+ @use_ssl = false
88
+ end
89
+ def finish
90
+ @finished += 1
91
+ @socket = nil
92
+ end
93
+ def finished?
94
+ @finished >= 1
95
+ end
96
+ def pipeline requests, &block
97
+ requests.map { |r| r.path }
98
+ end
99
+ def reset?
100
+ @started == @finished + 1
101
+ end
102
+ def set_debug_output io
103
+ @debug_output = io
104
+ end
105
+ def start
106
+ @started += 1
107
+ io = Object.new
108
+ def io.setsockopt(*a) @setsockopts ||= []; @setsockopts << a end
109
+ @socket = Net::BufferedIO.new io
110
+ end
111
+ def started?
112
+ @started >= 1
113
+ end
114
+ def proxy_address
115
+ end
116
+ def proxy_port
117
+ end
118
+ end
119
+
120
+ def basic_connection
121
+ raise "#{@uri} is not HTTP" unless @uri.scheme.downcase == 'http'
122
+
123
+ net_http_args = [@uri.host, @uri.port, nil, nil, nil, nil]
124
+
125
+ connection = Net::HTTP::Persistent::Connection.allocate
126
+ connection.ssl_generation = @http.ssl_generation
127
+ connection.http = BasicConnection.new
128
+ connection.reset
129
+
130
+ @http.pool.available.push connection, connection_args: net_http_args
131
+
132
+ connection
133
+ end
134
+
135
+ def connection
136
+ connection = basic_connection
137
+ connection.last_use = Time.now
138
+
139
+ def (connection.http).request(req)
140
+ @req = req
141
+ r = Net::HTTPResponse.allocate
142
+ r.instance_variable_set :@header, {}
143
+ def r.http_version() '1.1' end
144
+ def r.read_body() :read_body end
145
+ yield r if block_given?
146
+ r
147
+ end
148
+
149
+ connection
150
+ end
151
+
152
+ def ssl_connection
153
+ raise "#{@uri} is not HTTPS" unless @uri.scheme.downcase == 'https'
154
+
155
+ net_http_args = [@uri.host, @uri.port, nil, nil, nil, nil]
156
+
157
+ connection = Net::HTTP::Persistent::Connection.allocate
158
+ connection.ssl_generation = @http.ssl_generation
159
+ connection.http = BasicConnection.new
160
+ connection.reset
161
+
162
+ @http.pool.available.push connection, connection_args: net_http_args
163
+
164
+ connection
165
+ end
166
+
167
+ def test_initialize
168
+ assert_nil @http.proxy_uri
169
+
170
+ assert_empty @http.no_proxy
171
+
172
+ skip 'OpenSSL is missing' unless HAVE_OPENSSL
173
+
174
+ ssl_session_exists = OpenSSL::SSL.const_defined? :Session
175
+
176
+ assert_equal ssl_session_exists, @http.reuse_ssl_sessions
177
+ end
178
+
179
+ def test_initialize_name
180
+ http = Net::HTTP::Persistent.new name: 'name'
181
+ assert_equal 'name', http.name
182
+ end
183
+
184
+ def test_initialize_no_ssl_session
185
+ skip 'OpenSSL is missing' unless HAVE_OPENSSL
186
+
187
+ skip "OpenSSL::SSL::Session does not exist on #{RUBY_PLATFORM}" unless
188
+ OpenSSL::SSL.const_defined? :Session
189
+
190
+ ssl_session = OpenSSL::SSL::Session
191
+
192
+ OpenSSL::SSL.send :remove_const, :Session
193
+
194
+ http = Net::HTTP::Persistent.new
195
+
196
+ refute http.reuse_ssl_sessions
197
+ ensure
198
+ OpenSSL::SSL.const_set :Session, ssl_session if ssl_session
199
+ end
200
+
201
+ def test_initialize_proxy
202
+ proxy_uri = URI.parse 'http://proxy.example'
203
+
204
+ http = Net::HTTP::Persistent.new proxy: proxy_uri
205
+
206
+ assert_equal proxy_uri, http.proxy_uri
207
+ end
208
+
209
+ def test_ca_file_equals
210
+ @http.ca_file = :ca_file
211
+
212
+ assert_equal :ca_file, @http.ca_file
213
+ assert_equal 1, @http.ssl_generation
214
+ end
215
+
216
+ def test_ca_path_equals
217
+ @http.ca_path = :ca_path
218
+
219
+ assert_equal :ca_path, @http.ca_path
220
+ assert_equal 1, @http.ssl_generation
221
+ end
222
+
223
+ def test_can_retry_eh_change_requests
224
+ post = Net::HTTP::Post.new '/'
225
+
226
+ refute @http.can_retry? post
227
+
228
+ @http.retry_change_requests = true
229
+
230
+ assert @http.can_retry? post
231
+ end
232
+
233
+ def test_can_retry_eh_idempotent
234
+ head = Net::HTTP::Head.new '/'
235
+
236
+ refute @http.can_retry? head
237
+
238
+ post = Net::HTTP::Post.new '/'
239
+
240
+ refute @http.can_retry? post
241
+ end
242
+
243
+ def test_cert_store_equals
244
+ @http.cert_store = :cert_store
245
+
246
+ assert_equal :cert_store, @http.cert_store
247
+ assert_equal 1, @http.ssl_generation
248
+ end
249
+
250
+ def test_certificate_equals
251
+ @http.certificate = :cert
252
+
253
+ assert_equal :cert, @http.certificate
254
+ assert_equal 1, @http.ssl_generation
255
+ end
256
+
257
+ def test_ciphers_equals
258
+ @http.ciphers = :ciphers
259
+
260
+ assert_equal :ciphers, @http.ciphers
261
+ assert_equal 1, @http.ssl_generation
262
+ end
263
+
264
+ def test_connection_for
265
+ @http.open_timeout = 123
266
+ @http.read_timeout = 321
267
+ @http.idle_timeout = 42
268
+
269
+ used = @http.connection_for @uri do |c|
270
+ assert_kind_of Net::HTTP, c.http
271
+
272
+ assert c.http.started?
273
+ refute c.http.proxy?
274
+
275
+ assert_equal 123, c.http.open_timeout
276
+ assert_equal 321, c.http.read_timeout
277
+ assert_equal 42, c.http.keep_alive_timeout
278
+
279
+ c
280
+ end
281
+
282
+ stored = @http.pool.checkout ['example.com', 80, nil, nil, nil, nil]
283
+
284
+ assert_same used, stored
285
+ end
286
+
287
+ def test_connection_for_cached
288
+ cached = basic_connection
289
+ cached.http.start
290
+
291
+ @http.read_timeout = 5
292
+
293
+ @http.connection_for @uri do |c|
294
+ assert c.http.started?
295
+
296
+ assert_equal 5, c.http.read_timeout
297
+
298
+ assert_same cached, c
299
+ end
300
+ end
301
+
302
+ def test_connection_for_closed
303
+ cached = basic_connection
304
+ cached.http.start
305
+ if Socket.const_defined? :TCP_NODELAY then
306
+ io = Object.new
307
+ def io.setsockopt(*a) raise IOError, 'closed stream' end
308
+ cached.instance_variable_set :@socket, Net::BufferedIO.new(io)
309
+ end
310
+
311
+ @http.connection_for @uri do |c|
312
+ assert c.http.started?
313
+
314
+ socket = c.http.instance_variable_get :@socket
315
+
316
+ refute_includes socket.io.instance_variables, :@setsockopt
317
+ refute_includes socket.io.instance_variables, '@setsockopt'
318
+ end
319
+ end
320
+
321
+ def test_connection_for_debug_output
322
+ io = StringIO.new
323
+ @http.debug_output = io
324
+
325
+ @http.connection_for @uri do |c|
326
+ assert c.http.started?
327
+ assert_equal io, c.http.instance_variable_get(:@debug_output)
328
+ end
329
+ end
330
+
331
+ def test_connection_for_cached_expire_always
332
+ cached = basic_connection
333
+ cached.http.start
334
+ cached.requests = 10
335
+ cached.last_use = Time.now # last used right now
336
+
337
+ @http.idle_timeout = 0
338
+
339
+ @http.connection_for @uri do |c|
340
+ assert c.http.started?
341
+
342
+ assert_same cached, c
343
+
344
+ assert_equal 0, c.requests, 'connection reset due to timeout'
345
+ end
346
+ end
347
+
348
+ def test_connection_for_cached_expire_never
349
+ cached = basic_connection
350
+ cached.http.start
351
+ cached.requests = 10
352
+ cached.last_use = Time.now # last used right now
353
+
354
+ @http.idle_timeout = nil
355
+
356
+ @http.connection_for @uri do |c|
357
+ assert c.http.started?
358
+
359
+ assert_same cached, c
360
+
361
+ assert_equal 10, c.requests, 'connection reset despite no timeout'
362
+ end
363
+ end
364
+
365
+ def test_connection_for_cached_expired
366
+ cached = basic_connection
367
+ cached.http.start
368
+ cached.requests = 10
369
+ cached.last_use = Time.now - 3600
370
+
371
+ @http.connection_for @uri do |c|
372
+ assert c.http.started?
373
+
374
+ assert_same cached, c
375
+ assert_equal 0, cached.requests, 'connection not reset due to timeout'
376
+ end
377
+ end
378
+
379
+ def test_connection_for_finished_ssl
380
+ skip 'OpenSSL is missing' unless HAVE_OPENSSL
381
+
382
+ uri = URI.parse 'https://example.com/path'
383
+
384
+ @http.connection_for uri do |c|
385
+ assert c.http.started?
386
+ assert c.http.use_ssl?
387
+
388
+ @http.finish c
389
+
390
+ refute c.http.started?
391
+ end
392
+
393
+ @http.connection_for uri do |c2|
394
+ assert c2.http.started?
395
+ end
396
+ end
397
+
398
+ def test_connection_for_ipv6
399
+ uri = URI.parse 'https://[::1]/'
400
+
401
+ @http.connection_for uri do |c|
402
+ assert_equal '::1', c.http.address
403
+ end
404
+ end
405
+
406
+ def test_connection_for_host_down
407
+ c = basic_connection
408
+ def (c.http).start; raise Errno::EHOSTDOWN end
409
+ def (c.http).started?; false end
410
+
411
+ e = assert_raises Net::HTTP::Persistent::Error do
412
+ @http.connection_for @uri do end
413
+ end
414
+
415
+ assert_equal 'host down: example.com:80', e.message
416
+ end
417
+
418
+ def test_connection_for_http_class_with_fakeweb
419
+ Object.send :const_set, :FakeWeb, nil
420
+
421
+ @http.connection_for @uri do |c|
422
+ assert_instance_of Net::HTTP, c.http
423
+ end
424
+ ensure
425
+ if Object.const_defined?(:FakeWeb) then
426
+ Object.send :remove_const, :FakeWeb
427
+ end
428
+ end
429
+
430
+ def test_connection_for_http_class_with_webmock
431
+ Object.send :const_set, :WebMock, nil
432
+ @http.connection_for @uri do |c|
433
+ assert_instance_of Net::HTTP, c.http
434
+ end
435
+ ensure
436
+ if Object.const_defined?(:WebMock) then
437
+ Object.send :remove_const, :WebMock
438
+ end
439
+ end
440
+
441
+ def test_connection_for_http_class_with_artifice
442
+ Object.send :const_set, :Artifice, nil
443
+ @http.connection_for @uri do |c|
444
+ assert_instance_of Net::HTTP, c.http
445
+ end
446
+ ensure
447
+ if Object.const_defined?(:Artifice) then
448
+ Object.send :remove_const, :Artifice
449
+ end
450
+ end
451
+
452
+ def test_connection_for_name
453
+ http = Net::HTTP::Persistent.new name: 'name'
454
+ uri = URI.parse 'http://example/'
455
+
456
+ http.connection_for uri do |c|
457
+ assert c.http.started?
458
+ end
459
+ end
460
+
461
+ def test_connection_for_proxy
462
+ uri = URI.parse 'http://proxy.example'
463
+ uri.user = 'johndoe'
464
+ uri.password = 'muffins'
465
+
466
+ http = Net::HTTP::Persistent.new proxy: uri
467
+
468
+ used = http.connection_for @uri do |c|
469
+ assert c.http.started?
470
+ assert c.http.proxy?
471
+
472
+ c
473
+ end
474
+
475
+ stored = http.pool.checkout ['example.com', 80,
476
+ 'proxy.example', 80,
477
+ 'johndoe', 'muffins']
478
+
479
+ assert_same used, stored
480
+ end
481
+
482
+ def test_connection_for_proxy_unescaped
483
+ uri = URI.parse 'http://proxy.example'
484
+ uri.user = 'john%40doe'
485
+ uri.password = 'muf%3Afins'
486
+ uri.freeze
487
+
488
+ http = Net::HTTP::Persistent.new proxy: uri
489
+
490
+ http.connection_for @uri do end
491
+
492
+ stored = http.pool.checkout ['example.com', 80,
493
+ 'proxy.example', 80,
494
+ 'john@doe', 'muf:fins']
495
+
496
+ assert stored
497
+ end
498
+
499
+ def test_connection_for_proxy_host_down
500
+ Net::HTTP.use_connect :host_down_connect
501
+
502
+ uri = URI.parse 'http://proxy.example'
503
+ uri.user = 'johndoe'
504
+ uri.password = 'muffins'
505
+
506
+ http = Net::HTTP::Persistent.new proxy: uri
507
+
508
+ e = assert_raises Net::HTTP::Persistent::Error do
509
+ http.connection_for @uri do end
510
+ end
511
+
512
+ assert_equal 'host down: proxy.example:80', e.message
513
+ end
514
+
515
+ def test_connection_for_proxy_refused
516
+ Net::HTTP.use_connect :refused_connect
517
+
518
+ uri = URI.parse 'http://proxy.example'
519
+ uri.user = 'johndoe'
520
+ uri.password = 'muffins'
521
+
522
+ http = Net::HTTP::Persistent.new proxy: uri
523
+
524
+ e = assert_raises Net::HTTP::Persistent::Error do
525
+ http.connection_for @uri do end
526
+ end
527
+
528
+ assert_equal 'connection refused: proxy.example:80', e.message
529
+ end
530
+
531
+ def test_connection_for_no_proxy
532
+ uri = URI.parse 'http://proxy.example'
533
+ uri.user = 'johndoe'
534
+ uri.password = 'muffins'
535
+ uri.query = 'no_proxy=example.com'
536
+
537
+ http = Net::HTTP::Persistent.new proxy: uri
538
+
539
+ http.connection_for @uri do |c|
540
+ assert c.http.started?
541
+ refute c.http.proxy?
542
+ end
543
+
544
+ stored = http.pool.checkout ['example.com', 80]
545
+
546
+ assert stored
547
+ end
548
+
549
+ def test_connection_for_no_proxy_from_env
550
+ ENV['http_proxy'] = 'proxy.example'
551
+ ENV['no_proxy'] = 'localhost, example.com,'
552
+ ENV['proxy_user'] = 'johndoe'
553
+ ENV['proxy_password'] = 'muffins'
554
+
555
+ http = Net::HTTP::Persistent.new proxy: :ENV
556
+
557
+ http.connection_for @uri do |c|
558
+ assert c.http.started?
559
+ refute c.http.proxy?
560
+ refute c.http.proxy_from_env?
561
+ end
562
+ end
563
+
564
+ def test_connection_for_refused
565
+ Net::HTTP.use_connect :refused_connect
566
+
567
+ e = assert_raises Net::HTTP::Persistent::Error do
568
+ @http.connection_for @uri do end
569
+ end
570
+
571
+ assert_equal 'connection refused: example.com:80', e.message
572
+ end
573
+
574
+ def test_connection_for_ssl
575
+ skip 'OpenSSL is missing' unless HAVE_OPENSSL
576
+
577
+ uri = URI.parse 'https://example.com/path'
578
+
579
+ @http.connection_for uri do |c|
580
+ assert c.http.started?
581
+ assert c.http.use_ssl?
582
+ end
583
+ end
584
+
585
+ def test_connection_for_ssl_cached
586
+ skip 'OpenSSL is missing' unless HAVE_OPENSSL
587
+
588
+ @uri = URI.parse 'https://example.com/path'
589
+
590
+ cached = ssl_connection
591
+
592
+ @http.connection_for @uri do |c|
593
+ assert_same cached, c
594
+ end
595
+ end
596
+
597
+ def test_connection_for_ssl_cached_reconnect
598
+ skip 'OpenSSL is missing' unless HAVE_OPENSSL
599
+
600
+ @uri = URI.parse 'https://example.com/path'
601
+
602
+ cached = ssl_connection
603
+
604
+ ssl_generation = @http.ssl_generation
605
+
606
+ @http.reconnect_ssl
607
+
608
+ @http.connection_for @uri do |c|
609
+ assert_same cached, c
610
+ refute_equal ssl_generation, c.ssl_generation
611
+ end
612
+ end
613
+
614
+ def test_connection_for_ssl_case
615
+ skip 'OpenSSL is missing' unless HAVE_OPENSSL
616
+
617
+ uri = URI.parse 'HTTPS://example.com/path'
618
+ @http.connection_for uri do |c|
619
+ assert c.http.started?
620
+ assert c.http.use_ssl?
621
+ end
622
+ end
623
+
624
+ def test_connection_for_timeout
625
+ cached = basic_connection
626
+ cached.http.start
627
+ cached.requests = 10
628
+ cached.last_use = Time.now - 6
629
+
630
+ @http.connection_for @uri do |c|
631
+ assert c.http.started?
632
+ assert_equal 0, c.requests
633
+
634
+ assert_same cached, c
635
+ end
636
+ end
637
+
638
+ def test_error_message
639
+ c = basic_connection
640
+ c.last_use = Time.now - 1
641
+ c.requests = 5
642
+
643
+ message = @http.error_message c
644
+ assert_match %r%after 4 requests on #{c.http.object_id}%, message
645
+ assert_match %r%, last used [\d.]+ seconds ago%, message
646
+ end
647
+
648
+ def test_escape
649
+ assert_nil @http.escape nil
650
+
651
+ assert_equal '+%3F', @http.escape(' ?')
652
+ end
653
+
654
+ def test_unescape
655
+ assert_nil @http.unescape nil
656
+
657
+ assert_equal ' ?', @http.unescape('+%3F')
658
+ end
659
+
660
+ def test_expired_eh
661
+ c = basic_connection
662
+ c.requests = 0
663
+ c.last_use = Time.now - 11
664
+
665
+ @http.idle_timeout = 0
666
+ assert @http.expired? c
667
+
668
+ @http.idle_timeout = 10
669
+ assert @http.expired? c
670
+
671
+ @http.idle_timeout = 11
672
+ assert @http.expired? c
673
+
674
+ @http.idle_timeout = 12
675
+ refute @http.expired? c
676
+
677
+ @http.idle_timeout = nil
678
+ refute @http.expired? c
679
+ end
680
+
681
+ def test_expired_due_to_max_requests
682
+ c = basic_connection
683
+ c.requests = 0
684
+ c.last_use = Time.now
685
+
686
+ refute @http.expired? c
687
+
688
+ c.requests = 10
689
+ refute @http.expired? c
690
+
691
+ @http.max_requests = 10
692
+ assert @http.expired? c
693
+
694
+ c.requests = 9
695
+ refute @http.expired? c
696
+ end
697
+
698
+ def test_finish
699
+ c = basic_connection
700
+ c.requests = 5
701
+
702
+ @http.finish c
703
+
704
+ refute c.http.started?
705
+ assert c.http.finished?
706
+
707
+ assert_equal 0, c.requests
708
+ assert_equal Net::HTTP::Persistent::EPOCH, c.last_use
709
+ end
710
+
711
+ def test_finish_io_error
712
+ c = basic_connection
713
+ def (c.http).finish; @finished += 1; raise IOError end
714
+ c.requests = 5
715
+
716
+ @http.finish c
717
+
718
+ refute c.http.started?
719
+ assert c.http.finished?
720
+ end
721
+
722
+ def test_finish_ssl_no_session_reuse
723
+ http = Net::HTTP.new 'localhost', 443, ssl: true
724
+ http.instance_variable_set :@ssl_session, :something
725
+
726
+ c = Net::HTTP::Persistent::Connection.allocate
727
+ c.instance_variable_set :@http, http
728
+
729
+ @http.reuse_ssl_sessions = false
730
+
731
+ @http.finish c
732
+
733
+ assert_nil c.http.instance_variable_get :@ssl_session
734
+ end
735
+
736
+ def test_http_version
737
+ assert_nil @http.http_version @uri
738
+
739
+ connection
740
+
741
+ @http.request @uri
742
+
743
+ assert_equal '1.1', @http.http_version(@uri)
744
+ end
745
+
746
+ def test_idempotent_eh
747
+ assert @http.idempotent? Net::HTTP::Delete.new '/'
748
+ assert @http.idempotent? Net::HTTP::Get.new '/'
749
+ assert @http.idempotent? Net::HTTP::Head.new '/'
750
+ assert @http.idempotent? Net::HTTP::Options.new '/'
751
+ assert @http.idempotent? Net::HTTP::Put.new '/'
752
+ assert @http.idempotent? Net::HTTP::Trace.new '/'
753
+
754
+ assert @http.idempotent? Net::HTTPGenericRequest.new('DELETE', false, true, '/')
755
+ assert @http.idempotent? Net::HTTPGenericRequest.new('GET', false, true, '/')
756
+ assert @http.idempotent? Net::HTTPGenericRequest.new('HEAD', false, false, '/')
757
+ assert @http.idempotent? Net::HTTPGenericRequest.new('OPTIONS', false, false, '/')
758
+ assert @http.idempotent? Net::HTTPGenericRequest.new('PUT', true, true, '/')
759
+ assert @http.idempotent? Net::HTTPGenericRequest.new('TRACE', false, true, '/')
760
+
761
+ refute @http.idempotent? Net::HTTP::Post.new '/'
762
+
763
+ refute @http.idempotent? Net::HTTPGenericRequest.new('POST', true, true, '/')
764
+ end
765
+
766
+ def test_normalize_uri
767
+ assert_equal 'http://example', @http.normalize_uri('example')
768
+ assert_equal 'http://example', @http.normalize_uri('http://example')
769
+ assert_equal 'https://example', @http.normalize_uri('https://example')
770
+ end
771
+
772
+ def test_override_haeders
773
+ assert_empty @http.override_headers
774
+
775
+ @http.override_headers['User-Agent'] = 'MyCustomAgent'
776
+
777
+ expected = { 'User-Agent' => 'MyCustomAgent' }
778
+
779
+ assert_equal expected, @http.override_headers
780
+ end
781
+
782
+ def test_pipeline
783
+ skip 'net-http-pipeline not installed' unless defined?(Net::HTTP::Pipeline)
784
+
785
+ cached = basic_connection
786
+ cached.http.start
787
+
788
+ requests = [
789
+ Net::HTTP::Get.new((@uri + '1').request_uri),
790
+ Net::HTTP::Get.new((@uri + '2').request_uri),
791
+ ]
792
+
793
+ responses = @http.pipeline @uri, requests
794
+
795
+ assert_equal 2, responses.length
796
+ assert_equal '/1', responses.first
797
+ assert_equal '/2', responses.last
798
+ end
799
+
800
+ def test_private_key_equals
801
+ @http.private_key = :private_key
802
+
803
+ assert_equal :private_key, @http.private_key
804
+ assert_equal 1, @http.ssl_generation
805
+ end
806
+
807
+ def test_proxy_equals_env
808
+ ENV['http_proxy'] = 'proxy.example'
809
+
810
+ @http.proxy = :ENV
811
+
812
+ assert_equal URI.parse('http://proxy.example'), @http.proxy_uri
813
+
814
+ assert_equal 1, @http.generation, 'generation'
815
+ assert_equal 1, @http.ssl_generation, 'ssl_generation'
816
+ end
817
+
818
+ def test_proxy_equals_nil
819
+ @http.proxy = nil
820
+
821
+ assert_nil @http.proxy_uri
822
+
823
+ assert_equal 1, @http.generation, 'generation'
824
+ assert_equal 1, @http.ssl_generation, 'ssl_generation'
825
+ end
826
+
827
+ def test_proxy_equals_uri
828
+ proxy_uri = URI.parse 'http://proxy.example'
829
+
830
+ @http.proxy = proxy_uri
831
+
832
+ assert_equal proxy_uri, @http.proxy_uri
833
+ end
834
+
835
+ def test_proxy_from_env
836
+ ENV['http_proxy'] = 'proxy.example'
837
+ ENV['http_proxy_user'] = 'johndoe'
838
+ ENV['http_proxy_pass'] = 'muffins'
839
+ ENV['NO_PROXY'] = 'localhost,example.com'
840
+
841
+ uri = @http.proxy_from_env
842
+
843
+ expected = URI.parse 'http://proxy.example'
844
+ expected.user = 'johndoe'
845
+ expected.password = 'muffins'
846
+ expected.query = 'no_proxy=localhost%2Cexample.com'
847
+
848
+ assert_equal expected, uri
849
+ end
850
+
851
+ def test_proxy_from_env_lower
852
+ ENV['http_proxy'] = 'proxy.example'
853
+ ENV['http_proxy_user'] = 'johndoe'
854
+ ENV['http_proxy_pass'] = 'muffins'
855
+ ENV['no_proxy'] = 'localhost,example.com'
856
+
857
+ uri = @http.proxy_from_env
858
+
859
+ expected = URI.parse 'http://proxy.example'
860
+ expected.user = 'johndoe'
861
+ expected.password = 'muffins'
862
+ expected.query = 'no_proxy=localhost%2Cexample.com'
863
+
864
+ assert_equal expected, uri
865
+ end
866
+
867
+ def test_proxy_from_env_nil
868
+ uri = @http.proxy_from_env
869
+
870
+ assert_nil uri
871
+
872
+ ENV['http_proxy'] = ''
873
+
874
+ uri = @http.proxy_from_env
875
+
876
+ assert_nil uri
877
+ end
878
+
879
+ def test_proxy_from_env_no_proxy_star
880
+ uri = @http.proxy_from_env
881
+
882
+ assert_nil uri
883
+
884
+ ENV['http_proxy'] = 'proxy.example'
885
+ ENV['no_proxy'] = '*'
886
+
887
+ uri = @http.proxy_from_env
888
+
889
+ assert_nil uri
890
+ end
891
+
892
+ def test_proxy_bypass
893
+ ENV['http_proxy'] = 'proxy.example'
894
+ ENV['no_proxy'] = 'localhost,example.com:80'
895
+
896
+ @http.proxy = :ENV
897
+
898
+ assert @http.proxy_bypass? 'localhost', 80
899
+ assert @http.proxy_bypass? 'localhost', 443
900
+ assert @http.proxy_bypass? 'LOCALHOST', 80
901
+ assert @http.proxy_bypass? 'example.com', 80
902
+ refute @http.proxy_bypass? 'example.com', 443
903
+ assert @http.proxy_bypass? 'www.example.com', 80
904
+ refute @http.proxy_bypass? 'www.example.com', 443
905
+ assert @http.proxy_bypass? 'endingexample.com', 80
906
+ refute @http.proxy_bypass? 'example.org', 80
907
+ end
908
+
909
+ def test_proxy_bypass_space
910
+ ENV['http_proxy'] = 'proxy.example'
911
+ ENV['no_proxy'] = 'localhost, example.com'
912
+
913
+ @http.proxy = :ENV
914
+
915
+ assert @http.proxy_bypass? 'example.com', 80
916
+ refute @http.proxy_bypass? 'example.org', 80
917
+ end
918
+
919
+ def test_proxy_bypass_trailing
920
+ ENV['http_proxy'] = 'proxy.example'
921
+ ENV['no_proxy'] = 'localhost,example.com,'
922
+
923
+ @http.proxy = :ENV
924
+
925
+ assert @http.proxy_bypass? 'example.com', 80
926
+ refute @http.proxy_bypass? 'example.org', 80
927
+ end
928
+
929
+ def test_proxy_bypass_double_comma
930
+ ENV['http_proxy'] = 'proxy.example'
931
+ ENV['no_proxy'] = 'localhost,,example.com'
932
+
933
+ @http.proxy = :ENV
934
+
935
+ assert @http.proxy_bypass? 'example.com', 80
936
+ refute @http.proxy_bypass? 'example.org', 80
937
+ end
938
+
939
+ def test_reconnect
940
+ result = @http.reconnect
941
+
942
+ assert_equal 1, result
943
+ end
944
+
945
+ def test_reconnect_ssl
946
+ skip 'OpenSSL is missing' unless HAVE_OPENSSL
947
+
948
+ @uri = URI 'https://example.com'
949
+ now = Time.now
950
+
951
+ ssl_http = ssl_connection
952
+
953
+ def (ssl_http.http).finish
954
+ @started = 0
955
+ end
956
+
957
+ used1 = @http.connection_for @uri do |c|
958
+ c.requests = 1
959
+ c.last_use = now
960
+ c
961
+ end
962
+
963
+ assert_equal OpenSSL::SSL::VERIFY_PEER, used1.http.verify_mode
964
+
965
+ @http.verify_mode = OpenSSL::SSL::VERIFY_NONE
966
+ @http.reconnect_ssl
967
+
968
+ used2 = @http.connection_for @uri do |c|
969
+ c
970
+ end
971
+
972
+ assert_same used1, used2
973
+
974
+ assert_equal OpenSSL::SSL::VERIFY_NONE, used2.http.verify_mode,
975
+ 'verify mode must change'
976
+ assert_equal 0, used2.requests
977
+ assert_equal Net::HTTP::Persistent::EPOCH, used2.last_use
978
+ end
979
+
980
+ def test_request
981
+ @http.override_headers['user-agent'] = 'test ua'
982
+ @http.headers['accept'] = 'text/*'
983
+ c = connection
984
+
985
+ res = @http.request @uri
986
+ req = c.http.req
987
+
988
+ assert_kind_of Net::HTTPResponse, res
989
+
990
+ assert_kind_of Net::HTTP::Get, req
991
+ assert_equal '/path', req.path
992
+
993
+ assert_equal 'test ua', req['user-agent']
994
+ assert_match %r%text/\*%, req['accept']
995
+
996
+ assert_equal 'keep-alive', req['connection']
997
+ assert_equal '30', req['keep-alive']
998
+
999
+ assert_in_delta Time.now, c.last_use
1000
+
1001
+ assert_equal 1, c.requests
1002
+ end
1003
+
1004
+ def test_request_ETIMEDOUT
1005
+ c = basic_connection
1006
+ def (c.http).request(*a) raise Errno::ETIMEDOUT, "timed out" end
1007
+
1008
+ e = assert_raises Net::HTTP::Persistent::Error do
1009
+ @http.request @uri
1010
+ end
1011
+
1012
+ assert_equal 0, c.requests
1013
+ assert_match %r%too many connection resets%, e.message
1014
+ end
1015
+
1016
+ def test_request_bad_response
1017
+ c = basic_connection
1018
+ def (c.http).request(*a) raise Net::HTTPBadResponse end
1019
+
1020
+ e = assert_raises Net::HTTP::Persistent::Error do
1021
+ @http.request @uri
1022
+ end
1023
+
1024
+ assert_equal 0, c.requests
1025
+ assert_match %r%too many bad responses%, e.message
1026
+ end
1027
+
1028
+ def test_request_bad_response_retry
1029
+ c = basic_connection
1030
+ def (c.http).request(*a)
1031
+ raise Net::HTTPBadResponse
1032
+ end
1033
+
1034
+ assert_raises Net::HTTP::Persistent::Error do
1035
+ @http.request @uri
1036
+ end
1037
+
1038
+ assert c.http.finished?
1039
+ end
1040
+
1041
+ def test_request_bad_response_unsafe
1042
+ c = basic_connection
1043
+ def (c.http).request(*a)
1044
+ if instance_variable_defined? :@request then
1045
+ raise 'POST must not be retried'
1046
+ else
1047
+ @request = true
1048
+ raise Net::HTTPBadResponse
1049
+ end
1050
+ end
1051
+
1052
+ e = assert_raises Net::HTTP::Persistent::Error do
1053
+ @http.request @uri, Net::HTTP::Post.new(@uri.path)
1054
+ end
1055
+
1056
+ assert_equal 0, c.requests
1057
+ assert_match %r%too many bad responses%, e.message
1058
+ end
1059
+
1060
+ def test_request_block
1061
+ @http.headers['user-agent'] = 'test ua'
1062
+ c = connection
1063
+ body = nil
1064
+
1065
+ res = @http.request @uri do |r|
1066
+ body = r.read_body
1067
+ end
1068
+
1069
+ req = c.http.req
1070
+
1071
+ assert_kind_of Net::HTTPResponse, res
1072
+ refute_nil body
1073
+
1074
+ assert_kind_of Net::HTTP::Get, req
1075
+ assert_equal '/path', req.path
1076
+ assert_equal 'keep-alive', req['connection']
1077
+ assert_equal '30', req['keep-alive']
1078
+ assert_match %r%test ua%, req['user-agent']
1079
+
1080
+ assert_equal 1, c.requests
1081
+ end
1082
+
1083
+ def test_request_close_1_0
1084
+ c = connection
1085
+
1086
+ class << c.http
1087
+ remove_method :request
1088
+ end
1089
+
1090
+ def (c.http).request req
1091
+ @req = req
1092
+ r = Net::HTTPResponse.allocate
1093
+ r.instance_variable_set :@header, {}
1094
+ def r.http_version() '1.0' end
1095
+ def r.read_body() :read_body end
1096
+ yield r if block_given?
1097
+ r
1098
+ end
1099
+
1100
+ request = Net::HTTP::Get.new @uri.request_uri
1101
+
1102
+ res = @http.request @uri, request
1103
+ req = c.http.req
1104
+
1105
+ assert_kind_of Net::HTTPResponse, res
1106
+
1107
+ assert_kind_of Net::HTTP::Get, req
1108
+ assert_equal '/path', req.path
1109
+ assert_equal 'keep-alive', req['connection']
1110
+ assert_equal '30', req['keep-alive']
1111
+
1112
+ assert c.http.finished?
1113
+ end
1114
+
1115
+ def test_request_connection_close_request
1116
+ c = connection
1117
+
1118
+ request = Net::HTTP::Get.new @uri.request_uri
1119
+ request['connection'] = 'close'
1120
+
1121
+ res = @http.request @uri, request
1122
+ req = c.http.req
1123
+
1124
+ assert_kind_of Net::HTTPResponse, res
1125
+
1126
+ assert_kind_of Net::HTTP::Get, req
1127
+ assert_equal '/path', req.path
1128
+ assert_equal 'close', req['connection']
1129
+ assert_nil req['keep-alive']
1130
+
1131
+ assert c.http.finished?
1132
+ end
1133
+
1134
+ def test_request_connection_close_response
1135
+ c = connection
1136
+
1137
+ class << c.http
1138
+ remove_method :request
1139
+ end
1140
+
1141
+ def (c.http).request req
1142
+ @req = req
1143
+ r = Net::HTTPResponse.allocate
1144
+ r.instance_variable_set :@header, {}
1145
+ r['connection'] = 'close'
1146
+ def r.http_version() '1.1' end
1147
+ def r.read_body() :read_body end
1148
+ yield r if block_given?
1149
+ r
1150
+ end
1151
+
1152
+ request = Net::HTTP::Get.new @uri.request_uri
1153
+
1154
+ res = @http.request @uri, request
1155
+ req = c.http.req
1156
+
1157
+ assert_kind_of Net::HTTPResponse, res
1158
+
1159
+ assert_kind_of Net::HTTP::Get, req
1160
+ assert_equal '/path', req.path
1161
+ assert_equal 'keep-alive', req['connection']
1162
+ assert_equal '30', req['keep-alive']
1163
+
1164
+ assert c.http.finished?
1165
+ end
1166
+
1167
+ def test_request_exception
1168
+ c = basic_connection
1169
+ def (c.http).request(*a)
1170
+ raise Exception, "very bad things happened"
1171
+ end
1172
+
1173
+ assert_raises Exception do
1174
+ @http.request @uri
1175
+ end
1176
+
1177
+ assert_equal 0, c.requests
1178
+ assert c.http.finished?
1179
+ end
1180
+
1181
+ def test_request_invalid
1182
+ c = basic_connection
1183
+ def (c.http).request(*a) raise Errno::EINVAL, "write" end
1184
+
1185
+ e = assert_raises Net::HTTP::Persistent::Error do
1186
+ @http.request @uri
1187
+ end
1188
+
1189
+ assert_equal 0, c.requests
1190
+ assert_match %r%too many connection resets%, e.message
1191
+ end
1192
+
1193
+ def test_request_post
1194
+ c = connection
1195
+
1196
+ post = Net::HTTP::Post.new @uri.path
1197
+
1198
+ @http.request @uri, post
1199
+ req = c.http.req
1200
+
1201
+ assert_same post, req
1202
+ end
1203
+
1204
+ def test_request_reset
1205
+ c = basic_connection
1206
+ def (c.http).request(*a) raise Errno::ECONNRESET end
1207
+
1208
+ e = assert_raises Net::HTTP::Persistent::Error do
1209
+ @http.request @uri
1210
+ end
1211
+
1212
+ assert_equal 0, c.requests
1213
+ assert_match %r%too many connection resets%, e.message
1214
+ end
1215
+
1216
+ def test_request_reset_retry
1217
+ c = basic_connection
1218
+ c.last_use = Time.now
1219
+
1220
+ def (c.http).request(*a)
1221
+ raise Errno::ECONNRESET
1222
+ end
1223
+
1224
+ assert_raises Net::HTTP::Persistent::Error do
1225
+ @http.request @uri
1226
+ end
1227
+
1228
+ refute (c.http).reset?
1229
+ assert (c.http).finished?
1230
+ end
1231
+
1232
+ def test_request_reset_unsafe
1233
+ c = basic_connection
1234
+ def (c.http).request(*a)
1235
+ if instance_variable_defined? :@request then
1236
+ raise 'POST must not be retried'
1237
+ else
1238
+ @request = true
1239
+ raise Errno::ECONNRESET
1240
+ end
1241
+ end
1242
+
1243
+ e = assert_raises Net::HTTP::Persistent::Error do
1244
+ @http.request @uri, Net::HTTP::Post.new(@uri.path)
1245
+ end
1246
+
1247
+ assert_equal 0, c.requests
1248
+ assert_match %r%too many connection resets%, e.message
1249
+ end
1250
+
1251
+ def test_request_ssl_error
1252
+ skip 'OpenSSL is missing' unless HAVE_OPENSSL
1253
+
1254
+ uri = URI.parse 'https://example.com/path'
1255
+ @http.connection_for uri do |c|
1256
+ def (c.http).request(*)
1257
+ raise OpenSSL::SSL::SSLError, "SSL3_WRITE_PENDING:bad write retry"
1258
+ end
1259
+
1260
+ e = assert_raises Net::HTTP::Persistent::Error do
1261
+ @http.request uri
1262
+ end
1263
+ assert_match %r%bad write retry%, e.message
1264
+ end
1265
+ end
1266
+
1267
+ def test_request_setup
1268
+ @http.override_headers['user-agent'] = 'test ua'
1269
+ @http.headers['accept'] = 'text/*'
1270
+
1271
+ input = Net::HTTP::Post.new '/path'
1272
+
1273
+ req = @http.request_setup input
1274
+
1275
+ assert_same input, req
1276
+ assert_equal '/path', req.path
1277
+
1278
+ assert_equal 'test ua', req['user-agent']
1279
+ assert_match %r%text/\*%, req['accept']
1280
+
1281
+ assert_equal 'keep-alive', req['connection']
1282
+ assert_equal '30', req['keep-alive']
1283
+ end
1284
+
1285
+ def test_request_string
1286
+ @http.override_headers['user-agent'] = 'test ua'
1287
+ @http.headers['accept'] = 'text/*'
1288
+ c = connection
1289
+
1290
+ res = @http.request @uri.to_s
1291
+ req = c.http.req
1292
+
1293
+ assert_kind_of Net::HTTPResponse, res
1294
+
1295
+ assert_kind_of Net::HTTP::Get, req
1296
+ assert_equal '/path', req.path
1297
+
1298
+ assert_equal 1, c.requests
1299
+ end
1300
+
1301
+ def test_request_setup_uri
1302
+ uri = @uri + '?a=b'
1303
+
1304
+ req = @http.request_setup uri
1305
+
1306
+ assert_kind_of Net::HTTP::Get, req
1307
+ assert_equal '/path?a=b', req.path
1308
+ end
1309
+
1310
+ def test_request_failed
1311
+ c = basic_connection
1312
+ c.requests = 1
1313
+ c.last_use = Time.now
1314
+
1315
+ original = nil
1316
+
1317
+ begin
1318
+ raise 'original'
1319
+ rescue => original
1320
+ end
1321
+
1322
+ req = Net::HTTP::Get.new '/'
1323
+
1324
+ e = assert_raises Net::HTTP::Persistent::Error do
1325
+ @http.request_failed original, req, c
1326
+ end
1327
+
1328
+ assert_match "too many connection resets (due to original - RuntimeError)",
1329
+ e.message
1330
+
1331
+ assert_equal original.backtrace, e.backtrace
1332
+ end
1333
+
1334
+ def test_reset
1335
+ c = basic_connection
1336
+ c.http.start
1337
+ c.last_use = Time.now
1338
+ c.requests = 5
1339
+
1340
+ @http.reset c
1341
+
1342
+ assert c.http.started?
1343
+ assert c.http.finished?
1344
+ assert c.http.reset?
1345
+ assert_equal 0, c.requests
1346
+ assert_equal Net::HTTP::Persistent::EPOCH, c.last_use
1347
+ end
1348
+
1349
+ def test_reset_host_down
1350
+ c = basic_connection
1351
+ c.last_use = Time.now
1352
+ def (c.http).start; raise Errno::EHOSTDOWN end
1353
+ c.requests = 5
1354
+
1355
+ e = assert_raises Net::HTTP::Persistent::Error do
1356
+ @http.reset c
1357
+ end
1358
+
1359
+ assert_match %r%host down%, e.message
1360
+ assert_match __FILE__, e.backtrace.first
1361
+ end
1362
+
1363
+ def test_reset_io_error
1364
+ c = basic_connection
1365
+ c.last_use = Time.now
1366
+ c.requests = 5
1367
+
1368
+ @http.reset c
1369
+
1370
+ assert c.http.started?
1371
+ assert c.http.finished?
1372
+ end
1373
+
1374
+ def test_reset_refused
1375
+ c = basic_connection
1376
+ c.last_use = Time.now
1377
+ def (c.http).start; raise Errno::ECONNREFUSED end
1378
+ c.requests = 5
1379
+
1380
+ e = assert_raises Net::HTTP::Persistent::Error do
1381
+ @http.reset c
1382
+ end
1383
+
1384
+ assert_match %r%connection refused%, e.message
1385
+ assert_match __FILE__, e.backtrace.first
1386
+ end
1387
+
1388
+ def test_retry_change_requests_equals
1389
+ get = Net::HTTP::Get.new('/')
1390
+ post = Net::HTTP::Post.new('/')
1391
+
1392
+ refute @http.retry_change_requests
1393
+
1394
+ refute @http.can_retry?(get)
1395
+ refute @http.can_retry?(post)
1396
+
1397
+ @http.retry_change_requests = true
1398
+
1399
+ assert @http.retry_change_requests
1400
+
1401
+ refute @http.can_retry?(get)
1402
+ assert @http.can_retry?(post)
1403
+ end
1404
+
1405
+ def test_shutdown
1406
+ c = connection
1407
+
1408
+ orig = @http
1409
+ @http = Net::HTTP::Persistent.new name: 'name'
1410
+ c2 = connection
1411
+
1412
+ orig.shutdown
1413
+
1414
+ @http = orig
1415
+
1416
+ assert c.http.finished?, 'last-generation connection must be finished'
1417
+ refute c2.http.finished?, 'present generation connection must not be finished'
1418
+ end
1419
+
1420
+ def test_ssl
1421
+ skip 'OpenSSL is missing' unless HAVE_OPENSSL
1422
+
1423
+ @http.verify_callback = :callback
1424
+ c = Net::HTTP.new 'localhost', 80
1425
+
1426
+ @http.ssl c
1427
+
1428
+ assert c.use_ssl?
1429
+ assert_equal OpenSSL::SSL::VERIFY_PEER, c.verify_mode
1430
+ assert_kind_of OpenSSL::X509::Store, c.cert_store
1431
+ assert_nil c.verify_callback
1432
+ end
1433
+
1434
+ def test_ssl_ca_file
1435
+ skip 'OpenSSL is missing' unless HAVE_OPENSSL
1436
+
1437
+ @http.ca_file = 'ca_file'
1438
+ @http.verify_callback = :callback
1439
+ c = Net::HTTP.new 'localhost', 80
1440
+
1441
+ @http.ssl c
1442
+
1443
+ assert c.use_ssl?
1444
+ assert_equal OpenSSL::SSL::VERIFY_PEER, c.verify_mode
1445
+ assert_equal :callback, c.verify_callback
1446
+ end
1447
+
1448
+ def test_ssl_ca_path
1449
+ skip 'OpenSSL is missing' unless HAVE_OPENSSL
1450
+
1451
+ @http.ca_path = 'ca_path'
1452
+ @http.verify_callback = :callback
1453
+ c = Net::HTTP.new 'localhost', 80
1454
+
1455
+ @http.ssl c
1456
+
1457
+ assert c.use_ssl?
1458
+ assert_equal OpenSSL::SSL::VERIFY_PEER, c.verify_mode
1459
+ assert_equal :callback, c.verify_callback
1460
+ end
1461
+
1462
+ def test_ssl_cert_store
1463
+ skip 'OpenSSL is missing' unless HAVE_OPENSSL
1464
+
1465
+ store = OpenSSL::X509::Store.new
1466
+ @http.cert_store = store
1467
+
1468
+ c = Net::HTTP.new 'localhost', 80
1469
+
1470
+ @http.ssl c
1471
+
1472
+ assert c.use_ssl?
1473
+ assert_equal store, c.cert_store
1474
+ end
1475
+
1476
+ def test_ssl_cert_store_default
1477
+ skip 'OpenSSL is missing' unless HAVE_OPENSSL
1478
+
1479
+ @http.verify_mode = OpenSSL::SSL::VERIFY_PEER
1480
+
1481
+ c = Net::HTTP.new 'localhost', 80
1482
+
1483
+ @http.ssl c
1484
+
1485
+ assert c.use_ssl?
1486
+ assert c.cert_store
1487
+ end
1488
+
1489
+ def test_ssl_certificate
1490
+ skip 'OpenSSL is missing' unless HAVE_OPENSSL
1491
+
1492
+ @http.certificate = :cert
1493
+ @http.private_key = :key
1494
+ c = Net::HTTP.new 'localhost', 80
1495
+
1496
+ @http.ssl c
1497
+
1498
+ assert c.use_ssl?
1499
+ assert_equal :cert, c.cert
1500
+ assert_equal :key, c.key
1501
+ end
1502
+
1503
+ def test_ssl_verify_mode
1504
+ skip 'OpenSSL is missing' unless HAVE_OPENSSL
1505
+
1506
+ @http.verify_mode = OpenSSL::SSL::VERIFY_NONE
1507
+ c = Net::HTTP.new 'localhost', 80
1508
+
1509
+ @http.ssl c
1510
+
1511
+ assert c.use_ssl?
1512
+ assert_equal OpenSSL::SSL::VERIFY_NONE, c.verify_mode
1513
+ end
1514
+
1515
+ def test_ssl_warning
1516
+ skip 'OpenSSL is missing' unless HAVE_OPENSSL
1517
+
1518
+ begin
1519
+ orig_verify_peer = OpenSSL::SSL::VERIFY_PEER
1520
+ OpenSSL::SSL.send :remove_const, :VERIFY_PEER
1521
+ OpenSSL::SSL.send :const_set, :VERIFY_PEER, OpenSSL::SSL::VERIFY_NONE
1522
+
1523
+ c = Net::HTTP.new 'localhost', 80
1524
+
1525
+ out, err = capture_io do
1526
+ @http.ssl c
1527
+ end
1528
+
1529
+ assert_empty out
1530
+
1531
+ assert_match %r%localhost:80%, err
1532
+ assert_match %r%I_KNOW_THAT_OPENSSL%, err
1533
+
1534
+ Object.send :const_set, :I_KNOW_THAT_OPENSSL_VERIFY_PEER_EQUALS_VERIFY_NONE_IS_WRONG, nil
1535
+
1536
+ assert_silent do
1537
+ @http.ssl c
1538
+ end
1539
+ ensure
1540
+ OpenSSL::SSL.send :remove_const, :VERIFY_PEER
1541
+ OpenSSL::SSL.send :const_set, :VERIFY_PEER, orig_verify_peer
1542
+ if Object.const_defined?(:I_KNOW_THAT_OPENSSL_VERIFY_PEER_EQUALS_VERIFY_NONE_IS_WRONG) then
1543
+ Object.send :remove_const, :I_KNOW_THAT_OPENSSL_VERIFY_PEER_EQUALS_VERIFY_NONE_IS_WRONG
1544
+ end
1545
+ end
1546
+ end
1547
+
1548
+ def test_ssl_timeout_equals
1549
+ @http.ssl_timeout = :ssl_timeout
1550
+
1551
+ assert_equal :ssl_timeout, @http.ssl_timeout
1552
+ assert_equal 1, @http.ssl_generation
1553
+ end
1554
+
1555
+ def test_ssl_version_equals
1556
+ @http.ssl_version = :ssl_version
1557
+
1558
+ assert_equal :ssl_version, @http.ssl_version
1559
+ assert_equal 1, @http.ssl_generation
1560
+ end
1561
+
1562
+ def test_min_version_equals
1563
+ @http.min_version = :min_version
1564
+
1565
+ assert_equal :min_version, @http.min_version
1566
+ assert_equal 1, @http.ssl_generation
1567
+ end
1568
+
1569
+ def test_max_version_equals
1570
+ @http.max_version = :max_version
1571
+
1572
+ assert_equal :max_version, @http.max_version
1573
+ assert_equal 1, @http.ssl_generation
1574
+ end
1575
+
1576
+ def test_start
1577
+ c = basic_connection
1578
+ c = c.http
1579
+
1580
+ @http.socket_options << [Socket::SOL_SOCKET, Socket::SO_KEEPALIVE, 1]
1581
+ @http.debug_output = $stderr
1582
+ @http.open_timeout = 6
1583
+
1584
+ @http.start c
1585
+
1586
+ assert_equal $stderr, c.debug_output
1587
+ assert_equal 6, c.open_timeout
1588
+
1589
+ socket = c.instance_variable_get :@socket
1590
+
1591
+ expected = []
1592
+ expected << [Socket::IPPROTO_TCP, Socket::TCP_NODELAY, 1] if
1593
+ Socket.const_defined? :TCP_NODELAY
1594
+ expected << [Socket::SOL_SOCKET, Socket::SO_KEEPALIVE, 1]
1595
+
1596
+ assert_equal expected, socket.io.instance_variable_get(:@setsockopts)
1597
+ end
1598
+
1599
+ def test_verify_callback_equals
1600
+ @http.verify_callback = :verify_callback
1601
+
1602
+ assert_equal :verify_callback, @http.verify_callback
1603
+ assert_equal 1, @http.ssl_generation
1604
+ end
1605
+
1606
+ def test_verify_depth_equals
1607
+ @http.verify_depth = :verify_depth
1608
+
1609
+ assert_equal :verify_depth, @http.verify_depth
1610
+ assert_equal 1, @http.ssl_generation
1611
+ end
1612
+
1613
+ def test_verify_mode_equals
1614
+ @http.verify_mode = :verify_mode
1615
+
1616
+ assert_equal :verify_mode, @http.verify_mode
1617
+ assert_equal 1, @http.ssl_generation
1618
+ end
1619
+
1620
+ end
1621
+