webmock 3.14.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 (144) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +213 -3
  3. data/README.md +66 -20
  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 +16 -4
  12. data/lib/webmock/http_lib_adapters/curb_adapter.rb +4 -2
  13. data/lib/webmock/http_lib_adapters/em_http_request_adapter.rb +17 -7
  14. data/lib/webmock/http_lib_adapters/excon_adapter.rb +2 -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 +3 -3
  18. data/lib/webmock/http_lib_adapters/http_rb/request.rb +17 -5
  19. data/lib/webmock/http_lib_adapters/http_rb/response.rb +32 -9
  20. data/lib/webmock/http_lib_adapters/http_rb/streamer.rb +10 -2
  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 +26 -25
  24. data/lib/webmock/http_lib_adapters/manticore_adapter.rb +2 -0
  25. data/lib/webmock/http_lib_adapters/net_http.rb +46 -121
  26. data/lib/webmock/http_lib_adapters/net_http_response.rb +2 -0
  27. data/lib/webmock/http_lib_adapters/patron_adapter.rb +3 -1
  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 +2 -0
  36. data/lib/webmock/request_execution_verifier.rb +2 -0
  37. data/lib/webmock/request_pattern.rb +35 -12
  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 +15 -13
  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 +2 -0
  48. data/lib/webmock/stub_registry.rb +2 -0
  49. data/lib/webmock/stub_request_snippet.rb +2 -0
  50. data/lib/webmock/test_unit.rb +2 -0
  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 +2 -0
  59. data/lib/webmock/util/uri.rb +3 -1
  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 +12 -0
  64. data/lib/webmock.rb +4 -2
  65. metadata +66 -185
  66. data/.gemtest +0 -0
  67. data/.github/workflows/CI.yml +0 -37
  68. data/.gitignore +0 -34
  69. data/.rspec-tm +0 -2
  70. data/Gemfile +0 -9
  71. data/Rakefile +0 -38
  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/async_http_client/async_http_client_spec.rb +0 -375
  77. data/spec/acceptance/async_http_client/async_http_client_spec_helper.rb +0 -73
  78. data/spec/acceptance/curb/curb_spec.rb +0 -499
  79. data/spec/acceptance/curb/curb_spec_helper.rb +0 -147
  80. data/spec/acceptance/em_http_request/em_http_request_spec.rb +0 -462
  81. data/spec/acceptance/em_http_request/em_http_request_spec_helper.rb +0 -77
  82. data/spec/acceptance/excon/excon_spec.rb +0 -77
  83. data/spec/acceptance/excon/excon_spec_helper.rb +0 -52
  84. data/spec/acceptance/http_rb/http_rb_spec.rb +0 -93
  85. data/spec/acceptance/http_rb/http_rb_spec_helper.rb +0 -54
  86. data/spec/acceptance/httpclient/httpclient_spec.rb +0 -217
  87. data/spec/acceptance/httpclient/httpclient_spec_helper.rb +0 -57
  88. data/spec/acceptance/manticore/manticore_spec.rb +0 -107
  89. data/spec/acceptance/manticore/manticore_spec_helper.rb +0 -35
  90. data/spec/acceptance/net_http/net_http_shared.rb +0 -153
  91. data/spec/acceptance/net_http/net_http_spec.rb +0 -369
  92. data/spec/acceptance/net_http/net_http_spec_helper.rb +0 -64
  93. data/spec/acceptance/net_http/real_net_http_spec.rb +0 -20
  94. data/spec/acceptance/patron/patron_spec.rb +0 -125
  95. data/spec/acceptance/patron/patron_spec_helper.rb +0 -54
  96. data/spec/acceptance/shared/allowing_and_disabling_net_connect.rb +0 -313
  97. data/spec/acceptance/shared/callbacks.rb +0 -148
  98. data/spec/acceptance/shared/complex_cross_concern_behaviors.rb +0 -36
  99. data/spec/acceptance/shared/enabling_and_disabling_webmock.rb +0 -95
  100. data/spec/acceptance/shared/precedence_of_stubs.rb +0 -15
  101. data/spec/acceptance/shared/request_expectations.rb +0 -930
  102. data/spec/acceptance/shared/returning_declared_responses.rb +0 -409
  103. data/spec/acceptance/shared/stubbing_requests.rb +0 -678
  104. data/spec/acceptance/typhoeus/typhoeus_hydra_spec.rb +0 -135
  105. data/spec/acceptance/typhoeus/typhoeus_hydra_spec_helper.rb +0 -60
  106. data/spec/acceptance/webmock_shared.rb +0 -41
  107. data/spec/fixtures/test.txt +0 -1
  108. data/spec/quality_spec.rb +0 -84
  109. data/spec/spec_helper.rb +0 -48
  110. data/spec/support/example_curl_output.txt +0 -22
  111. data/spec/support/failures.rb +0 -9
  112. data/spec/support/my_rack_app.rb +0 -53
  113. data/spec/support/network_connection.rb +0 -19
  114. data/spec/support/webmock_server.rb +0 -70
  115. data/spec/unit/api_spec.rb +0 -175
  116. data/spec/unit/errors_spec.rb +0 -129
  117. data/spec/unit/http_lib_adapters/http_lib_adapter_registry_spec.rb +0 -17
  118. data/spec/unit/http_lib_adapters/http_lib_adapter_spec.rb +0 -12
  119. data/spec/unit/matchers/hash_excluding_matcher_spec.rb +0 -61
  120. data/spec/unit/matchers/hash_including_matcher_spec.rb +0 -87
  121. data/spec/unit/rack_response_spec.rb +0 -112
  122. data/spec/unit/request_body_diff_spec.rb +0 -90
  123. data/spec/unit/request_execution_verifier_spec.rb +0 -208
  124. data/spec/unit/request_pattern_spec.rb +0 -736
  125. data/spec/unit/request_registry_spec.rb +0 -95
  126. data/spec/unit/request_signature_snippet_spec.rb +0 -89
  127. data/spec/unit/request_signature_spec.rb +0 -155
  128. data/spec/unit/request_stub_spec.rb +0 -199
  129. data/spec/unit/response_spec.rb +0 -286
  130. data/spec/unit/stub_registry_spec.rb +0 -103
  131. data/spec/unit/stub_request_snippet_spec.rb +0 -115
  132. data/spec/unit/util/hash_counter_spec.rb +0 -39
  133. data/spec/unit/util/hash_keys_stringifier_spec.rb +0 -27
  134. data/spec/unit/util/headers_spec.rb +0 -28
  135. data/spec/unit/util/json_spec.rb +0 -33
  136. data/spec/unit/util/query_mapper_spec.rb +0 -157
  137. data/spec/unit/util/uri_spec.rb +0 -371
  138. data/spec/unit/util/version_checker_spec.rb +0 -65
  139. data/spec/unit/webmock_spec.rb +0 -60
  140. data/test/http_request.rb +0 -24
  141. data/test/shared_test.rb +0 -108
  142. data/test/test_helper.rb +0 -23
  143. data/test/test_webmock.rb +0 -12
  144. data/webmock.gemspec +0 -54
@@ -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