simple-client 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (297) hide show
  1. data/.bundle/config +4 -0
  2. data/Gemfile +7 -0
  3. data/Gemfile.lock +23 -0
  4. data/bin/rake +16 -0
  5. data/lib/simple-client/simple-client.rb +229 -0
  6. data/lib/simple-client/version.rb +4 -0
  7. data/lib/simple-client.rb +1 -0
  8. data/test/test_simple-client.rb +236 -0
  9. data/vendor/bundle/ruby/1.8/bin/rake +19 -0
  10. data/vendor/bundle/ruby/1.8/cache/addressable-2.2.8.gem +0 -0
  11. data/vendor/bundle/ruby/1.8/cache/crack-0.3.1.gem +0 -0
  12. data/vendor/bundle/ruby/1.8/cache/rake-0.9.2.2.gem +0 -0
  13. data/vendor/bundle/ruby/1.8/cache/webmock-1.8.8.gem +0 -0
  14. data/vendor/bundle/ruby/1.8/gems/addressable-2.2.8/CHANGELOG.md +126 -0
  15. data/vendor/bundle/ruby/1.8/gems/addressable-2.2.8/Gemfile +17 -0
  16. data/vendor/bundle/ruby/1.8/gems/addressable-2.2.8/Gemfile.lock +35 -0
  17. data/vendor/bundle/ruby/1.8/gems/addressable-2.2.8/LICENSE.txt +202 -0
  18. data/vendor/bundle/ruby/1.8/gems/addressable-2.2.8/README.md +83 -0
  19. data/vendor/bundle/ruby/1.8/gems/addressable-2.2.8/Rakefile +37 -0
  20. data/vendor/bundle/ruby/1.8/gems/addressable-2.2.8/lib/addressable/idna/native.rb +43 -0
  21. data/vendor/bundle/ruby/1.8/gems/addressable-2.2.8/lib/addressable/idna/pure.rb +4886 -0
  22. data/vendor/bundle/ruby/1.8/gems/addressable-2.2.8/lib/addressable/idna.rb +25 -0
  23. data/vendor/bundle/ruby/1.8/gems/addressable-2.2.8/lib/addressable/template.rb +1047 -0
  24. data/vendor/bundle/ruby/1.8/gems/addressable-2.2.8/lib/addressable/uri.rb +2288 -0
  25. data/vendor/bundle/ruby/1.8/gems/addressable-2.2.8/lib/addressable/version.rb +30 -0
  26. data/vendor/bundle/ruby/1.8/gems/addressable-2.2.8/spec/addressable/idna_spec.rb +216 -0
  27. data/vendor/bundle/ruby/1.8/gems/addressable-2.2.8/spec/addressable/net_http_compat_spec.rb +26 -0
  28. data/vendor/bundle/ruby/1.8/gems/addressable-2.2.8/spec/addressable/template_spec.rb +2144 -0
  29. data/vendor/bundle/ruby/1.8/gems/addressable-2.2.8/spec/addressable/uri_spec.rb +4928 -0
  30. data/vendor/bundle/ruby/1.8/gems/addressable-2.2.8/tasks/clobber.rake +2 -0
  31. data/vendor/bundle/ruby/1.8/gems/addressable-2.2.8/tasks/gem.rake +85 -0
  32. data/vendor/bundle/ruby/1.8/gems/addressable-2.2.8/tasks/git.rake +45 -0
  33. data/vendor/bundle/ruby/1.8/gems/addressable-2.2.8/tasks/metrics.rake +22 -0
  34. data/vendor/bundle/ruby/1.8/gems/addressable-2.2.8/tasks/rspec.rake +58 -0
  35. data/vendor/bundle/ruby/1.8/gems/addressable-2.2.8/tasks/rubyforge.rake +89 -0
  36. data/vendor/bundle/ruby/1.8/gems/addressable-2.2.8/tasks/yard.rake +27 -0
  37. data/vendor/bundle/ruby/1.8/gems/addressable-2.2.8/website/index.html +110 -0
  38. data/vendor/bundle/ruby/1.8/gems/crack-0.3.1/History +25 -0
  39. data/vendor/bundle/ruby/1.8/gems/crack-0.3.1/LICENSE +20 -0
  40. data/vendor/bundle/ruby/1.8/gems/crack-0.3.1/README.rdoc +42 -0
  41. data/vendor/bundle/ruby/1.8/gems/crack-0.3.1/Rakefile +32 -0
  42. data/vendor/bundle/ruby/1.8/gems/crack-0.3.1/crack.gemspec +53 -0
  43. data/vendor/bundle/ruby/1.8/gems/crack-0.3.1/lib/crack/json.rb +79 -0
  44. data/vendor/bundle/ruby/1.8/gems/crack-0.3.1/lib/crack/util.rb +17 -0
  45. data/vendor/bundle/ruby/1.8/gems/crack-0.3.1/lib/crack/xml.rb +232 -0
  46. data/vendor/bundle/ruby/1.8/gems/crack-0.3.1/lib/crack.rb +8 -0
  47. data/vendor/bundle/ruby/1.8/gems/crack-0.3.1/test/crack_test.rb +4 -0
  48. data/vendor/bundle/ruby/1.8/gems/crack-0.3.1/test/data/twittersearch-firefox.json +1 -0
  49. data/vendor/bundle/ruby/1.8/gems/crack-0.3.1/test/data/twittersearch-ie.json +1 -0
  50. data/vendor/bundle/ruby/1.8/gems/crack-0.3.1/test/hash_test.rb +28 -0
  51. data/vendor/bundle/ruby/1.8/gems/crack-0.3.1/test/json_test.rb +82 -0
  52. data/vendor/bundle/ruby/1.8/gems/crack-0.3.1/test/parser_test.rb +27 -0
  53. data/vendor/bundle/ruby/1.8/gems/crack-0.3.1/test/string_test.rb +31 -0
  54. data/vendor/bundle/ruby/1.8/gems/crack-0.3.1/test/test_helper.rb +12 -0
  55. data/vendor/bundle/ruby/1.8/gems/crack-0.3.1/test/xml_test.rb +499 -0
  56. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/CHANGES +522 -0
  57. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/MIT-LICENSE +21 -0
  58. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/README.rdoc +197 -0
  59. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/Rakefile +369 -0
  60. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/TODO +20 -0
  61. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/bin/rake +33 -0
  62. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/doc/command_line_usage.rdoc +114 -0
  63. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/doc/example/Rakefile1 +38 -0
  64. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/doc/example/Rakefile2 +35 -0
  65. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/doc/example/a.c +6 -0
  66. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/doc/example/b.c +6 -0
  67. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/doc/example/main.c +11 -0
  68. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/doc/glossary.rdoc +51 -0
  69. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/doc/jamis.rb +591 -0
  70. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/doc/proto_rake.rdoc +127 -0
  71. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/doc/rake.1.gz +0 -0
  72. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/doc/rakefile.rdoc +557 -0
  73. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/doc/rational.rdoc +151 -0
  74. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/doc/release_notes/rake-0.4.14.rdoc +23 -0
  75. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/doc/release_notes/rake-0.4.15.rdoc +35 -0
  76. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/doc/release_notes/rake-0.5.0.rdoc +53 -0
  77. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/doc/release_notes/rake-0.5.3.rdoc +78 -0
  78. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/doc/release_notes/rake-0.5.4.rdoc +46 -0
  79. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/doc/release_notes/rake-0.6.0.rdoc +141 -0
  80. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/doc/release_notes/rake-0.7.0.rdoc +119 -0
  81. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/doc/release_notes/rake-0.7.1.rdoc +59 -0
  82. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/doc/release_notes/rake-0.7.2.rdoc +121 -0
  83. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/doc/release_notes/rake-0.7.3.rdoc +47 -0
  84. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/doc/release_notes/rake-0.8.0.rdoc +114 -0
  85. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/doc/release_notes/rake-0.8.2.rdoc +165 -0
  86. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/doc/release_notes/rake-0.8.3.rdoc +112 -0
  87. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/doc/release_notes/rake-0.8.4.rdoc +147 -0
  88. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/doc/release_notes/rake-0.8.5.rdoc +53 -0
  89. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/doc/release_notes/rake-0.8.6.rdoc +55 -0
  90. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/doc/release_notes/rake-0.8.7.rdoc +55 -0
  91. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/doc/release_notes/rake-0.9.0.rdoc +112 -0
  92. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/doc/release_notes/rake-0.9.1.rdoc +52 -0
  93. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/doc/release_notes/rake-0.9.2.rdoc +49 -0
  94. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/install.rb +90 -0
  95. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/lib/rake/alt_system.rb +109 -0
  96. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/lib/rake/application.rb +595 -0
  97. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/lib/rake/classic_namespace.rb +11 -0
  98. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/lib/rake/clean.rb +32 -0
  99. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/lib/rake/cloneable.rb +25 -0
  100. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/lib/rake/contrib/compositepublisher.rb +21 -0
  101. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/lib/rake/contrib/ftptools.rb +150 -0
  102. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/lib/rake/contrib/publisher.rb +73 -0
  103. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/lib/rake/contrib/rubyforgepublisher.rb +16 -0
  104. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/lib/rake/contrib/sshpublisher.rb +50 -0
  105. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/lib/rake/contrib/sys.rb +191 -0
  106. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/lib/rake/default_loader.rb +10 -0
  107. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/lib/rake/dsl_definition.rb +176 -0
  108. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/lib/rake/early_time.rb +18 -0
  109. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/lib/rake/ext/core.rb +27 -0
  110. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/lib/rake/ext/module.rb +39 -0
  111. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/lib/rake/ext/string.rb +167 -0
  112. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/lib/rake/ext/time.rb +14 -0
  113. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/lib/rake/file_creation_task.rb +24 -0
  114. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/lib/rake/file_list.rb +403 -0
  115. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/lib/rake/file_task.rb +47 -0
  116. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/lib/rake/file_utils.rb +114 -0
  117. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/lib/rake/file_utils_ext.rb +145 -0
  118. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/lib/rake/gempackagetask.rb +15 -0
  119. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/lib/rake/invocation_chain.rb +51 -0
  120. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/lib/rake/invocation_exception_mixin.rb +16 -0
  121. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/lib/rake/loaders/makefile.rb +40 -0
  122. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/lib/rake/multi_task.rb +16 -0
  123. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/lib/rake/name_space.rb +25 -0
  124. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/lib/rake/packagetask.rb +185 -0
  125. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/lib/rake/pathmap.rb +1 -0
  126. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/lib/rake/pseudo_status.rb +24 -0
  127. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/lib/rake/rake_module.rb +29 -0
  128. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/lib/rake/rake_test_loader.rb +22 -0
  129. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/lib/rake/rdoctask.rb +234 -0
  130. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/lib/rake/ruby182_test_unit_fix.rb +25 -0
  131. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/lib/rake/rule_recursion_overflow_error.rb +20 -0
  132. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/lib/rake/runtest.rb +21 -0
  133. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/lib/rake/task.rb +327 -0
  134. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/lib/rake/task_argument_error.rb +7 -0
  135. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/lib/rake/task_arguments.rb +78 -0
  136. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/lib/rake/task_manager.rb +307 -0
  137. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/lib/rake/tasklib.rb +22 -0
  138. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/lib/rake/testtask.rb +191 -0
  139. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/lib/rake/version.rb +8 -0
  140. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/lib/rake/win32.rb +55 -0
  141. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/lib/rake.rb +69 -0
  142. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/test/file_creation.rb +34 -0
  143. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/test/helper.rb +492 -0
  144. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/test/test_rake.rb +40 -0
  145. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/test/test_rake_application.rb +489 -0
  146. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/test/test_rake_application_options.rb +335 -0
  147. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/test/test_rake_clean.rb +14 -0
  148. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/test/test_rake_definitions.rb +80 -0
  149. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/test/test_rake_directory_task.rb +46 -0
  150. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/test/test_rake_dsl.rb +77 -0
  151. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/test/test_rake_early_time.rb +31 -0
  152. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/test/test_rake_extension.rb +59 -0
  153. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/test/test_rake_file_creation_task.rb +56 -0
  154. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/test/test_rake_file_list.rb +628 -0
  155. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/test/test_rake_file_list_path_map.rb +8 -0
  156. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/test/test_rake_file_task.rb +102 -0
  157. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/test/test_rake_file_utils.rb +305 -0
  158. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/test/test_rake_ftp_file.rb +59 -0
  159. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/test/test_rake_functional.rb +450 -0
  160. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/test/test_rake_invocation_chain.rb +52 -0
  161. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/test/test_rake_makefile_loader.rb +44 -0
  162. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/test/test_rake_multi_task.rb +51 -0
  163. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/test/test_rake_name_space.rb +43 -0
  164. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/test/test_rake_package_task.rb +79 -0
  165. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/test/test_rake_path_map.rb +157 -0
  166. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/test/test_rake_path_map_explode.rb +34 -0
  167. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/test/test_rake_path_map_partial.rb +18 -0
  168. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/test/test_rake_pseudo_status.rb +21 -0
  169. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/test/test_rake_rake_test_loader.rb +21 -0
  170. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/test/test_rake_rdoc_task.rb +83 -0
  171. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/test/test_rake_require.rb +40 -0
  172. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/test/test_rake_rules.rb +327 -0
  173. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/test/test_rake_task.rb +267 -0
  174. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/test/test_rake_task_argument_parsing.rb +103 -0
  175. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/test/test_rake_task_arguments.rb +88 -0
  176. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/test/test_rake_task_lib.rb +9 -0
  177. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/test/test_rake_task_manager.rb +157 -0
  178. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/test/test_rake_task_manager_argument_resolution.rb +36 -0
  179. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/test/test_rake_task_with_arguments.rb +173 -0
  180. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/test/test_rake_test_task.rb +120 -0
  181. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/test/test_rake_top_level_functions.rb +111 -0
  182. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/test/test_rake_win32.rb +72 -0
  183. data/vendor/bundle/ruby/1.8/gems/rake-0.9.2.2/test/test_sys.rb +20 -0
  184. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/CHANGELOG.md +749 -0
  185. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/Gemfile +21 -0
  186. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/Guardfile +24 -0
  187. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/LICENSE +20 -0
  188. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/README.md +728 -0
  189. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/Rakefile +65 -0
  190. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/lib/webmock/api.rb +63 -0
  191. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/lib/webmock/assertion_failure.rb +11 -0
  192. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/lib/webmock/callback_registry.rb +35 -0
  193. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/lib/webmock/config.rb +10 -0
  194. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/lib/webmock/cucumber.rb +8 -0
  195. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/lib/webmock/deprecation.rb +9 -0
  196. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/lib/webmock/errors.rb +33 -0
  197. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/lib/webmock/http_lib_adapters/curb_adapter.rb +287 -0
  198. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/lib/webmock/http_lib_adapters/em_http_request/em_http_request_0_x.rb +151 -0
  199. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/lib/webmock/http_lib_adapters/em_http_request/em_http_request_1_x.rb +212 -0
  200. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/lib/webmock/http_lib_adapters/em_http_request_adapter.rb +11 -0
  201. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/lib/webmock/http_lib_adapters/excon_adapter.rb +95 -0
  202. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/lib/webmock/http_lib_adapters/http_lib_adapter.rb +7 -0
  203. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/lib/webmock/http_lib_adapters/http_lib_adapter_registry.rb +19 -0
  204. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/lib/webmock/http_lib_adapters/httpclient_adapter.rb +193 -0
  205. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/lib/webmock/http_lib_adapters/net_http.rb +279 -0
  206. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/lib/webmock/http_lib_adapters/net_http_response.rb +34 -0
  207. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/lib/webmock/http_lib_adapters/patron_adapter.rb +129 -0
  208. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/lib/webmock/http_lib_adapters/typhoeus_hydra_adapter.rb +180 -0
  209. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/lib/webmock/matchers/hash_including_matcher.rb +25 -0
  210. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/lib/webmock/minitest.rb +15 -0
  211. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/lib/webmock/rack_response.rb +63 -0
  212. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/lib/webmock/request_execution_verifier.rb +56 -0
  213. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/lib/webmock/request_pattern.rb +282 -0
  214. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/lib/webmock/request_registry.rb +35 -0
  215. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/lib/webmock/request_signature.rb +50 -0
  216. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/lib/webmock/request_stub.rb +97 -0
  217. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/lib/webmock/response.rb +144 -0
  218. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/lib/webmock/responses_sequence.rb +40 -0
  219. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/lib/webmock/rspec/matchers/request_pattern_matcher.rb +42 -0
  220. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/lib/webmock/rspec/matchers/webmock_matcher.rb +46 -0
  221. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/lib/webmock/rspec/matchers.rb +28 -0
  222. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/lib/webmock/rspec.rb +33 -0
  223. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/lib/webmock/stub_registry.rb +61 -0
  224. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/lib/webmock/stub_request_snippet.rb +30 -0
  225. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/lib/webmock/test_unit.rb +20 -0
  226. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/lib/webmock/util/hash_counter.rb +25 -0
  227. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/lib/webmock/util/hash_keys_stringifier.rb +23 -0
  228. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/lib/webmock/util/headers.rb +43 -0
  229. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/lib/webmock/util/json.rb +54 -0
  230. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/lib/webmock/util/uri.rb +101 -0
  231. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/lib/webmock/util/version_checker.rb +73 -0
  232. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/lib/webmock/version.rb +3 -0
  233. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/lib/webmock/webmock.rb +124 -0
  234. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/lib/webmock.rb +49 -0
  235. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/minitest/test_helper.rb +29 -0
  236. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/minitest/test_webmock.rb +6 -0
  237. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/minitest/webmock_spec.rb +50 -0
  238. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/spec/acceptance/curb/curb_spec.rb +340 -0
  239. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/spec/acceptance/curb/curb_spec_helper.rb +144 -0
  240. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/spec/acceptance/em_http_request/em_http_request_spec.rb +183 -0
  241. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/spec/acceptance/em_http_request/em_http_request_spec_helper.rb +72 -0
  242. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/spec/acceptance/excon/excon_spec.rb +15 -0
  243. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/spec/acceptance/excon/excon_spec_helper.rb +38 -0
  244. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/spec/acceptance/httpclient/httpclient_spec.rb +76 -0
  245. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/spec/acceptance/httpclient/httpclient_spec_helper.rb +48 -0
  246. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/spec/acceptance/net_http/net_http_shared.rb +125 -0
  247. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/spec/acceptance/net_http/net_http_spec.rb +255 -0
  248. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/spec/acceptance/net_http/net_http_spec_helper.rb +55 -0
  249. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/spec/acceptance/net_http/real_net_http_spec.rb +20 -0
  250. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/spec/acceptance/patron/patron_spec.rb +136 -0
  251. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/spec/acceptance/patron/patron_spec_helper.rb +50 -0
  252. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/spec/acceptance/shared/allowing_and_disabling_net_connect.rb +142 -0
  253. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/spec/acceptance/shared/callbacks.rb +146 -0
  254. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/spec/acceptance/shared/complex_cross_concern_behaviors.rb +36 -0
  255. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/spec/acceptance/shared/enabling_and_disabling_webmock.rb +95 -0
  256. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/spec/acceptance/shared/precedence_of_stubs.rb +15 -0
  257. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/spec/acceptance/shared/request_expectations.rb +666 -0
  258. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/spec/acceptance/shared/returning_declared_responses.rb +367 -0
  259. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/spec/acceptance/shared/stubbing_requests.rb +447 -0
  260. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/spec/acceptance/typhoeus/typhoeus_hydra_spec.rb +74 -0
  261. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/spec/acceptance/typhoeus/typhoeus_hydra_spec_helper.rb +56 -0
  262. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/spec/acceptance/webmock_shared.rb +41 -0
  263. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/spec/quality_spec.rb +60 -0
  264. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/spec/spec_helper.rb +57 -0
  265. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/spec/support/example_curl_output.txt +22 -0
  266. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/spec/support/my_rack_app.rb +48 -0
  267. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/spec/support/network_connection.rb +25 -0
  268. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/spec/support/webmock_server.rb +65 -0
  269. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/spec/unit/errors_spec.rb +32 -0
  270. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/spec/unit/http_lib_adapters/http_lib_adapter_registry_spec.rb +17 -0
  271. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/spec/unit/http_lib_adapters/http_lib_adapter_spec.rb +12 -0
  272. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/spec/unit/rack_response_spec.rb +74 -0
  273. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/spec/unit/request_execution_verifier_spec.rb +100 -0
  274. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/spec/unit/request_pattern_spec.rb +479 -0
  275. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/spec/unit/request_registry_spec.rb +75 -0
  276. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/spec/unit/request_signature_spec.rb +113 -0
  277. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/spec/unit/request_stub_spec.rb +198 -0
  278. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/spec/unit/response_spec.rb +267 -0
  279. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/spec/unit/stub_registry_spec.rb +86 -0
  280. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/spec/unit/stub_request_snippet_spec.rb +95 -0
  281. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/spec/unit/util/hash_counter_spec.rb +39 -0
  282. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/spec/unit/util/hash_keys_stringifier_spec.rb +27 -0
  283. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/spec/unit/util/headers_spec.rb +28 -0
  284. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/spec/unit/util/json_spec.rb +7 -0
  285. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/spec/unit/util/uri_spec.rb +257 -0
  286. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/spec/unit/util/version_checker_spec.rb +59 -0
  287. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/spec/unit/webmock_spec.rb +7 -0
  288. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/test/http_request.rb +24 -0
  289. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/test/shared_test.rb +76 -0
  290. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/test/test_helper.rb +23 -0
  291. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/test/test_webmock.rb +6 -0
  292. data/vendor/bundle/ruby/1.8/gems/webmock-1.8.8/webmock.gemspec +35 -0
  293. data/vendor/bundle/ruby/1.8/specifications/addressable-2.2.8.gemspec +38 -0
  294. data/vendor/bundle/ruby/1.8/specifications/crack-0.3.1.gemspec +25 -0
  295. data/vendor/bundle/ruby/1.8/specifications/rake-0.9.2.2.gemspec +33 -0
  296. data/vendor/bundle/ruby/1.8/specifications/webmock-1.8.8.gemspec +61 -0
  297. metadata +390 -0
