vagrant-unbundled 2.0.0.1 → 2.0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (351) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +2 -2
  3. data/CHANGELOG.md +34 -0
  4. data/Gemfile.lock +10 -10
  5. data/README.md +2 -2
  6. data/contrib/sudoers/linux-suse +6 -7
  7. data/lib/vagrant/plugin/v2/command.rb +3 -0
  8. data/lib/vagrant/plugin/v2/communicator.rb +1 -1
  9. data/lib/vagrant/registry.rb +1 -1
  10. data/lib/vagrant/util/downloader.rb +1 -2
  11. data/lib/vagrant/util/is_port_open.rb +2 -1
  12. data/lib/vagrant/util/keypair.rb +1 -1
  13. data/lib/vagrant/util/platform.rb +39 -23
  14. data/plugins/commands/destroy/command.rb +31 -10
  15. data/plugins/communicators/ssh/communicator.rb +1 -0
  16. data/plugins/communicators/winrm/helper.rb +6 -1
  17. data/plugins/guests/solaris11/cap/change_host_name.rb +0 -2
  18. data/plugins/guests/solaris11/cap/configure_networks.rb +1 -7
  19. data/plugins/guests/solaris11/plugin.rb +5 -35
  20. data/plugins/guests/windows/cap/public_key.rb +2 -0
  21. data/plugins/guests/windows/guest_network.rb +3 -3
  22. data/plugins/guests/windows/scripts/reboot_detect.ps1 +5 -0
  23. data/plugins/providers/docker/driver.rb +1 -1
  24. data/plugins/providers/docker/executor/local.rb +4 -0
  25. data/plugins/providers/docker/executor/vagrant.rb +4 -0
  26. data/plugins/providers/hyperv/scripts/import_vm_vmcx.ps1 +1 -1
  27. data/plugins/providers/virtualbox/driver/meta.rb +1 -0
  28. data/plugins/providers/virtualbox/driver/version_5_2.rb +16 -0
  29. data/plugins/providers/virtualbox/plugin.rb +1 -0
  30. data/plugins/providers/virtualbox/synced_folder.rb +1 -1
  31. data/plugins/provisioners/chef/provisioner/chef_client.rb +30 -23
  32. data/plugins/provisioners/chef/provisioner/chef_solo.rb +26 -19
  33. data/plugins/provisioners/chef/provisioner/chef_zero.rb +29 -22
  34. data/plugins/provisioners/puppet/provisioner/puppet.rb +23 -4
  35. data/plugins/provisioners/salt/bootstrap-salt.ps1 +15 -3
  36. data/plugins/provisioners/salt/bootstrap-salt.sh +2 -0
  37. data/plugins/provisioners/salt/config.rb +11 -0
  38. data/plugins/provisioners/salt/provisioner.rb +10 -7
  39. data/plugins/provisioners/shell/provisioner.rb +1 -1
  40. data/templates/locales/en.yml +5 -0
  41. data/test/unit/base.rb +2 -0
  42. data/test/unit/plugins/commands/destroy/command_test.rb +155 -0
  43. data/test/unit/plugins/communicators/winrm/helper_test.rb +33 -0
  44. data/test/unit/plugins/guests/solaris11/cap/change_host_name_test.rb +36 -0
  45. data/test/unit/plugins/guests/solaris11/cap/configure_networks_test.rb +56 -0
  46. data/test/unit/plugins/providers/virtualbox/synced_folder_test.rb +26 -0
  47. data/test/unit/plugins/provisioners/salt/config_test.rb +42 -0
  48. data/test/unit/plugins/provisioners/salt/provisioner_test.rb +16 -1
  49. data/test/unit/plugins/provisioners/shell/config_test.rb +3 -3
  50. data/test/unit/plugins/pushes/local-exec/config_test.rb +2 -2
  51. data/test/unit/vagrant/util/downloader_test.rb +28 -0
  52. data/test/unit/vagrant/util/platform_test.rb +58 -0
  53. data/vagrant.gemspec +1 -1
  54. data/vendor/bundle/ruby/2.4.0/bin/rwinrmcp +5 -0
  55. data/vendor/bundle/ruby/2.4.0/bin/vagrant +5 -0
  56. data/vendor/bundle/ruby/2.4.0/bin/vagrant-spec +5 -0
  57. data/vendor/bundle/ruby/2.4.0/bundler/gems/vagrant-spec-af86757912f7/vagrant-spec.gemspec +3 -3
  58. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/CHANGELOG.md +216 -0
  59. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/Gemfile +32 -0
  60. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/LICENSE.txt +202 -0
  61. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/README.md +121 -0
  62. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/Rakefile +32 -0
  63. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/data/unicode.data +0 -0
  64. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/lib/addressable/idna/native.rb +59 -0
  65. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/lib/addressable/idna/pure.rb +677 -0
  66. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/lib/addressable/idna.rb +25 -0
  67. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/lib/addressable/template.rb +1065 -0
  68. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/lib/addressable/uri.rb +2492 -0
  69. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/lib/addressable/version.rb +30 -0
  70. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/lib/addressable.rb +2 -0
  71. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/spec/addressable/idna_spec.rb +298 -0
  72. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/spec/addressable/net_http_compat_spec.rb +28 -0
  73. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/spec/addressable/rack_mount_compat_spec.rb +104 -0
  74. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/spec/addressable/security_spec.rb +57 -0
  75. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/spec/addressable/template_spec.rb +1419 -0
  76. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/spec/addressable/uri_spec.rb +6468 -0
  77. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/spec/spec_helper.rb +21 -0
  78. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/tasks/clobber.rake +2 -0
  79. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/tasks/gem.rake +91 -0
  80. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/tasks/git.rake +45 -0
  81. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/tasks/metrics.rake +22 -0
  82. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/tasks/rspec.rake +21 -0
  83. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/tasks/yard.rake +27 -0
  84. data/vendor/bundle/ruby/2.4.0/gems/hashdiff-0.3.7/.gitignore +15 -0
  85. data/vendor/bundle/ruby/2.4.0/gems/hashdiff-0.3.7/.rspec +1 -0
  86. data/vendor/bundle/ruby/2.4.0/gems/hashdiff-0.3.7/.travis.yml +13 -0
  87. data/vendor/bundle/ruby/2.4.0/gems/hashdiff-0.3.7/.yardopts +1 -0
  88. data/vendor/bundle/ruby/2.4.0/gems/hashdiff-0.3.7/Gemfile +6 -0
  89. data/vendor/bundle/ruby/2.4.0/gems/hashdiff-0.3.7/LICENSE +19 -0
  90. data/vendor/bundle/ruby/2.4.0/gems/hashdiff-0.3.7/README.md +265 -0
  91. data/vendor/bundle/ruby/2.4.0/gems/hashdiff-0.3.7/Rakefile +13 -0
  92. data/vendor/bundle/ruby/2.4.0/gems/hashdiff-0.3.7/changelog.md +72 -0
  93. data/vendor/bundle/ruby/2.4.0/gems/hashdiff-0.3.7/hashdiff.gemspec +25 -0
  94. data/vendor/bundle/ruby/2.4.0/gems/hashdiff-0.3.7/lib/hashdiff/diff.rb +232 -0
  95. data/vendor/bundle/ruby/2.4.0/gems/hashdiff-0.3.7/lib/hashdiff/lcs.rb +69 -0
  96. data/vendor/bundle/ruby/2.4.0/gems/hashdiff-0.3.7/lib/hashdiff/linear_compare_array.rb +155 -0
  97. data/vendor/bundle/ruby/2.4.0/gems/hashdiff-0.3.7/lib/hashdiff/patch.rb +88 -0
  98. data/vendor/bundle/ruby/2.4.0/gems/hashdiff-0.3.7/lib/hashdiff/util.rb +146 -0
  99. data/vendor/bundle/ruby/2.4.0/gems/hashdiff-0.3.7/lib/hashdiff/version.rb +3 -0
  100. data/vendor/bundle/ruby/2.4.0/gems/hashdiff-0.3.7/lib/hashdiff.rb +6 -0
  101. data/vendor/bundle/ruby/2.4.0/gems/hashdiff-0.3.7/spec/hashdiff/best_diff_spec.rb +74 -0
  102. data/vendor/bundle/ruby/2.4.0/gems/hashdiff-0.3.7/spec/hashdiff/diff_array_spec.rb +60 -0
  103. data/vendor/bundle/ruby/2.4.0/gems/hashdiff-0.3.7/spec/hashdiff/diff_spec.rb +339 -0
  104. data/vendor/bundle/ruby/2.4.0/gems/hashdiff-0.3.7/spec/hashdiff/lcs_spec.rb +75 -0
  105. data/vendor/bundle/ruby/2.4.0/gems/hashdiff-0.3.7/spec/hashdiff/linear_compare_array_spec.rb +48 -0
  106. data/vendor/bundle/ruby/2.4.0/gems/hashdiff-0.3.7/spec/hashdiff/patch_spec.rb +183 -0
  107. data/vendor/bundle/ruby/2.4.0/gems/hashdiff-0.3.7/spec/hashdiff/util_spec.rb +78 -0
  108. data/vendor/bundle/ruby/2.4.0/gems/hashdiff-0.3.7/spec/spec_helper.rb +13 -0
  109. data/vendor/bundle/ruby/2.4.0/gems/multi_json-1.12.2/CHANGELOG.md +250 -0
  110. data/vendor/bundle/ruby/2.4.0/gems/multi_json-1.12.2/CONTRIBUTING.md +46 -0
  111. data/vendor/bundle/ruby/2.4.0/gems/multi_json-1.12.2/LICENSE.md +20 -0
  112. data/vendor/bundle/ruby/2.4.0/gems/multi_json-1.12.2/README.md +122 -0
  113. data/vendor/bundle/ruby/2.4.0/gems/multi_json-1.12.2/lib/multi_json/adapter.rb +49 -0
  114. data/vendor/bundle/ruby/2.4.0/gems/multi_json-1.12.2/lib/multi_json/adapter_error.rb +15 -0
  115. data/vendor/bundle/ruby/2.4.0/gems/multi_json-1.12.2/lib/multi_json/adapters/gson.rb +20 -0
  116. data/vendor/bundle/ruby/2.4.0/gems/multi_json-1.12.2/lib/multi_json/adapters/jr_jackson.rb +25 -0
  117. data/vendor/bundle/ruby/2.4.0/gems/multi_json-1.12.2/lib/multi_json/adapters/json_common.rb +23 -0
  118. data/vendor/bundle/ruby/2.4.0/gems/multi_json-1.12.2/lib/multi_json/adapters/json_gem.rb +11 -0
  119. data/vendor/bundle/ruby/2.4.0/gems/multi_json-1.12.2/lib/multi_json/adapters/json_pure.rb +11 -0
  120. data/vendor/bundle/ruby/2.4.0/gems/multi_json-1.12.2/lib/multi_json/adapters/nsjsonserialization.rb +32 -0
  121. data/vendor/bundle/ruby/2.4.0/gems/multi_json-1.12.2/lib/multi_json/adapters/oj.rb +25 -0
  122. data/vendor/bundle/ruby/2.4.0/gems/multi_json-1.12.2/lib/multi_json/adapters/ok_json.rb +23 -0
  123. data/vendor/bundle/ruby/2.4.0/gems/multi_json-1.12.2/lib/multi_json/adapters/yajl.rb +19 -0
  124. data/vendor/bundle/ruby/2.4.0/gems/multi_json-1.12.2/lib/multi_json/convertible_hash_keys.rb +43 -0
  125. data/vendor/bundle/ruby/2.4.0/gems/multi_json-1.12.2/lib/multi_json/options.rb +39 -0
  126. data/vendor/bundle/ruby/2.4.0/gems/multi_json-1.12.2/lib/multi_json/options_cache.rb +29 -0
  127. data/vendor/bundle/ruby/2.4.0/gems/multi_json-1.12.2/lib/multi_json/parse_error.rb +17 -0
  128. data/vendor/bundle/ruby/2.4.0/gems/multi_json-1.12.2/lib/multi_json/vendor/okjson.rb +606 -0
  129. data/vendor/bundle/ruby/2.4.0/gems/multi_json-1.12.2/lib/multi_json/version.rb +17 -0
  130. data/vendor/bundle/ruby/2.4.0/gems/multi_json-1.12.2/lib/multi_json.rb +161 -0
  131. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/.gitignore +11 -0
  132. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/.rubocop.yml +32 -0
  133. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/.rubocop_defaults.yml +177 -0
  134. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/.travis.yml +24 -0
  135. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/.yardopts +1 -0
  136. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/2.0-Upgrade.md +52 -0
  137. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/CHANGELOG.md +330 -0
  138. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/Gemfile +10 -0
  139. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/LICENSE.txt +22 -0
  140. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/README.md +202 -0
  141. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/Rakefile +49 -0
  142. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/bin/console +14 -0
  143. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/data/list.txt +12288 -0
  144. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/lib/public_suffix/domain.rb +235 -0
  145. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/lib/public_suffix/errors.rb +39 -0
  146. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/lib/public_suffix/list.rb +243 -0
  147. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/lib/public_suffix/rule.rb +348 -0
  148. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/lib/public_suffix/version.rb +10 -0
  149. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/lib/public_suffix.rb +175 -0
  150. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/public_suffix.gemspec +25 -0
  151. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/test/.empty +2 -0
  152. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/test/acceptance_test.rb +127 -0
  153. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/test/benchmarks/bm_find.rb +66 -0
  154. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/test/benchmarks/bm_find_all.rb +102 -0
  155. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/test/benchmarks/bm_names.rb +91 -0
  156. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/test/benchmarks/bm_select.rb +26 -0
  157. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/test/benchmarks/bm_select_incremental.rb +25 -0
  158. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/test/benchmarks/bm_valid.rb +101 -0
  159. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/test/profilers/domain_profiler.rb +12 -0
  160. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/test/profilers/find_profiler.rb +12 -0
  161. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/test/profilers/find_profiler_jp.rb +12 -0
  162. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/test/profilers/initialization_profiler.rb +11 -0
  163. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/test/profilers/list_profsize.rb +11 -0
  164. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/test/profilers/object_binsize.rb +57 -0
  165. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/test/psl_test.rb +49 -0
  166. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/test/test_helper.rb +13 -0
  167. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/test/tests.txt +98 -0
  168. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/test/unit/domain_test.rb +104 -0
  169. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/test/unit/errors_test.rb +23 -0
  170. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/test/unit/list_test.rb +239 -0
  171. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/test/unit/public_suffix_test.rb +186 -0
  172. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/test/unit/rule_test.rb +220 -0
  173. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/.gemtest +0 -0
  174. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/.gitignore +34 -0
  175. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/.rspec-tm +2 -0
  176. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/.travis.yml +24 -0
  177. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/CHANGELOG.md +1460 -0
  178. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/Gemfile +9 -0
  179. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/LICENSE +20 -0
  180. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/README.md +1045 -0
  181. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/Rakefile +30 -0
  182. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/api.rb +97 -0
  183. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/assertion_failure.rb +11 -0
  184. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/callback_registry.rb +35 -0
  185. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/config.rb +18 -0
  186. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/cucumber.rb +10 -0
  187. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/deprecation.rb +9 -0
  188. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/errors.rb +17 -0
  189. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/http_lib_adapters/curb_adapter.rb +337 -0
  190. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/http_lib_adapters/em_http_request_adapter.rb +228 -0
  191. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/http_lib_adapters/excon_adapter.rb +162 -0
  192. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/http_lib_adapters/http_lib_adapter.rb +7 -0
  193. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/http_lib_adapters/http_lib_adapter_registry.rb +19 -0
  194. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/http_lib_adapters/http_rb/client.rb +14 -0
  195. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/http_lib_adapters/http_rb/request.rb +10 -0
  196. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/http_lib_adapters/http_rb/response.rb +43 -0
  197. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/http_lib_adapters/http_rb/streamer.rb +25 -0
  198. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/http_lib_adapters/http_rb/webmock.rb +68 -0
  199. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/http_lib_adapters/http_rb_adapter.rb +37 -0
  200. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/http_lib_adapters/httpclient_adapter.rb +240 -0
  201. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/http_lib_adapters/manticore_adapter.rb +127 -0
  202. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/http_lib_adapters/net_http.rb +362 -0
  203. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/http_lib_adapters/net_http_response.rb +34 -0
  204. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/http_lib_adapters/patron_adapter.rb +130 -0
  205. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/http_lib_adapters/typhoeus_hydra_adapter.rb +174 -0
  206. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/matchers/hash_including_matcher.rb +36 -0
  207. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/minitest.rb +41 -0
  208. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/rack_response.rb +69 -0
  209. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/request_body_diff.rb +64 -0
  210. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/request_execution_verifier.rb +78 -0
  211. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/request_pattern.rb +343 -0
  212. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/request_registry.rb +35 -0
  213. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/request_signature.rb +54 -0
  214. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/request_signature_snippet.rb +61 -0
  215. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/request_stub.rb +100 -0
  216. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/response.rb +153 -0
  217. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/responses_sequence.rb +40 -0
  218. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/rspec/matchers/request_pattern_matcher.rb +78 -0
  219. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/rspec/matchers/webmock_matcher.rb +52 -0
  220. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/rspec/matchers.rb +27 -0
  221. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/rspec.rb +35 -0
  222. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/stub_registry.rb +67 -0
  223. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/stub_request_snippet.rb +34 -0
  224. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/test_unit.rb +22 -0
  225. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/util/hash_counter.rb +32 -0
  226. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/util/hash_keys_stringifier.rb +25 -0
  227. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/util/hash_validator.rb +17 -0
  228. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/util/headers.rb +49 -0
  229. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/util/json.rb +78 -0
  230. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/util/query_mapper.rb +279 -0
  231. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/util/uri.rb +111 -0
  232. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/util/version_checker.rb +111 -0
  233. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/version.rb +3 -0
  234. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/webmock.rb +156 -0
  235. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock.rb +54 -0
  236. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/minitest/test_helper.rb +34 -0
  237. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/minitest/test_webmock.rb +9 -0
  238. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/minitest/webmock_spec.rb +60 -0
  239. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/curb/curb_spec.rb +466 -0
  240. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/curb/curb_spec_helper.rb +147 -0
  241. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/em_http_request/em_http_request_spec.rb +406 -0
  242. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/em_http_request/em_http_request_spec_helper.rb +77 -0
  243. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/excon/excon_spec.rb +75 -0
  244. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/excon/excon_spec_helper.rb +50 -0
  245. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/http_rb/http_rb_spec.rb +73 -0
  246. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/http_rb/http_rb_spec_helper.rb +51 -0
  247. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/httpclient/httpclient_spec.rb +209 -0
  248. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/httpclient/httpclient_spec_helper.rb +57 -0
  249. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/manticore/manticore_spec.rb +56 -0
  250. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/manticore/manticore_spec_helper.rb +35 -0
  251. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/net_http/net_http_shared.rb +142 -0
  252. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/net_http/net_http_spec.rb +317 -0
  253. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/net_http/net_http_spec_helper.rb +64 -0
  254. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/net_http/real_net_http_spec.rb +20 -0
  255. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/patron/patron_spec.rb +118 -0
  256. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/patron/patron_spec_helper.rb +54 -0
  257. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/shared/allowing_and_disabling_net_connect.rb +313 -0
  258. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/shared/callbacks.rb +147 -0
  259. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/shared/complex_cross_concern_behaviors.rb +36 -0
  260. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/shared/enabling_and_disabling_webmock.rb +95 -0
  261. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/shared/precedence_of_stubs.rb +15 -0
  262. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/shared/request_expectations.rb +916 -0
  263. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/shared/returning_declared_responses.rb +388 -0
  264. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/shared/stubbing_requests.rb +583 -0
  265. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/typhoeus/typhoeus_hydra_spec.rb +135 -0
  266. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/typhoeus/typhoeus_hydra_spec_helper.rb +60 -0
  267. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/webmock_shared.rb +41 -0
  268. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/fixtures/test.txt +1 -0
  269. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/quality_spec.rb +84 -0
  270. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/spec_helper.rb +48 -0
  271. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/support/example_curl_output.txt +22 -0
  272. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/support/failures.rb +9 -0
  273. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/support/my_rack_app.rb +53 -0
  274. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/support/network_connection.rb +19 -0
  275. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/support/webmock_server.rb +69 -0
  276. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/unit/api_spec.rb +75 -0
  277. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/unit/errors_spec.rb +129 -0
  278. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/unit/http_lib_adapters/http_lib_adapter_registry_spec.rb +17 -0
  279. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/unit/http_lib_adapters/http_lib_adapter_spec.rb +12 -0
  280. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/unit/matchers/hash_including_matcher_spec.rb +87 -0
  281. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/unit/rack_response_spec.rb +112 -0
  282. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/unit/request_body_diff_spec.rb +90 -0
  283. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/unit/request_execution_verifier_spec.rb +208 -0
  284. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/unit/request_pattern_spec.rb +590 -0
  285. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/unit/request_registry_spec.rb +76 -0
  286. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/unit/request_signature_snippet_spec.rb +89 -0
  287. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/unit/request_signature_spec.rb +155 -0
  288. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/unit/request_stub_spec.rb +199 -0
  289. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/unit/response_spec.rb +282 -0
  290. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/unit/stub_registry_spec.rb +103 -0
  291. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/unit/stub_request_snippet_spec.rb +95 -0
  292. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/unit/util/hash_counter_spec.rb +39 -0
  293. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/unit/util/hash_keys_stringifier_spec.rb +27 -0
  294. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/unit/util/headers_spec.rb +28 -0
  295. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/unit/util/json_spec.rb +33 -0
  296. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/unit/util/query_mapper_spec.rb +138 -0
  297. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/unit/util/uri_spec.rb +299 -0
  298. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/unit/util/version_checker_spec.rb +65 -0
  299. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/unit/webmock_spec.rb +11 -0
  300. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/test/http_request.rb +24 -0
  301. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/test/shared_test.rb +95 -0
  302. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/test/test_helper.rb +23 -0
  303. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/test/test_webmock.rb +6 -0
  304. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/webmock.gemspec +46 -0
  305. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/.gitignore +11 -0
  306. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/.rspec +3 -0
  307. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/.rubocop.yml +9 -0
  308. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/.travis.yml +9 -0
  309. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/Gemfile +5 -0
  310. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/LICENSE +202 -0
  311. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/README.md +79 -0
  312. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/Rakefile +28 -0
  313. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/VERSION +1 -0
  314. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/Vagrantfile +9 -0
  315. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/appveyor.yml +38 -0
  316. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/bin/rwinrmcp +86 -0
  317. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/changelog.md +60 -0
  318. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/lib/winrm-fs/core/file_transporter.rb +527 -0
  319. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/lib/winrm-fs/core/tmp_zip.rb +177 -0
  320. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/lib/winrm-fs/exceptions.rb +28 -0
  321. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/lib/winrm-fs/file_manager.rb +118 -0
  322. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/lib/winrm-fs/scripts/check_files.ps1.erb +49 -0
  323. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/lib/winrm-fs/scripts/checksum.ps1.erb +13 -0
  324. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/lib/winrm-fs/scripts/create_dir.ps1.erb +6 -0
  325. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/lib/winrm-fs/scripts/delete.ps1.erb +6 -0
  326. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/lib/winrm-fs/scripts/download.ps1.erb +8 -0
  327. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/lib/winrm-fs/scripts/exists.ps1.erb +10 -0
  328. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/lib/winrm-fs/scripts/extract_files.ps1.erb +52 -0
  329. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/lib/winrm-fs/scripts/scripts.rb +31 -0
  330. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/lib/winrm-fs.rb +28 -0
  331. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/spec/config-example.yml +3 -0
  332. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/spec/integration/file_manager_spec.rb +224 -0
  333. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/spec/integration/tmp_zip_spec.rb +26 -0
  334. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/spec/matchers.rb +58 -0
  335. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/spec/spec_helper.rb +71 -0
  336. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/spec/unit/tmp_zip_spec.rb +79 -0
  337. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/winrm-fs.gemspec +37 -0
  338. data/vendor/bundle/ruby/2.4.0/specifications/addressable-2.5.2.gemspec +39 -0
  339. data/vendor/bundle/ruby/2.4.0/specifications/hashdiff-0.3.7.gemspec +39 -0
  340. data/vendor/bundle/ruby/2.4.0/specifications/multi_json-1.12.2.gemspec +33 -0
  341. data/vendor/bundle/ruby/2.4.0/specifications/public_suffix-3.0.1.gemspec +41 -0
  342. data/vendor/bundle/ruby/2.4.0/specifications/webmock-2.3.2.gemspec +79 -0
  343. data/vendor/bundle/ruby/2.4.0/specifications/winrm-fs-1.1.1.gemspec +57 -0
  344. data/version.txt +1 -1
  345. metadata +295 -11
  346. data/plugins/guests/solaris11/cap/halt.rb +0 -26
  347. data/plugins/guests/solaris11/cap/insert_public_key.rb +0 -21
  348. data/plugins/guests/solaris11/cap/mount_virtualbox_shared_folder.rb +0 -45
  349. data/plugins/guests/solaris11/cap/remove_public_key.rb +0 -21
  350. data/plugins/guests/solaris11/cap/rsync.rb +0 -29
  351. data/test/unit/plugins/guests/solaris11/cap/halt_test.rb +0 -44
