webmock 3.5.0 → 3.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +476 -2
  3. data/README.md +166 -42
  4. data/lib/webmock/api.rb +2 -0
  5. data/lib/webmock/assertion_failure.rb +2 -0
  6. data/lib/webmock/callback_registry.rb +2 -0
  7. data/lib/webmock/config.rb +2 -0
  8. data/lib/webmock/cucumber.rb +2 -0
  9. data/lib/webmock/deprecation.rb +2 -0
  10. data/lib/webmock/errors.rb +2 -0
  11. data/lib/webmock/http_lib_adapters/async_http_client_adapter.rb +228 -0
  12. data/lib/webmock/http_lib_adapters/curb_adapter.rb +14 -3
  13. data/lib/webmock/http_lib_adapters/em_http_request_adapter.rb +22 -9
  14. data/lib/webmock/http_lib_adapters/excon_adapter.rb +5 -0
  15. data/lib/webmock/http_lib_adapters/http_lib_adapter.rb +2 -0
  16. data/lib/webmock/http_lib_adapters/http_lib_adapter_registry.rb +2 -0
  17. data/lib/webmock/http_lib_adapters/http_rb/client.rb +4 -1
  18. data/lib/webmock/http_lib_adapters/http_rb/request.rb +17 -5
  19. data/lib/webmock/http_lib_adapters/http_rb/response.rb +49 -5
  20. data/lib/webmock/http_lib_adapters/http_rb/streamer.rb +11 -3
  21. data/lib/webmock/http_lib_adapters/http_rb/webmock.rb +8 -2
  22. data/lib/webmock/http_lib_adapters/http_rb_adapter.rb +7 -5
  23. data/lib/webmock/http_lib_adapters/httpclient_adapter.rb +25 -7
  24. data/lib/webmock/http_lib_adapters/manticore_adapter.rb +35 -15
  25. data/lib/webmock/http_lib_adapters/net_http.rb +59 -112
  26. data/lib/webmock/http_lib_adapters/net_http_response.rb +3 -1
  27. data/lib/webmock/http_lib_adapters/patron_adapter.rb +4 -2
  28. data/lib/webmock/http_lib_adapters/typhoeus_hydra_adapter.rb +18 -2
  29. data/lib/webmock/matchers/any_arg_matcher.rb +2 -0
  30. data/lib/webmock/matchers/hash_argument_matcher.rb +2 -0
  31. data/lib/webmock/matchers/hash_excluding_matcher.rb +2 -0
  32. data/lib/webmock/matchers/hash_including_matcher.rb +2 -0
  33. data/lib/webmock/minitest.rb +2 -0
  34. data/lib/webmock/rack_response.rb +5 -1
  35. data/lib/webmock/request_body_diff.rb +3 -1
  36. data/lib/webmock/request_execution_verifier.rb +2 -0
  37. data/lib/webmock/request_pattern.rb +118 -61
  38. data/lib/webmock/request_registry.rb +2 -0
  39. data/lib/webmock/request_signature.rb +4 -2
  40. data/lib/webmock/request_signature_snippet.rb +2 -0
  41. data/lib/webmock/request_stub.rb +34 -0
  42. data/lib/webmock/response.rb +22 -14
  43. data/lib/webmock/responses_sequence.rb +2 -0
  44. data/lib/webmock/rspec/matchers/request_pattern_matcher.rb +2 -0
  45. data/lib/webmock/rspec/matchers/webmock_matcher.rb +2 -0
  46. data/lib/webmock/rspec/matchers.rb +2 -0
  47. data/lib/webmock/rspec.rb +4 -1
  48. data/lib/webmock/stub_registry.rb +28 -11
  49. data/lib/webmock/stub_request_snippet.rb +2 -0
  50. data/lib/webmock/test_unit.rb +3 -3
  51. data/lib/webmock/util/hash_counter.rb +12 -6
  52. data/lib/webmock/util/hash_keys_stringifier.rb +2 -0
  53. data/lib/webmock/util/hash_validator.rb +2 -0
  54. data/lib/webmock/util/headers.rb +23 -10
  55. data/lib/webmock/util/parsers/json.rb +72 -0
  56. data/lib/webmock/util/parsers/parse_error.rb +7 -0
  57. data/lib/webmock/util/parsers/xml.rb +16 -0
  58. data/lib/webmock/util/query_mapper.rb +6 -2
  59. data/lib/webmock/util/uri.rb +11 -9
  60. data/lib/webmock/util/values_stringifier.rb +2 -0
  61. data/lib/webmock/util/version_checker.rb +7 -5
  62. data/lib/webmock/version.rb +3 -1
  63. data/lib/webmock/webmock.rb +22 -3
  64. data/lib/webmock.rb +5 -2
  65. metadata +99 -175
  66. data/.gemtest +0 -0
  67. data/.gitignore +0 -34
  68. data/.rspec-tm +0 -2
  69. data/.travis.yml +0 -21
  70. data/Gemfile +0 -9
  71. data/Rakefile +0 -30
  72. data/lib/webmock/util/json.rb +0 -67
  73. data/minitest/test_helper.rb +0 -34
  74. data/minitest/test_webmock.rb +0 -9
  75. data/minitest/webmock_spec.rb +0 -60
  76. data/spec/acceptance/curb/curb_spec.rb +0 -481
  77. data/spec/acceptance/curb/curb_spec_helper.rb +0 -147
  78. data/spec/acceptance/em_http_request/em_http_request_spec.rb +0 -406
  79. data/spec/acceptance/em_http_request/em_http_request_spec_helper.rb +0 -77
  80. data/spec/acceptance/excon/excon_spec.rb +0 -77
  81. data/spec/acceptance/excon/excon_spec_helper.rb +0 -50
  82. data/spec/acceptance/http_rb/http_rb_spec.rb +0 -82
  83. data/spec/acceptance/http_rb/http_rb_spec_helper.rb +0 -54
  84. data/spec/acceptance/httpclient/httpclient_spec.rb +0 -217
  85. data/spec/acceptance/httpclient/httpclient_spec_helper.rb +0 -57
  86. data/spec/acceptance/manticore/manticore_spec.rb +0 -56
  87. data/spec/acceptance/manticore/manticore_spec_helper.rb +0 -35
  88. data/spec/acceptance/net_http/net_http_shared.rb +0 -153
  89. data/spec/acceptance/net_http/net_http_spec.rb +0 -331
  90. data/spec/acceptance/net_http/net_http_spec_helper.rb +0 -64
  91. data/spec/acceptance/net_http/real_net_http_spec.rb +0 -20
  92. data/spec/acceptance/patron/patron_spec.rb +0 -125
  93. data/spec/acceptance/patron/patron_spec_helper.rb +0 -54
  94. data/spec/acceptance/shared/allowing_and_disabling_net_connect.rb +0 -313
  95. data/spec/acceptance/shared/callbacks.rb +0 -147
  96. data/spec/acceptance/shared/complex_cross_concern_behaviors.rb +0 -36
  97. data/spec/acceptance/shared/enabling_and_disabling_webmock.rb +0 -95
  98. data/spec/acceptance/shared/precedence_of_stubs.rb +0 -15
  99. data/spec/acceptance/shared/request_expectations.rb +0 -923
  100. data/spec/acceptance/shared/returning_declared_responses.rb +0 -388
  101. data/spec/acceptance/shared/stubbing_requests.rb +0 -638
  102. data/spec/acceptance/typhoeus/typhoeus_hydra_spec.rb +0 -135
  103. data/spec/acceptance/typhoeus/typhoeus_hydra_spec_helper.rb +0 -60
  104. data/spec/acceptance/webmock_shared.rb +0 -41
  105. data/spec/fixtures/test.txt +0 -1
  106. data/spec/quality_spec.rb +0 -84
  107. data/spec/spec_helper.rb +0 -48
  108. data/spec/support/example_curl_output.txt +0 -22
  109. data/spec/support/failures.rb +0 -9
  110. data/spec/support/my_rack_app.rb +0 -53
  111. data/spec/support/network_connection.rb +0 -19
  112. data/spec/support/webmock_server.rb +0 -69
  113. data/spec/unit/api_spec.rb +0 -175
  114. data/spec/unit/errors_spec.rb +0 -129
  115. data/spec/unit/http_lib_adapters/http_lib_adapter_registry_spec.rb +0 -17
  116. data/spec/unit/http_lib_adapters/http_lib_adapter_spec.rb +0 -12
  117. data/spec/unit/matchers/hash_excluding_matcher_spec.rb +0 -61
  118. data/spec/unit/matchers/hash_including_matcher_spec.rb +0 -87
  119. data/spec/unit/rack_response_spec.rb +0 -112
  120. data/spec/unit/request_body_diff_spec.rb +0 -90
  121. data/spec/unit/request_execution_verifier_spec.rb +0 -208
  122. data/spec/unit/request_pattern_spec.rb +0 -596
  123. data/spec/unit/request_registry_spec.rb +0 -95
  124. data/spec/unit/request_signature_snippet_spec.rb +0 -89
  125. data/spec/unit/request_signature_spec.rb +0 -155
  126. data/spec/unit/request_stub_spec.rb +0 -199
  127. data/spec/unit/response_spec.rb +0 -282
  128. data/spec/unit/stub_registry_spec.rb +0 -103
  129. data/spec/unit/stub_request_snippet_spec.rb +0 -115
  130. data/spec/unit/util/hash_counter_spec.rb +0 -39
  131. data/spec/unit/util/hash_keys_stringifier_spec.rb +0 -27
  132. data/spec/unit/util/headers_spec.rb +0 -28
  133. data/spec/unit/util/json_spec.rb +0 -33
  134. data/spec/unit/util/query_mapper_spec.rb +0 -150
  135. data/spec/unit/util/uri_spec.rb +0 -299
  136. data/spec/unit/util/version_checker_spec.rb +0 -65
  137. data/spec/unit/webmock_spec.rb +0 -11
  138. data/test/http_request.rb +0 -24
  139. data/test/shared_test.rb +0 -108
  140. data/test/test_helper.rb +0 -23
  141. data/test/test_webmock.rb +0 -6
  142. data/webmock.gemspec +0 -46