@@ -0,0 +1,144 @@
1
+ #compatibility with Ruby 1.9.2 preview1 to allow reading raw responses
2
+ class StringIO
3
+ alias_method :read_nonblock, :sysread
4
+ end
5
+
6
+ module WebMock
7
+
8
+ class ResponseFactory
9
+ def self.response_for(options)
10
+ if options.respond_to?(:call)
11
+ WebMock::DynamicResponse.new(options)
12
+ else
13
+ WebMock::Response.new(options)
14
+ end
15
+ end
16
+ end
17
+
18
+ class Response
19
+ def initialize(options = {})
20
+ if options.is_a?(IO) || options.is_a?(String)
21
+ self.options = read_raw_response(options)
22
+ else
23
+ self.options = options
24
+ end
25
+ end
26
+
27
+ def headers
28
+ @headers
29
+ end
30
+
31
+ def headers=(headers)
32
+ @headers = headers
33
+ if @headers && !@headers.is_a?(Proc)
34
+ @headers = Util::Headers.normalize_headers(@headers)
35
+ end
36
+ end
37
+
38
+ def body
39
+ @body || ''
40
+ end
41
+
42
+ def body=(body)
43
+ @body = body
44
+ stringify_body!
45
+ end
46
+
47
+ def status
48
+ @status || [200, ""]
49
+ end
50
+
51
+ def status=(status)
52
+ @status = status.is_a?(Integer) ? [status, ""] : status
53
+ end
54
+
55
+ def exception
56
+ @exception
57
+ end
58
+
59
+ def exception=(exception)
60
+ @exception = case exception
61
+ when String then StandardError.new(exception)
62
+ when Class then exception.new('Exception from WebMock')
63
+ when Exception then exception
64
+ end
65
+ end
66
+
67
+ def raise_error_if_any
68
+ raise @exception if @exception
69
+ end
70
+
71
+ def should_timeout
72
+ @should_timeout == true
73
+ end
74
+
75
+ def options=(options)
76
+ self.headers = options[:headers]
77
+ self.status = options[:status]
78
+ self.body = options[:body]
79
+ self.exception = options[:exception]
80
+ @should_timeout = options[:should_timeout]
81
+ end
82
+
83
+ def evaluate(request_signature)
84
+ self.body = @body.call(request_signature) if @body.is_a?(Proc)
85
+ self.headers = @headers.call(request_signature) if @headers.is_a?(Proc)
86
+ self.status = @status.call(request_signature) if @status.is_a?(Proc)
87
+ @should_timeout = @should_timeout.call(request_signature) if @should_timeout.is_a?(Proc)
88
+ @exception = @exception.call(request_signature) if @exception.is_a?(Proc)
89
+ self
90
+ end
91
+
92
+ def ==(other)
93
+ self.body == other.body &&
94
+ self.headers === other.headers &&
95
+ self.status == other.status &&
96
+ self.exception == other.exception &&
97
+ self.should_timeout == other.should_timeout
98
+ end
99
+
100
+ private
101
+
102
+ def stringify_body!
103
+ if @body.is_a?(IO)
104
+ io = @body
105
+ @body = io.read
106
+ io.close
107
+ end
108
+ end
109
+
110
+ def read_raw_response(raw_response)
111
+ if raw_response.is_a?(IO)
112
+ string = raw_response.read
113
+ raw_response.close
114
+ raw_response = string
115
+ end
116
+ socket = ::Net::BufferedIO.new(raw_response)
117
+ response = ::Net::HTTPResponse.read_new(socket)
118
+ transfer_encoding = response.delete('transfer-encoding') #chunks were already read by curl
119
+ response.reading_body(socket, true) {}
120
+
121
+ options = {}
122
+ options[:headers] = {}
123
+ response.each_header {|name, value| options[:headers][name] = value}
124
+ options[:headers]['transfer-encoding'] = transfer_encoding if transfer_encoding
125
+ options[:body] = response.read_body
126
+ options[:status] = [response.code.to_i, response.message]
127
+ options
128
+ end
129
+
130
+ end
131
+
132
+ class DynamicResponse < Response
133
+ attr_accessor :responder
134
+
135
+ def initialize(responder)
136
+ @responder = responder
137
+ end
138
+
139
+ def evaluate(request_signature)
140
+ options = @responder.call(request_signature)
141
+ Response.new(options)
142
+ end
143
+ end
144
+ end
@@ -0,0 +1,40 @@
1
+ module WebMock
2
+
3
+ class ResponsesSequence
4
+
5
+ attr_accessor :times_to_repeat
6
+
7
+ def initialize(responses)
8
+ @times_to_repeat = 1
9
+ @responses = responses
10
+ @current_position = 0
11
+ end
12
+
13
+ def end?
14
+ @times_to_repeat == 0
15
+ end
16
+
17
+ def next_response
18
+ if @times_to_repeat > 0
19
+ response = @responses[@current_position]
20
+ increase_position
21
+ response
22
+ else
23
+ @responses.last
24
+ end
25
+ end
26
+
27
+ private
28
+
29
+ def increase_position
30
+ if @current_position == (@responses.length - 1)
31
+ @current_position = 0
32
+ @times_to_repeat -= 1
33
+ else
34
+ @current_position += 1
35
+ end
36
+ end
37
+
38
+ end
39
+
40
+ end
@@ -0,0 +1,42 @@
1
+ module WebMock
2
+ class RequestPatternMatcher
3
+
4
+ def initialize
5
+ @request_execution_verifier = RequestExecutionVerifier.new
6
+ end
7
+
8
+ def once
9
+ @request_execution_verifier.expected_times_executed = 1
10
+ self
11
+ end
12
+
13
+ def twice
14
+ @request_execution_verifier.expected_times_executed = 2
15
+ self
16
+ end
17
+
18
+ def times(times)
19
+ @request_execution_verifier.expected_times_executed = times.to_i
20
+ self
21
+ end
22
+
23
+ def matches?(request_pattern)
24
+ @request_execution_verifier.request_pattern = request_pattern
25
+ @request_execution_verifier.matches?
26
+ end
27
+
28
+ def does_not_match?(request_pattern)
29
+ @request_execution_verifier.request_pattern = request_pattern
30
+ @request_execution_verifier.does_not_match?
31
+ end
32
+
33
+ def failure_message
34
+ @request_execution_verifier.failure_message
35
+ end
36
+
37
+
38
+ def negative_failure_message
39
+ @request_execution_verifier.negative_failure_message
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,46 @@
1
+ module WebMock
2
+ class WebMockMatcher
3
+
4
+ def initialize(method, uri)
5
+ @request_execution_verifier = RequestExecutionVerifier.new
6
+ @request_execution_verifier.request_pattern = RequestPattern.new(method, uri)
7
+ end
8
+
9
+ def once
10
+ @request_execution_verifier.expected_times_executed = 1
11
+ self
12
+ end
13
+
14
+ def twice
15
+ @request_execution_verifier.expected_times_executed = 2
16
+ self
17
+ end
18
+
19
+ def with(options = {}, &block)
20
+ @request_execution_verifier.request_pattern.with(options, &block)
21
+ self
22
+ end
23
+
24
+ def times(times)
25
+ @request_execution_verifier.expected_times_executed = times.to_i
26
+ self
27
+ end
28
+
29
+ def matches?(webmock)
30
+ @request_execution_verifier.matches?
31
+ end
32
+
33
+ def does_not_match?(webmock)
34
+ @request_execution_verifier.does_not_match?
35
+ end
36
+
37
+ def failure_message
38
+ @request_execution_verifier.failure_message
39
+ end
40
+
41
+
42
+ def negative_failure_message
43
+ @request_execution_verifier.negative_failure_message
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,28 @@
1
+ require 'webmock'
2
+ require 'webmock/rspec/matchers/request_pattern_matcher'
3
+ require 'webmock/rspec/matchers/webmock_matcher'
4
+
5
+ module WebMock
6
+ module Matchers
7
+ def have_been_made
8
+ WebMock::RequestPatternMatcher.new
9
+ end
10
+
11
+ def have_been_requested
12
+ WebMock::RequestPatternMatcher.new
13
+ end
14
+
15
+
16
+ def have_not_been_made
17
+ WebMock::RequestPatternMatcher.new.times(0)
18
+ end
19
+
20
+ def have_requested(method, uri)
21
+ WebMock::WebMockMatcher.new(method, uri)
22
+ end
23
+
24
+ def have_not_requested(method, uri)
25
+ WebMock::WebMockMatcher.new(method, uri).times(0)
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,33 @@
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
+ RSPEC_CONFIGURER.configure { |config|
24
+
25
+ config.include WebMock::API
26
+ config.include WebMock::Matchers
27
+
28
+ config.after(:each) do
29
+ WebMock.reset!
30
+ end
31
+ }
32
+
33
+ WebMock::AssertionFailure.error_class = RSPEC_NAMESPACE::Expectations::ExpectationNotMetError
@@ -0,0 +1,61 @@
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 registered_request?(request_signature)
40
+ request_stub_for(request_signature)
41
+ end
42
+
43
+ def response_for_request(request_signature)
44
+ stub = request_stub_for(request_signature)
45
+ stub ? evaluate_response_for_request(stub.response, request_signature) : nil
46
+ end
47
+
48
+ private
49
+
50
+ def request_stub_for(request_signature)
51
+ (global_stubs + request_stubs).detect { |registered_request_stub|
52
+ registered_request_stub.request_pattern.matches?(request_signature)
53
+ }
54
+ end
55
+
56
+ def evaluate_response_for_request(response, request_signature)
57
+ response.evaluate(request_signature)
58
+ end
59
+
60
+ end
61
+ end
@@ -0,0 +1,30 @@
1
+ module WebMock
2
+ class StubRequestSnippet
3
+ def initialize(request_stub)
4
+ @request_stub = request_stub
5
+ end
6
+
7
+ def to_s(with_response = true)
8
+ request_pattern = @request_stub.request_pattern
9
+ string = "stub_request(:#{request_pattern.method_pattern.to_s},"
10
+ string << " \"#{request_pattern.uri_pattern.to_s}\")"
11
+
12
+ with = ""
13
+
14
+ if (request_pattern.body_pattern)
15
+ with << ":body => #{request_pattern.body_pattern.to_s}"
16
+ end
17
+
18
+ if (request_pattern.headers_pattern)
19
+ with << ",\n " unless with.empty?
20
+
21
+ with << ":headers => #{request_pattern.headers_pattern.to_s}"
22
+ end
23
+ string << ".\n with(#{with})" unless with.empty?
24
+ if with_response
25
+ string << ".\n to_return(:status => 200, :body => \"\", :headers => {})"
26
+ end
27
+ string
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,20 @@
1
+ require 'test/unit'
2
+ require 'webmock'
3
+
4
+ module Test
5
+ module Unit
6
+ class TestCase
7
+ include WebMock::API
8
+
9
+ alias_method :teardown_without_webmock, :teardown
10
+ def teardown_with_webmock
11
+ teardown_without_webmock
12
+ WebMock.reset!
13
+ end
14
+ alias_method :teardown, :teardown_with_webmock
15
+
16
+ end
17
+ end
18
+ end
19
+
20
+ WebMock::AssertionFailure.error_class = Test::Unit::AssertionFailedError rescue MiniTest::Assertion # ruby1.9 compat
@@ -0,0 +1,25 @@
1
+ module WebMock
2
+ module Util
3
+ class Util::HashCounter
4
+ attr_accessor :hash
5
+ def initialize
6
+ self.hash = {}
7
+ @order = {}
8
+ @max = 0
9
+ end
10
+ def put key, num=1
11
+ hash[key] = (hash[key] || 0) + num
12
+ @order[key] = @max = @max + 1
13
+ end
14
+ def get key
15
+ hash[key] || 0
16
+ end
17
+
18
+ def each(&block)
19
+ @order.to_a.sort {|a, b| a[1] <=> b[1]}.each do |a|
20
+ block.call(a[0], hash[a[0]])
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,23 @@
1
+ module WebMock
2
+ module Util
3
+ class HashKeysStringifier
4
+
5
+ def self.stringify_keys!(arg)
6
+ case arg
7
+ when Array
8
+ arg.map { |elem| stringify_keys!(elem) }
9
+ when Hash
10
+ Hash[
11
+ *arg.map { |key, value|
12
+ k = key.is_a?(Symbol) ? key.to_s : key
13
+ v = stringify_keys!(value)
14
+ [k,v]
15
+ }.inject([]) {|r,x| r + x}]
16
+ else
17
+ arg
18
+ end
19
+ end
20
+
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,43 @@
1
+ module WebMock
2
+
3
+ module Util
4
+
5
+ class Headers
6
+
7
+ def self.normalize_headers(headers)
8
+ return nil unless headers
9
+ array = headers.map { |name, value|
10
+ [name.to_s.split(/_|-/).map { |segment| segment.capitalize }.join("-"),
11
+ case value
12
+ when Regexp then value
13
+ when Array then (value.size == 1) ? value.first : value.map {|v| v.to_s}.sort
14
+ else value.to_s
15
+ end
16
+ ]
17
+ }
18
+ Hash[*array.inject([]) {|r,x| r + x}]
19
+ end
20
+
21
+ def self.sorted_headers_string(headers)
22
+ headers = WebMock::Util::Headers.normalize_headers(headers)
23
+ str = '{'
24
+ str << headers.map do |k,v|
25
+ v = case v
26
+ when Regexp then v.inspect
27
+ when Array then "["+v.map{|w| "'#{w.to_s}'"}.join(", ")+"]"
28
+ else "'#{v.to_s}'"
29
+ end
30
+ "'#{k}'=>#{v}"
31
+ end.sort.join(", ")
32
+ str << '}'
33
+ end
34
+
35
+ def self.decode_userinfo_from_header(header)
36
+ header.sub(/^Basic /, "").unpack("m").first
37
+ end
38
+
39
+ end
40
+
41
+ end
42
+
43
+ end
@@ -0,0 +1,54 @@
1
+ # This is a copy of https://github.com/jnunemaker/crack/blob/master/lib/crack/json.rb
2
+ # with date parsing removed
3
+ module WebMock
4
+ module Util
5
+ class JSON
6
+ def self.parse(json)
7
+ YAML.load(unescape(convert_json_to_yaml(json)))
8
+ rescue ArgumentError
9
+ raise ParseError, "Invalid JSON string"
10
+ end
11
+
12
+ protected
13
+ def self.unescape(str)
14
+ str.gsub(/\\u([0-9a-f]{4})/) { [$1.hex].pack("U") }
15
+ end
16
+
17
+ # Ensure that ":" and "," are always followed by a space
18
+ def self.convert_json_to_yaml(json) #:nodoc:
19
+ scanner, quoting, marks, pos, times = StringScanner.new(json), false, [], nil, []
20
+ while scanner.scan_until(/(\\['"]|['":,\\]|\\.)/)
21
+ case char = scanner[1]
22
+ when '"', "'"
23
+ if !quoting
24
+ quoting = char
25
+ pos = scanner.pos
26
+ elsif quoting == char
27
+ quoting = false
28
+ end
29
+ when ":",","
30
+ marks << scanner.pos - 1 unless quoting
31
+ when "\\"
32
+ scanner.skip(/\\/)
33
+ end
34
+ end
35
+
36
+ if marks.empty?
37
+ json.gsub(/\\\//, '/')
38
+ else
39
+ left_pos = [-1].push(*marks)
40
+ right_pos = marks << json.length
41
+ output = []
42
+ left_pos.each_with_index do |left, i|
43
+ output << json[left.succ..right_pos[i]]
44
+ end
45
+ output = output * " "
46
+
47
+ times.each { |i| output[i-1] = ' ' }
48
+ output.gsub!(/\\\//, '/')
49
+ output
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,101 @@
1
+ module Addressable
2
+ class URI
3
+ module CharacterClasses
4
+ USERINFO = UNRESERVED + SUB_DELIMS + "\\:"
5
+ end
6
+ end
7
+ end
8
+
9
+ module WebMock
10
+
11
+ module Util
12
+
13
+ class URI
14
+ ADDRESSABLE_URIS = Hash.new do |hash, key|
15
+ hash[key] = Addressable::URI.heuristic_parse(key)
16
+ end
17
+
18
+ NORMALIZED_URIS = Hash.new do |hash, uri|
19
+ normalized_uri = WebMock::Util::URI.heuristic_parse(uri)
20
+ normalized_uri.query_values = sort_query_values(normalized_uri.query_values) if normalized_uri.query_values
21
+ normalized_uri = normalized_uri.normalize #normalize! is slower
22
+ normalized_uri.port = normalized_uri.inferred_port unless normalized_uri.port
23
+ hash[uri] = normalized_uri
24
+ end
25
+
26
+ def self.heuristic_parse(uri)
27
+ ADDRESSABLE_URIS[uri].dup
28
+ end
29
+
30
+ def self.normalize_uri(uri)
31
+ return uri if uri.is_a?(Regexp)
32
+ uri = 'http://' + uri unless uri.match('^https?://') if uri.is_a?(String)
33
+ NORMALIZED_URIS[uri].dup
34
+ end
35
+
36
+ def self.variations_of_uri_as_strings(uri_object)
37
+ normalized_uri = normalize_uri(uri_object.dup).freeze
38
+ uris = [ normalized_uri ]
39
+
40
+ if normalized_uri.path == '/'
41
+ uris = uris_with_trailing_slash_and_without(uris)
42
+ end
43
+
44
+ uris = uris_encoded_and_unencoded(uris)
45
+
46
+ if normalized_uri.port == Addressable::URI.port_mapping[normalized_uri.scheme]
47
+ uris = uris_with_inferred_port_and_without(uris)
48
+ end
49
+
50
+ if normalized_uri.scheme == "http"
51
+ uris = uris_with_scheme_and_without(uris)
52
+ end
53
+
54
+ uris.map {|uri| uri.to_s.gsub(/^\/\//,'') }.uniq
55
+ end
56
+
57
+ def self.strip_default_port_from_uri_string(uri_string)
58
+ case uri_string
59
+ when %r{^http://} then uri_string.sub(%r{:80(/|$)}, '\1')
60
+ when %r{^https://} then uri_string.sub(%r{:443(/|$)}, '\1')
61
+ else uri_string
62
+ end
63
+ end
64
+
65
+ def self.encode_unsafe_chars_in_userinfo(userinfo)
66
+ Addressable::URI.encode_component(userinfo, Addressable::URI::CharacterClasses::USERINFO)
67
+ end
68
+
69
+ def self.is_uri_localhost?(uri)
70
+ uri.is_a?(Addressable::URI) &&
71
+ %w(localhost 127.0.0.1 0.0.0.0).include?(uri.host)
72
+ end
73
+
74
+ private
75
+
76
+ def self.sort_query_values(query_values)
77
+ Hash[*query_values.sort.inject([]) { |values, pair| values + pair}]
78
+ end
79
+
80
+ def self.uris_with_inferred_port_and_without(uris)
81
+ uris.map { |uri| [ uri, uri.gsub(%r{(:80)|(:443)}, "").freeze ] }.flatten
82
+ end
83
+
84
+ def self.uris_encoded_and_unencoded(uris)
85
+ uris.map do |uri|
86
+ [ uri.to_s, Addressable::URI.unencode(uri, String).freeze ]
87
+ end.flatten
88
+ end
89
+
90
+ def self.uris_with_scheme_and_without(uris)
91
+ uris.map { |uri| [ uri, uri.gsub(%r{^https?://},"").freeze ] }.flatten
92
+ end
93
+
94
+ def self.uris_with_trailing_slash_and_without(uris)
95
+ uris = uris.map { |uri| [ uri, uri.omit(:path).freeze ] }.flatten
96
+ end
97
+
98
+ end
99
+ end
100
+
101
+ end