@@ -0,0 +1,35 @@
1
+ require 'webmock'
2
+
3
+ # RSpec 1.x and 2.x compatibility
4
+ if defined?(RSpec::Expectations::ExpectationNotMetError)
5
+ RSPEC_NAMESPACE = RSPEC_CONFIGURER = RSpec
6
+ elsif defined?(Spec) && defined?(Spec.configure)
7
+ RSPEC_NAMESPACE = Spec
8
+ RSPEC_CONFIGURER = Spec::Runner
9
+ else
10
+ begin
11
+ require 'rspec/core'
12
+ require 'rspec/expectations'
13
+ RSPEC_NAMESPACE = RSPEC_CONFIGURER = RSpec
14
+ rescue LoadError
15
+ require 'spec'
16
+ RSPEC_NAMESPACE = Spec
17
+ RSPEC_CONFIGURER = Spec::Runner
18
+ end
19
+ end
20
+
21
+ require 'webmock/rspec/matchers'
22
+
23
+ WebMock.enable!
24
+
25
+ RSPEC_CONFIGURER.configure { |config|
26
+
27
+ config.include WebMock::API
28
+ config.include WebMock::Matchers
29
+
30
+ config.after(:each) do
31
+ WebMock.reset!
32
+ end
33
+ }
34
+
35
+ WebMock::AssertionFailure.error_class = RSPEC_NAMESPACE::Expectations::ExpectationNotMetError
@@ -0,0 +1,67 @@
1
+ module WebMock
2
+
3
+ class StubRegistry
4
+ include Singleton
5
+
6
+ attr_accessor :request_stubs
7
+
8
+ def initialize
9
+ reset!
10
+ end
11
+
12
+ def global_stubs
13
+ @global_stubs ||= []
14
+ end
15
+
16
+ def reset!
17
+ self.request_stubs = []
18
+ end
19
+
20
+ def register_global_stub(&block)
21
+ # This hash contains the responses returned by the block,
22
+ # keyed by the exact request (using the object_id).
23
+ # That way, there's no race condition in case #to_return
24
+ # doesn't run immediately after stub.with.
25
+ responses = {}
26
+
27
+ stub = ::WebMock::RequestStub.new(:any, /.*/).with { |request|
28
+ responses[request.object_id] = block.call(request)
29
+ }.to_return(lambda { |request| responses.delete(request.object_id) })
30
+
31
+ global_stubs.push stub
32
+ end
33
+
34
+ def register_request_stub(stub)
35
+ request_stubs.insert(0, stub)
36
+ stub
37
+ end
38
+
39
+ def remove_request_stub(stub)
40
+ if not request_stubs.delete(stub)
41
+ raise "Request stub \n\n #{stub.to_s} \n\n is not registered."
42
+ end
43
+ end
44
+
45
+ def registered_request?(request_signature)
46
+ request_stub_for(request_signature)
47
+ end
48
+
49
+ def response_for_request(request_signature)
50
+ stub = request_stub_for(request_signature)
51
+ stub ? evaluate_response_for_request(stub.response, request_signature) : nil
52
+ end
53
+
54
+ private
55
+
56
+ def request_stub_for(request_signature)
57
+ (global_stubs + request_stubs).detect { |registered_request_stub|
58
+ registered_request_stub.request_pattern.matches?(request_signature)
59
+ }
60
+ end
61
+
62
+ def evaluate_response_for_request(response, request_signature)
63
+ response.dup.evaluate(request_signature)
64
+ end
65
+
66
+ end
67
+ end
@@ -0,0 +1,34 @@
1
+ module WebMock
2
+ class StubRequestSnippet
3
+ def initialize(request_stub)
4
+ @request_stub = request_stub
5
+ end
6
+
7
+ def body_pattern
8
+ request_pattern.body_pattern
9
+ end
10
+
11
+ def to_s(with_response = true)
12
+ request_pattern = @request_stub.request_pattern
13
+ string = "stub_request(:#{request_pattern.method_pattern.to_s},"
14
+ string << " \"#{request_pattern.uri_pattern.to_s}\")"
15
+
16
+ with = ""
17
+
18
+ if (request_pattern.body_pattern)
19
+ with << ":body => #{request_pattern.body_pattern.to_s}"
20
+ end
21
+
22
+ if (request_pattern.headers_pattern)
23
+ with << ",\n " unless with.empty?
24
+
25
+ with << ":headers => #{request_pattern.headers_pattern.to_s}"
26
+ end
27
+ string << ".\n with(#{with})" unless with.empty?
28
+ if with_response
29
+ string << ".\n to_return(:status => 200, :body => \"\", :headers => {})"
30
+ end
31
+ string
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,22 @@
1
+ require 'test/unit'
2
+ require 'webmock'
3
+
4
+ WebMock.enable!
5
+
6
+ module Test
7
+ module Unit
8
+ class TestCase
9
+ include WebMock::API
10
+
11
+ alias_method :teardown_without_webmock, :teardown
12
+ def teardown_with_webmock
13
+ teardown_without_webmock
14
+ WebMock.reset!
15
+ end
16
+ alias_method :teardown, :teardown_with_webmock
17
+
18
+ end
19
+ end
20
+ end
21
+
22
+ WebMock::AssertionFailure.error_class = Test::Unit::AssertionFailedError rescue MiniTest::Assertion # ruby1.9 compat
@@ -0,0 +1,32 @@
1
+ require 'thread'
2
+
3
+ module WebMock
4
+ module Util
5
+ class Util::HashCounter
6
+ attr_accessor :hash
7
+ def initialize
8
+ self.hash = {}
9
+ @order = {}
10
+ @max = 0
11
+ @lock = ::Mutex.new
12
+ end
13
+ def put key, num=1
14
+ @lock.synchronize do
15
+ hash[key] = (hash[key] || 0) + num
16
+ @order[key] = @max = @max + 1
17
+ end
18
+ end
19
+ def get key
20
+ @lock.synchronize do
21
+ hash[key] || 0
22
+ end
23
+ end
24
+
25
+ def each(&block)
26
+ @order.to_a.sort {|a, b| a[1] <=> b[1]}.each do |a|
27
+ block.call(a[0], hash[a[0]])
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,25 @@
1
+ module WebMock
2
+ module Util
3
+ class HashKeysStringifier
4
+
5
+ def self.stringify_keys!(arg, options = {})
6
+ case arg
7
+ when Array
8
+ arg.map { |elem|
9
+ options[:deep] ? stringify_keys!(elem, options) : elem
10
+ }
11
+ when Hash
12
+ Hash[
13
+ *arg.map { |key, value|
14
+ k = key.is_a?(Symbol) ? key.to_s : key
15
+ v = (options[:deep] ? stringify_keys!(value, options) : value)
16
+ [k,v]
17
+ }.inject([]) {|r,x| r + x}]
18
+ else
19
+ arg
20
+ end
21
+ end
22
+
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,17 @@
1
+ module WebMock
2
+ class HashValidator
3
+ def initialize(hash)
4
+ @hash = hash
5
+ end
6
+
7
+ #This code is based on https://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/hash/keys.rb
8
+ def validate_keys(*valid_keys)
9
+ valid_keys.flatten!
10
+ @hash.each_key do |k|
11
+ unless valid_keys.include?(k)
12
+ raise ArgumentError.new("Unknown key: #{k.inspect}. Valid keys are: #{valid_keys.map(&:inspect).join(', ')}")
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,49 @@
1
+ require 'base64'
2
+
3
+ module WebMock
4
+
5
+ module Util
6
+
7
+ class Headers
8
+
9
+ def self.normalize_headers(headers)
10
+ return nil unless headers
11
+ array = headers.map { |name, value|
12
+ [name.to_s.split(/_|-/).map { |segment| segment.capitalize }.join("-"),
13
+ case value
14
+ when Regexp then value
15
+ when Array then (value.size == 1) ? value.first : value.map {|v| v.to_s}.sort
16
+ else value.to_s
17
+ end
18
+ ]
19
+ }
20
+ Hash[*array.inject([]) {|r,x| r + x}]
21
+ end
22
+
23
+ def self.sorted_headers_string(headers)
24
+ headers = WebMock::Util::Headers.normalize_headers(headers)
25
+ str = '{'
26
+ str << headers.map do |k,v|
27
+ v = case v
28
+ when Regexp then v.inspect
29
+ when Array then "["+v.map{|w| "'#{w.to_s}'"}.join(", ")+"]"
30
+ else "'#{v.to_s}'"
31
+ end
32
+ "'#{k}'=>#{v}"
33
+ end.sort.join(", ")
34
+ str << '}'
35
+ end
36
+
37
+ def self.decode_userinfo_from_header(header)
38
+ header.sub(/^Basic /, "").unpack("m").first
39
+ end
40
+
41
+ def self.basic_auth_header(*credentials)
42
+ "Basic #{Base64.strict_encode64(credentials.join(':')).chomp}"
43
+ end
44
+
45
+ end
46
+
47
+ end
48
+
49
+ end
@@ -0,0 +1,78 @@
1
+ # This is a copy of https://github.com/jnunemaker/crack/blob/master/lib/crack/json.rb
2
+ # with date parsing removed
3
+ # Copyright (c) 2004-2008 David Heinemeier Hansson
4
+ # Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
5
+ # The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
7
+
8
+ module WebMock
9
+ module Util
10
+ class JSON
11
+ class ParseError < StandardError; end
12
+
13
+ def self.parse(json)
14
+ yaml = unescape(convert_json_to_yaml(json))
15
+ YAML.load(yaml)
16
+ rescue ArgumentError => e
17
+ raise ParseError, "Invalid JSON string: #{yaml}, Error: #{e.inspect}"
18
+ end
19
+
20
+ protected
21
+ def self.unescape(str)
22
+ str.gsub(/\\u([0-9a-f]{4})/) { [$1.hex].pack("U") }
23
+ end
24
+
25
+ # Ensure that ":" and "," are always followed by a space
26
+ def self.convert_json_to_yaml(json) #:nodoc:
27
+ scanner, quoting, marks, pos, times = StringScanner.new(json), false, [], nil, []
28
+ while scanner.scan_until(/(\\['"]|['":,\\]|\\.)/)
29
+ case char = scanner[1]
30
+ when '"', "'"
31
+ if !quoting
32
+ quoting = char
33
+ pos = scanner.pos
34
+ elsif quoting == char
35
+ quoting = false
36
+ end
37
+ when ":",","
38
+ marks << scanner.pos - 1 unless quoting
39
+ when "\\"
40
+ scanner.skip(/\\/)
41
+ end
42
+ end
43
+
44
+ if marks.empty?
45
+ json.gsub(/\\\//, '/')
46
+ else
47
+ left_pos = [-1].push(*marks)
48
+ right_pos = marks << json.bytesize
49
+ output = []
50
+
51
+ if RUBY_VERSION != "1.9.2"
52
+ left_pos.each_with_index do |left, i|
53
+ if json.respond_to?(:byteslice)
54
+ output << json.byteslice(left.succ..right_pos[i])
55
+ else
56
+ output << json[left.succ..right_pos[i]]
57
+ end
58
+ end
59
+ else
60
+ json_as_binary = json.force_encoding("binary")
61
+ left_pos.each_with_index do |left, i|
62
+ output << json_as_binary[left.succ..right_pos[i]]
63
+ end
64
+ output.map! do |binary_str|
65
+ binary_str.force_encoding("UTF-8")
66
+ end
67
+ end
68
+
69
+ output = output * " "
70
+
71
+ times.each { |i| output[i-1] = ' ' }
72
+ output.gsub!(/\\\//, '/')
73
+ output
74
+ end
75
+ end
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,279 @@
1
+ module WebMock::Util
2
+ class QueryMapper
3
+ class << self
4
+ #This class is based on Addressable::URI pre 2.3.0
5
+
6
+ ##
7
+ # Converts the query component to a Hash value.
8
+ #
9
+ # @option [Symbol] notation
10
+ # May be one of <code>:flat</code>, <code>:dot</code>, or
11
+ # <code>:subscript</code>. The <code>:dot</code> notation is not
12
+ # supported for assignment. Default value is <code>:subscript</code>.
13
+ #
14
+ # @return [Hash, Array] The query string parsed as a Hash or Array object.
15
+ #
16
+ # @example
17
+ # WebMock::Util::QueryMapper.query_to_values("?one=1&two=2&three=3")
18
+ # #=> {"one" => "1", "two" => "2", "three" => "3"}
19
+ # WebMock::Util::QueryMapper("?one[two][three]=four").query_values
20
+ # #=> {"one" => {"two" => {"three" => "four"}}}
21
+ # WebMock::Util::QueryMapper.query_to_values("?one.two.three=four",
22
+ # :notation => :dot
23
+ # )
24
+ # #=> {"one" => {"two" => {"three" => "four"}}}
25
+ # WebMock::Util::QueryMapper.query_to_values("?one[two][three]=four",
26
+ # :notation => :flat
27
+ # )
28
+ # #=> {"one[two][three]" => "four"}
29
+ # WebMock::Util::QueryMapper.query_to_values("?one.two.three=four",
30
+ # :notation => :flat
31
+ # )
32
+ # #=> {"one.two.three" => "four"}
33
+ # WebMock::Util::QueryMapper(
34
+ # "?one[two][three][]=four&one[two][three][]=five"
35
+ # )
36
+ # #=> {"one" => {"two" => {"three" => ["four", "five"]}}}
37
+ # WebMock::Util::QueryMapper.query_to_values(
38
+ # "?one=two&one=three").query_values(:notation => :flat_array)
39
+ # #=> [['one', 'two'], ['one', 'three']]
40
+ def query_to_values(query, options={})
41
+ return nil if query.nil?
42
+ query.force_encoding('utf-8') if query.respond_to?(:force_encoding)
43
+
44
+ options[:notation] ||= :subscript
45
+
46
+ if ![:flat, :dot, :subscript, :flat_array].include?(options[:notation])
47
+ raise ArgumentError,
48
+ 'Invalid notation. Must be one of: ' +
49
+ '[:flat, :dot, :subscript, :flat_array].'
50
+ end
51
+
52
+ empty_accumulator = :flat_array == options[:notation] ? [] : {}
53
+
54
+ query_array = collect_query_parts(query)
55
+
56
+ query_hash = collect_query_hash(query_array, empty_accumulator, options)
57
+
58
+ normalize_query_hash(query_hash, empty_accumulator, options)
59
+ end
60
+
61
+ def normalize_query_hash(query_hash, empty_accumulator, options)
62
+ query_hash.inject(empty_accumulator.dup) do |accumulator, (key, value)|
63
+ if options[:notation] == :flat_array
64
+ accumulator << [key, value]
65
+ else
66
+ accumulator[key] = value.kind_of?(Hash) ? dehash(value) : value
67
+ end
68
+ accumulator
69
+ end
70
+ end
71
+
72
+ def collect_query_parts(query)
73
+ query_parts = query.split('&').map do |pair|
74
+ pair.split('=', 2) if pair && !pair.empty?
75
+ end
76
+ query_parts.compact
77
+ end
78
+
79
+ def collect_query_hash(query_array, empty_accumulator, options)
80
+ query_array.compact.inject(empty_accumulator.dup) do |accumulator, (key, value)|
81
+ value = if value.nil?
82
+ nil
83
+ else
84
+ ::Addressable::URI.unencode_component(value.gsub(/\+/, ' '))
85
+ end
86
+ key = Addressable::URI.unencode_component(key)
87
+ key = key.dup.force_encoding(Encoding::ASCII_8BIT) if key.respond_to?(:force_encoding)
88
+ self.__send__("fill_accumulator_for_#{options[:notation]}", accumulator, key, value)
89
+ accumulator
90
+ end
91
+ end
92
+
93
+ def fill_accumulator_for_flat(accumulator, key, value)
94
+ if accumulator[key]
95
+ raise ArgumentError, "Key was repeated: #{key.inspect}"
96
+ end
97
+ accumulator[key] = value
98
+ end
99
+
100
+ def fill_accumulator_for_flat_array(accumulator, key, value)
101
+ accumulator << [key, value]
102
+ end
103
+
104
+ def fill_accumulator_for_dot(accumulator, key, value)
105
+ array_value = false
106
+ subkeys = key.split(".")
107
+ current_hash = accumulator
108
+ subkeys[0..-2].each do |subkey|
109
+ current_hash[subkey] = {} unless current_hash[subkey]
110
+ current_hash = current_hash[subkey]
111
+ end
112
+ if array_value
113
+ if current_hash[subkeys.last] && !current_hash[subkeys.last].is_a?(Array)
114
+ current_hash[subkeys.last] = [current_hash[subkeys.last]]
115
+ end
116
+ current_hash[subkeys.last] = [] unless current_hash[subkeys.last]
117
+ current_hash[subkeys.last] << value
118
+ else
119
+ current_hash[subkeys.last] = value
120
+ end
121
+ end
122
+
123
+ def fill_accumulator_for_subscript(accumulator, key, value)
124
+ current_node = accumulator
125
+ subkeys = key.split(/(?=\[\w)/)
126
+ subkeys[0..-2].each do |subkey|
127
+ node = subkey =~ /\[\]\z/ ? [] : {}
128
+ subkey = subkey.gsub(/[\[\]]/, '')
129
+ if current_node.is_a? Array
130
+ container = current_node.find { |n| n.is_a?(Hash) && n.has_key?(subkey) }
131
+ if container
132
+ current_node = container[subkey]
133
+ else
134
+ current_node << {subkey => node}
135
+ current_node = node
136
+ end
137
+ else
138
+ current_node[subkey] = node unless current_node[subkey]
139
+ current_node = current_node[subkey]
140
+ end
141
+ end
142
+ last_key = subkeys.last
143
+ array_value = !!(last_key =~ /\[\]$/)
144
+ last_key = last_key.gsub(/[\[\]]/, '')
145
+ if current_node.is_a? Array
146
+ last_container = current_node.select { |n| n.is_a?(Hash) }.last
147
+ if last_container && !last_container.has_key?(last_key)
148
+ if array_value
149
+ last_container[last_key] ||= []
150
+ last_container[last_key] << value
151
+ else
152
+ last_container[last_key] = value
153
+ end
154
+ else
155
+ if array_value
156
+ current_node << {last_key => [value]}
157
+ else
158
+ current_node << {last_key => value}
159
+ end
160
+ end
161
+ else
162
+ if array_value
163
+ current_node[last_key] ||= []
164
+ current_node[last_key] << value
165
+ else
166
+ current_node[last_key] = value
167
+ end
168
+ end
169
+ end
170
+
171
+ ##
172
+ # Sets the query component for this URI from a Hash object.
173
+ # This method produces a query string using the :subscript notation.
174
+ # An empty Hash will result in a nil query.
175
+ #
176
+ # @param [Hash, #to_hash, Array] new_query_values The new query values.
177
+ def values_to_query(new_query_values, options = {})
178
+ options[:notation] ||= :subscript
179
+ return if new_query_values.nil?
180
+
181
+ unless new_query_values.is_a?(Array)
182
+ unless new_query_values.respond_to?(:to_hash)
183
+ raise TypeError,
184
+ "Can't convert #{new_query_values.class} into Hash."
185
+ end
186
+ new_query_values = new_query_values.to_hash
187
+ new_query_values = new_query_values.inject([]) do |object, (key, value)|
188
+ key = key.to_s if key.is_a?(::Symbol) || key.nil?
189
+ if value.is_a?(Array)
190
+ value.each { |v| object << [key.to_s + '[]', v] }
191
+ elsif value.is_a?(Hash)
192
+ value.each { |k, v| object << ["#{key.to_s}[#{k}]", v]}
193
+ else
194
+ object << [key.to_s, value]
195
+ end
196
+ object
197
+ end
198
+ # Useful default for OAuth and caching.
199
+ # Only to be used for non-Array inputs. Arrays should preserve order.
200
+ begin
201
+ new_query_values.sort! # may raise for non-comparable values
202
+ rescue NoMethodError, ArgumentError
203
+ # ignore
204
+ end
205
+ end
206
+
207
+ buffer = ''
208
+ new_query_values.each do |parent, value|
209
+ encoded_parent = ::Addressable::URI.encode_component(
210
+ parent.dup, ::Addressable::URI::CharacterClasses::UNRESERVED
211
+ )
212
+ buffer << "#{to_query(encoded_parent, value, options)}&"
213
+ end
214
+ buffer.chop
215
+ end
216
+
217
+ def dehash(hash)
218
+ hash.each do |(key, value)|
219
+ if value.is_a?(::Hash)
220
+ hash[key] = self.dehash(value)
221
+ end
222
+ end
223
+ if hash != {} && hash.keys.all? { |key| key =~ /^\d+$/ }
224
+ hash.sort.inject([]) do |accu, (_, value)|
225
+ accu << value; accu
226
+ end
227
+ else
228
+ hash
229
+ end
230
+ end
231
+
232
+ ##
233
+ # Joins and converts parent and value into a properly encoded and
234
+ # ordered URL query.
235
+ #
236
+ # @private
237
+ # @param [String] parent an URI encoded component.
238
+ # @param [Array, Hash, Symbol, #to_str] value
239
+ #
240
+ # @return [String] a properly escaped and ordered URL query.
241
+
242
+ # new_query_values have form [['key1', 'value1'], ['key2', 'value2']]
243
+ def to_query(parent, value, options = {})
244
+ options[:notation] ||= :subscript
245
+ case value
246
+ when ::Hash
247
+ value = value.map do |key, val|
248
+ [
249
+ ::Addressable::URI.encode_component(key.to_s.dup, ::Addressable::URI::CharacterClasses::UNRESERVED),
250
+ val
251
+ ]
252
+ end
253
+ value.sort!
254
+ buffer = ''
255
+ value.each do |key, val|
256
+ new_parent = options[:notation] != :flat_array ? "#{parent}[#{key}]" : parent
257
+ buffer << "#{to_query(new_parent, val, options)}&"
258
+ end
259
+ buffer.chop
260
+ when ::Array
261
+ buffer = ''
262
+ value.each_with_index do |val, i|
263
+ new_parent = options[:notation] != :flat_array ? "#{parent}[#{i}]" : parent
264
+ buffer << "#{to_query(new_parent, val, options)}&"
265
+ end
266
+ buffer.chop
267
+ when NilClass
268
+ parent
269
+ else
270
+ encoded_value = Addressable::URI.encode_component(
271
+ value.to_s.dup, Addressable::URI::CharacterClasses::UNRESERVED
272
+ )
273
+ "#{parent}=#{encoded_value}"
274
+ end
275
+ end
276
+ end
277
+
278
+ end
279
+ end