@@ -1,208 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe WebMock::RequestExecutionVerifier do
4
- before(:each) do
5
- @verifier = WebMock::RequestExecutionVerifier.new
6
- @request_pattern = double(WebMock::RequestPattern, to_s: "www.example.com")
7
- @verifier.request_pattern = @request_pattern
8
- allow(WebMock::RequestRegistry.instance).to receive(:to_s).and_return("executed requests")
9
- @executed_requests_info = "\n\nThe following requests were made:\n\nexecuted requests\n" + "="*60
10
- end
11
-
12
- describe "description" do
13
-
14
- it "reports the description" do
15
- @verifier.expected_times_executed = 2
16
- expect(@verifier.description).to eq "request www.example.com 2 times"
17
- end
18
-
19
- it "reports description correctly when expectation is 1 time" do
20
- @verifier.expected_times_executed = 1
21
- expect(@verifier.description).to eq "request www.example.com 1 time"
22
- end
23
-
24
- context "at_least_times_executed is set" do
25
- it "reports description correctly when expectation at least 2 times" do
26
- @verifier.at_least_times_executed = 2
27
- expect(@verifier.description).to eq "request www.example.com at least 2 times"
28
- end
29
-
30
- it "reports description correctly when expectation is at least 3 times" do
31
- @verifier.at_least_times_executed = 3
32
- expect(@verifier.description).to eq "request www.example.com at least 3 times"
33
- end
34
- end
35
-
36
- context "at_most_times_executed is set" do
37
- it "reports description correctly when expectation is at most 2 times" do
38
- @verifier.at_most_times_executed = 2
39
- expect(@verifier.description).to eq "request www.example.com at most 2 times"
40
- end
41
-
42
- it "reports description correctly when expectation is at most 1 time" do
43
- @verifier.at_most_times_executed = 1
44
- expect(@verifier.description).to eq "request www.example.com at most 1 time"
45
- end
46
- end
47
-
48
- end
49
-
50
- describe "failure message" do
51
-
52
- it "reports the failure message" do
53
- @verifier.times_executed = 0
54
- @verifier.expected_times_executed = 2
55
- expected_text = "The request www.example.com was expected to execute 2 times but it executed 0 times"
56
- expected_text += @executed_requests_info
57
- expect(@verifier.failure_message).to eq(expected_text)
58
- end
59
-
60
- it "reports failure message correctly when executed times is one" do
61
- @verifier.times_executed = 1
62
- @verifier.expected_times_executed = 1
63
- expected_text = "The request www.example.com was expected to execute 1 time but it executed 1 time"
64
- expected_text += @executed_requests_info
65
- expect(@verifier.failure_message).to eq(expected_text)
66
- end
67
-
68
- context "at_least_times_executed is set" do
69
- it "reports failure message correctly when executed times is one" do
70
- @verifier.times_executed = 1
71
- @verifier.at_least_times_executed = 2
72
- expected_text = "The request www.example.com was expected to execute at least 2 times but it executed 1 time"
73
- expected_text += @executed_requests_info
74
- expect(@verifier.failure_message).to eq(expected_text)
75
- end
76
-
77
- it "reports failure message correctly when executed times is two" do
78
- @verifier.times_executed = 2
79
- @verifier.at_least_times_executed = 3
80
- expected_text = "The request www.example.com was expected to execute at least 3 times but it executed 2 times"
81
- expected_text += @executed_requests_info
82
- expect(@verifier.failure_message).to eq(expected_text)
83
- end
84
- end
85
-
86
- context "at_most_times_executed is set" do
87
- it "reports failure message correctly when executed times is three" do
88
- @verifier.times_executed = 3
89
- @verifier.at_most_times_executed = 2
90
- expected_text = "The request www.example.com was expected to execute at most 2 times but it executed 3 times"
91
- expected_text += @executed_requests_info
92
- expect(@verifier.failure_message).to eq(expected_text)
93
- end
94
-
95
- it "reports failure message correctly when executed times is two" do
96
- @verifier.times_executed = 2
97
- @verifier.at_most_times_executed = 1
98
- expected_text = "The request www.example.com was expected to execute at most 1 time but it executed 2 times"
99
- expected_text += @executed_requests_info
100
- expect(@verifier.failure_message).to eq(expected_text)
101
- end
102
- end
103
- end
104
-
105
- describe "negative failure message" do
106
-
107
- it "reports failure message if it executed number of times specified" do
108
- @verifier.times_executed = 2
109
- @verifier.expected_times_executed = 2
110
- expected_text = "The request www.example.com was not expected to execute 2 times but it executed 2 times"
111
- expected_text += @executed_requests_info
112
- expect(@verifier.failure_message_when_negated).to eq(expected_text)
113
- end
114
-
115
- it "reports failure message when not expected request but it executed" do
116
- @verifier.times_executed = 1
117
- expected_text = "The request www.example.com was not expected to execute but it executed 1 time"
118
- expected_text += @executed_requests_info
119
- expect(@verifier.failure_message_when_negated).to eq(expected_text)
120
- end
121
-
122
- context "at_least_times_executed is set" do
123
- it "reports failure message correctly when executed times is one" do
124
- @verifier.times_executed = 3
125
- @verifier.at_least_times_executed = 2
126
- expected_text = "The request www.example.com was not expected to execute at least 2 times but it executed 3 times"
127
- expected_text += @executed_requests_info
128
- expect(@verifier.failure_message_when_negated).to eq(expected_text)
129
- end
130
-
131
- it "reports failure message correctly when executed times is two" do
132
- @verifier.times_executed = 2
133
- @verifier.at_least_times_executed = 2
134
- expected_text = "The request www.example.com was not expected to execute at least 2 times but it executed 2 times"
135
- expected_text += @executed_requests_info
136
- expect(@verifier.failure_message_when_negated).to eq(expected_text)
137
- end
138
- end
139
-
140
- context "at_most_times_executed is set" do
141
- it "reports failure message correctly when executed times is three" do
142
- @verifier.times_executed = 2
143
- @verifier.at_most_times_executed = 3
144
- expected_text = "The request www.example.com was not expected to execute at most 3 times but it executed 2 times"
145
- expected_text += @executed_requests_info
146
- expect(@verifier.failure_message_when_negated).to eq(expected_text)
147
- end
148
-
149
- it "reports failure message correctly when executed times is one" do
150
- @verifier.times_executed = 1
151
- @verifier.at_most_times_executed = 2
152
- expected_text = "The request www.example.com was not expected to execute at most 2 times but it executed 1 time"
153
- expected_text += @executed_requests_info
154
- expect(@verifier.failure_message_when_negated).to eq(expected_text)
155
- end
156
- end
157
-
158
- end
159
-
160
- describe "matches?" do
161
-
162
- it "succeeds if request was executed expected number of times" do
163
- expect(WebMock::RequestRegistry.instance).
164
- to receive(:times_executed).with(@request_pattern).and_return(10)
165
- @verifier.expected_times_executed = 10
166
- expect(@verifier.matches?).to be_truthy
167
- end
168
-
169
- it "fails if request was not executed expected number of times" do
170
- expect(WebMock::RequestRegistry.instance).
171
- to receive(:times_executed).with(@request_pattern).and_return(10)
172
- @verifier.expected_times_executed = 5
173
- expect(@verifier.matches?).to be_falsey
174
- end
175
-
176
- end
177
-
178
- describe "does_not_match?" do
179
-
180
- it "fails if request executed expected number of times" do
181
- expect(WebMock::RequestRegistry.instance).
182
- to receive(:times_executed).with(@request_pattern).and_return(10)
183
- @verifier.expected_times_executed = 10
184
- expect(@verifier.does_not_match?).to be_falsey
185
- end
186
-
187
- it "succeeds if request was not executed at all and expected number of times was not set" do
188
- expect(WebMock::RequestRegistry.instance).
189
- to receive(:times_executed).with(@request_pattern).and_return(0)
190
- expect(@verifier.does_not_match?).to be_truthy
191
- end
192
-
193
- it "fails if request was executed and expected number of times was not set" do
194
- expect(WebMock::RequestRegistry.instance).
195
- to receive(:times_executed).with(@request_pattern).and_return(1)
196
- expect(@verifier.does_not_match?).to be_falsey
197
- end
198
-
199
- it "succeeds if request was not executed expected number of times" do
200
- expect(WebMock::RequestRegistry.instance).
201
- to receive(:times_executed).with(@request_pattern).and_return(10)
202
- @verifier.expected_times_executed = 5
203
- expect(@verifier.does_not_match?).to be_truthy
204
- end
205
-
206
- end
207
-
208
- end