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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +476 -2
- data/README.md +166 -42
- data/lib/webmock/api.rb +2 -0
- data/lib/webmock/assertion_failure.rb +2 -0
- data/lib/webmock/callback_registry.rb +2 -0
- data/lib/webmock/config.rb +2 -0
- data/lib/webmock/cucumber.rb +2 -0
- data/lib/webmock/deprecation.rb +2 -0
- data/lib/webmock/errors.rb +2 -0
- data/lib/webmock/http_lib_adapters/async_http_client_adapter.rb +228 -0
- data/lib/webmock/http_lib_adapters/curb_adapter.rb +14 -3
- data/lib/webmock/http_lib_adapters/em_http_request_adapter.rb +22 -9
- data/lib/webmock/http_lib_adapters/excon_adapter.rb +5 -0
- data/lib/webmock/http_lib_adapters/http_lib_adapter.rb +2 -0
- data/lib/webmock/http_lib_adapters/http_lib_adapter_registry.rb +2 -0
- data/lib/webmock/http_lib_adapters/http_rb/client.rb +4 -1
- data/lib/webmock/http_lib_adapters/http_rb/request.rb +17 -5
- data/lib/webmock/http_lib_adapters/http_rb/response.rb +49 -5
- data/lib/webmock/http_lib_adapters/http_rb/streamer.rb +11 -3
- data/lib/webmock/http_lib_adapters/http_rb/webmock.rb +8 -2
- data/lib/webmock/http_lib_adapters/http_rb_adapter.rb +7 -5
- data/lib/webmock/http_lib_adapters/httpclient_adapter.rb +25 -7
- data/lib/webmock/http_lib_adapters/manticore_adapter.rb +35 -15
- data/lib/webmock/http_lib_adapters/net_http.rb +59 -112
- data/lib/webmock/http_lib_adapters/net_http_response.rb +3 -1
- data/lib/webmock/http_lib_adapters/patron_adapter.rb +4 -2
- data/lib/webmock/http_lib_adapters/typhoeus_hydra_adapter.rb +18 -2
- data/lib/webmock/matchers/any_arg_matcher.rb +2 -0
- data/lib/webmock/matchers/hash_argument_matcher.rb +2 -0
- data/lib/webmock/matchers/hash_excluding_matcher.rb +2 -0
- data/lib/webmock/matchers/hash_including_matcher.rb +2 -0
- data/lib/webmock/minitest.rb +2 -0
- data/lib/webmock/rack_response.rb +5 -1
- data/lib/webmock/request_body_diff.rb +3 -1
- data/lib/webmock/request_execution_verifier.rb +2 -0
- data/lib/webmock/request_pattern.rb +118 -61
- data/lib/webmock/request_registry.rb +2 -0
- data/lib/webmock/request_signature.rb +4 -2
- data/lib/webmock/request_signature_snippet.rb +2 -0
- data/lib/webmock/request_stub.rb +34 -0
- data/lib/webmock/response.rb +22 -14
- data/lib/webmock/responses_sequence.rb +2 -0
- data/lib/webmock/rspec/matchers/request_pattern_matcher.rb +2 -0
- data/lib/webmock/rspec/matchers/webmock_matcher.rb +2 -0
- data/lib/webmock/rspec/matchers.rb +2 -0
- data/lib/webmock/rspec.rb +4 -1
- data/lib/webmock/stub_registry.rb +28 -11
- data/lib/webmock/stub_request_snippet.rb +2 -0
- data/lib/webmock/test_unit.rb +3 -3
- data/lib/webmock/util/hash_counter.rb +12 -6
- data/lib/webmock/util/hash_keys_stringifier.rb +2 -0
- data/lib/webmock/util/hash_validator.rb +2 -0
- data/lib/webmock/util/headers.rb +23 -10
- data/lib/webmock/util/parsers/json.rb +72 -0
- data/lib/webmock/util/parsers/parse_error.rb +7 -0
- data/lib/webmock/util/parsers/xml.rb +16 -0
- data/lib/webmock/util/query_mapper.rb +6 -2
- data/lib/webmock/util/uri.rb +11 -9
- data/lib/webmock/util/values_stringifier.rb +2 -0
- data/lib/webmock/util/version_checker.rb +7 -5
- data/lib/webmock/version.rb +3 -1
- data/lib/webmock/webmock.rb +22 -3
- data/lib/webmock.rb +5 -2
- metadata +99 -175
- data/.gemtest +0 -0
- data/.gitignore +0 -34
- data/.rspec-tm +0 -2
- data/.travis.yml +0 -21
- data/Gemfile +0 -9
- data/Rakefile +0 -30
- data/lib/webmock/util/json.rb +0 -67
- data/minitest/test_helper.rb +0 -34
- data/minitest/test_webmock.rb +0 -9
- data/minitest/webmock_spec.rb +0 -60
- data/spec/acceptance/curb/curb_spec.rb +0 -481
- data/spec/acceptance/curb/curb_spec_helper.rb +0 -147
- data/spec/acceptance/em_http_request/em_http_request_spec.rb +0 -406
- data/spec/acceptance/em_http_request/em_http_request_spec_helper.rb +0 -77
- data/spec/acceptance/excon/excon_spec.rb +0 -77
- data/spec/acceptance/excon/excon_spec_helper.rb +0 -50
- data/spec/acceptance/http_rb/http_rb_spec.rb +0 -82
- data/spec/acceptance/http_rb/http_rb_spec_helper.rb +0 -54
- data/spec/acceptance/httpclient/httpclient_spec.rb +0 -217
- data/spec/acceptance/httpclient/httpclient_spec_helper.rb +0 -57
- data/spec/acceptance/manticore/manticore_spec.rb +0 -56
- data/spec/acceptance/manticore/manticore_spec_helper.rb +0 -35
- data/spec/acceptance/net_http/net_http_shared.rb +0 -153
- data/spec/acceptance/net_http/net_http_spec.rb +0 -331
- data/spec/acceptance/net_http/net_http_spec_helper.rb +0 -64
- data/spec/acceptance/net_http/real_net_http_spec.rb +0 -20
- data/spec/acceptance/patron/patron_spec.rb +0 -125
- data/spec/acceptance/patron/patron_spec_helper.rb +0 -54
- data/spec/acceptance/shared/allowing_and_disabling_net_connect.rb +0 -313
- data/spec/acceptance/shared/callbacks.rb +0 -147
- data/spec/acceptance/shared/complex_cross_concern_behaviors.rb +0 -36
- data/spec/acceptance/shared/enabling_and_disabling_webmock.rb +0 -95
- data/spec/acceptance/shared/precedence_of_stubs.rb +0 -15
- data/spec/acceptance/shared/request_expectations.rb +0 -923
- data/spec/acceptance/shared/returning_declared_responses.rb +0 -388
- data/spec/acceptance/shared/stubbing_requests.rb +0 -638
- data/spec/acceptance/typhoeus/typhoeus_hydra_spec.rb +0 -135
- data/spec/acceptance/typhoeus/typhoeus_hydra_spec_helper.rb +0 -60
- data/spec/acceptance/webmock_shared.rb +0 -41
- data/spec/fixtures/test.txt +0 -1
- data/spec/quality_spec.rb +0 -84
- data/spec/spec_helper.rb +0 -48
- data/spec/support/example_curl_output.txt +0 -22
- data/spec/support/failures.rb +0 -9
- data/spec/support/my_rack_app.rb +0 -53
- data/spec/support/network_connection.rb +0 -19
- data/spec/support/webmock_server.rb +0 -69
- data/spec/unit/api_spec.rb +0 -175
- data/spec/unit/errors_spec.rb +0 -129
- data/spec/unit/http_lib_adapters/http_lib_adapter_registry_spec.rb +0 -17
- data/spec/unit/http_lib_adapters/http_lib_adapter_spec.rb +0 -12
- data/spec/unit/matchers/hash_excluding_matcher_spec.rb +0 -61
- data/spec/unit/matchers/hash_including_matcher_spec.rb +0 -87
- data/spec/unit/rack_response_spec.rb +0 -112
- data/spec/unit/request_body_diff_spec.rb +0 -90
- data/spec/unit/request_execution_verifier_spec.rb +0 -208
- data/spec/unit/request_pattern_spec.rb +0 -596
- data/spec/unit/request_registry_spec.rb +0 -95
- data/spec/unit/request_signature_snippet_spec.rb +0 -89
- data/spec/unit/request_signature_spec.rb +0 -155
- data/spec/unit/request_stub_spec.rb +0 -199
- data/spec/unit/response_spec.rb +0 -282
- data/spec/unit/stub_registry_spec.rb +0 -103
- data/spec/unit/stub_request_snippet_spec.rb +0 -115
- data/spec/unit/util/hash_counter_spec.rb +0 -39
- data/spec/unit/util/hash_keys_stringifier_spec.rb +0 -27
- data/spec/unit/util/headers_spec.rb +0 -28
- data/spec/unit/util/json_spec.rb +0 -33
- data/spec/unit/util/query_mapper_spec.rb +0 -150
- data/spec/unit/util/uri_spec.rb +0 -299
- data/spec/unit/util/version_checker_spec.rb +0 -65
- data/spec/unit/webmock_spec.rb +0 -11
- data/test/http_request.rb +0 -24
- data/test/shared_test.rb +0 -108
- data/test/test_helper.rb +0 -23
- data/test/test_webmock.rb +0 -6
- data/webmock.gemspec +0 -46
@@ -1,95 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe WebMock::RequestRegistry do
|
4
|
-
|
5
|
-
before(:each) do
|
6
|
-
WebMock::RequestRegistry.instance.reset!
|
7
|
-
@request_pattern = WebMock::RequestPattern.new(:get, "www.example.com")
|
8
|
-
@request_signature = WebMock::RequestSignature.new(:get, "www.example.com")
|
9
|
-
end
|
10
|
-
|
11
|
-
describe "reset!" do
|
12
|
-
before(:each) do
|
13
|
-
WebMock::RequestRegistry.instance.requested_signatures.put(@request_signature)
|
14
|
-
end
|
15
|
-
|
16
|
-
it "should clean list of executed requests" do
|
17
|
-
expect(WebMock::RequestRegistry.instance.times_executed(@request_pattern)).to eq(1)
|
18
|
-
WebMock::RequestRegistry.instance.reset!
|
19
|
-
expect(WebMock::RequestRegistry.instance.times_executed(@request_pattern)).to eq(0)
|
20
|
-
end
|
21
|
-
|
22
|
-
end
|
23
|
-
|
24
|
-
describe "times executed" do
|
25
|
-
|
26
|
-
before(:each) do
|
27
|
-
@request_stub1 = WebMock::RequestStub.new(:get, "www.example.com")
|
28
|
-
@request_stub2 = WebMock::RequestStub.new(:get, "www.example.net")
|
29
|
-
@request_stub3 = WebMock::RequestStub.new(:get, "www.example.org")
|
30
|
-
WebMock::RequestRegistry.instance.requested_signatures.put(WebMock::RequestSignature.new(:get, "www.example.com"))
|
31
|
-
WebMock::RequestRegistry.instance.requested_signatures.put(WebMock::RequestSignature.new(:get, "www.example.com"))
|
32
|
-
WebMock::RequestRegistry.instance.requested_signatures.put(WebMock::RequestSignature.new(:get, "www.example.org"))
|
33
|
-
end
|
34
|
-
|
35
|
-
it "should report 0 if no request matching pattern was requested" do
|
36
|
-
expect(WebMock::RequestRegistry.instance.times_executed(WebMock::RequestPattern.new(:get, "www.example.net"))).to eq(0)
|
37
|
-
end
|
38
|
-
|
39
|
-
it "should report number of times matching pattern was requested" do
|
40
|
-
expect(WebMock::RequestRegistry.instance.times_executed(WebMock::RequestPattern.new(:get, "www.example.com"))).to eq(2)
|
41
|
-
end
|
42
|
-
|
43
|
-
it "should report number of times all matching pattern were requested" do
|
44
|
-
expect(WebMock::RequestRegistry.instance.times_executed(WebMock::RequestPattern.new(:get, /.*example.*/))).to eq(3)
|
45
|
-
end
|
46
|
-
|
47
|
-
describe "multithreading" do
|
48
|
-
let(:request_pattern) { WebMock::RequestPattern.new(:get, "www.example.com") }
|
49
|
-
|
50
|
-
# Reproduce a multithreading issue that causes a RuntimeError:
|
51
|
-
# can't add a new key into hash during iteration.
|
52
|
-
it "works normally iterating on the requested signature hash while another thread is setting it" do
|
53
|
-
thread_injected = false
|
54
|
-
allow(request_pattern).to receive(:matches?).and_wrap_original do |m, *args|
|
55
|
-
unless thread_injected
|
56
|
-
thread_injected = true
|
57
|
-
Thread.new { WebMock::RequestRegistry.instance.requested_signatures.put(:abc) }.join(0.1)
|
58
|
-
end
|
59
|
-
m.call(*args)
|
60
|
-
end
|
61
|
-
expect(WebMock::RequestRegistry.instance.times_executed(request_pattern)).to eq(2)
|
62
|
-
sleep 0.1 while !WebMock::RequestRegistry.instance.requested_signatures.hash.key?(:abc)
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
describe "request_signatures" do
|
68
|
-
it "should return hash of unique request signatures with accumulated number" do
|
69
|
-
WebMock::RequestRegistry.instance.requested_signatures.put(WebMock::RequestSignature.new(:get, "www.example.com"))
|
70
|
-
WebMock::RequestRegistry.instance.requested_signatures.put(WebMock::RequestSignature.new(:get, "www.example.com"))
|
71
|
-
expect(WebMock::RequestRegistry.instance.requested_signatures.
|
72
|
-
get(WebMock::RequestSignature.new(:get, "www.example.com"))).to eq(2)
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
describe "to_s" do
|
77
|
-
it "should output string with all executed requests and numbers of executions" do
|
78
|
-
[
|
79
|
-
WebMock::RequestSignature.new(:get, "www.example.com"),
|
80
|
-
WebMock::RequestSignature.new(:get, "www.example.com"),
|
81
|
-
WebMock::RequestSignature.new(:put, "www.example.org"),
|
82
|
-
].each do |s|
|
83
|
-
WebMock::RequestRegistry.instance.requested_signatures.put(s)
|
84
|
-
end
|
85
|
-
expect(WebMock::RequestRegistry.instance.to_s).to eq(
|
86
|
-
"GET http://www.example.com/ was made 2 times\nPUT http://www.example.org/ was made 1 time\n"
|
87
|
-
)
|
88
|
-
end
|
89
|
-
|
90
|
-
it "should output info if no requests were executed" do
|
91
|
-
expect(WebMock::RequestRegistry.instance.to_s).to eq("No requests were made.")
|
92
|
-
end
|
93
|
-
end
|
94
|
-
|
95
|
-
end
|
@@ -1,89 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
RSpec.describe WebMock::RequestSignatureSnippet do
|
4
|
-
it("is real"){expect{subject}.not_to(raise_error)}
|
5
|
-
|
6
|
-
subject { WebMock::RequestSignatureSnippet.new(request_signature) }
|
7
|
-
|
8
|
-
let(:uri) { "http://example.com" }
|
9
|
-
let(:method) { "GET" }
|
10
|
-
|
11
|
-
let(:request_signature) { WebMock::RequestSignature.new(method, uri) }
|
12
|
-
let(:request_signature_body) { {"key" => "different value"}.to_json }
|
13
|
-
|
14
|
-
let(:request_pattern) {
|
15
|
-
WebMock::RequestPattern.new(
|
16
|
-
method, uri, {body: request_signature_body}
|
17
|
-
)
|
18
|
-
}
|
19
|
-
|
20
|
-
before :each do
|
21
|
-
request_signature.headers = {"Content-Type" => "application/json"}
|
22
|
-
request_signature.body = request_signature_body
|
23
|
-
end
|
24
|
-
|
25
|
-
describe "#stubbing_instructions" do
|
26
|
-
context "with stubbing instructions turned off" do
|
27
|
-
before :each do
|
28
|
-
WebMock.hide_stubbing_instructions!
|
29
|
-
end
|
30
|
-
|
31
|
-
it "returns nil" do
|
32
|
-
expect(subject.stubbing_instructions).to be nil
|
33
|
-
end
|
34
|
-
|
35
|
-
after :each do
|
36
|
-
WebMock.show_stubbing_instructions!
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
context "with stubbing instructions turned on" do
|
41
|
-
it "returns a stub snippet" do
|
42
|
-
expect(subject.stubbing_instructions).to include(
|
43
|
-
"You can stub this request with the following snippet:"
|
44
|
-
)
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
describe "#request_stubs" do
|
50
|
-
before :each do
|
51
|
-
WebMock.stub_request(:get, "https://www.example.com").with(body: {"a" => "b"})
|
52
|
-
end
|
53
|
-
|
54
|
-
context "when showing the body diff is turned off" do
|
55
|
-
before :each do
|
56
|
-
WebMock.hide_body_diff!
|
57
|
-
end
|
58
|
-
|
59
|
-
it "returns does not show the body diff" do
|
60
|
-
result = subject.request_stubs
|
61
|
-
result.sub!("registered request stubs:\n\n", "")
|
62
|
-
expect(result).to eq(
|
63
|
-
"stub_request(:get, \"https://www.example.com/\").\n with(\n body: {\"a\"=>\"b\"})"
|
64
|
-
)
|
65
|
-
end
|
66
|
-
|
67
|
-
after :each do
|
68
|
-
WebMock.show_body_diff!
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
context "when showing the body diff is turned on" do
|
73
|
-
it "shows the body diff" do
|
74
|
-
result = subject.request_stubs
|
75
|
-
result.sub!("registered request stubs:\n\n", "")
|
76
|
-
expect(result).to eq(
|
77
|
-
"stub_request(:get, \"https://www.example.com/\").\n with(\n body: {\"a\"=>\"b\"})\n\nBody diff:\n [[\"-\", \"key\", \"different value\"], [\"+\", \"a\", \"b\"]]\n"
|
78
|
-
)
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
context "with no request stubs" do
|
83
|
-
it "returns nil" do
|
84
|
-
WebMock.reset!
|
85
|
-
expect(subject.request_stubs).to be nil
|
86
|
-
end
|
87
|
-
end
|
88
|
-
end
|
89
|
-
end
|
@@ -1,155 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe WebMock::RequestSignature do
|
4
|
-
|
5
|
-
describe "initialization" do
|
6
|
-
|
7
|
-
it "assign the uri to be the normalized uri" do
|
8
|
-
expect(WebMock::Util::URI).to receive(:normalize_uri).and_return("www.example.kom")
|
9
|
-
signature = WebMock::RequestSignature.new(:get, "www.example.com")
|
10
|
-
expect(signature.uri).to eq("www.example.kom")
|
11
|
-
end
|
12
|
-
|
13
|
-
it "assigns the uri without normalization if uri is already a URI" do
|
14
|
-
expect(WebMock::Util::URI).not_to receive(:normalize_uri)
|
15
|
-
uri = Addressable::URI.parse("www.example.com")
|
16
|
-
signature = WebMock::RequestSignature.new(:get, uri)
|
17
|
-
expect(signature.uri).to eq(uri)
|
18
|
-
end
|
19
|
-
|
20
|
-
it "assigns normalized headers" do
|
21
|
-
expect(WebMock::Util::Headers).to receive(:normalize_headers).with('A' => 'a').and_return('B' => 'b')
|
22
|
-
expect(
|
23
|
-
WebMock::RequestSignature.new(:get, "www.example.com", headers: {'A' => 'a'}).headers
|
24
|
-
).to eq({'B' => 'b'})
|
25
|
-
end
|
26
|
-
|
27
|
-
it "assign the body" do
|
28
|
-
expect(WebMock::RequestSignature.new(:get, "www.example.com", body: "abc").body).to eq("abc")
|
29
|
-
end
|
30
|
-
|
31
|
-
it "symbolizes the method" do
|
32
|
-
expect(WebMock::RequestSignature.new('get', "www.example.com", body: "abc").method).to eq(:get)
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
describe "#to_s" do
|
37
|
-
it "describes itself" do
|
38
|
-
expect(WebMock::RequestSignature.new(:get, "www.example.com",
|
39
|
-
body: "abc", headers: {'A' => 'a', 'B' => 'b'}).to_s).to eq(
|
40
|
-
"GET http://www.example.com/ with body 'abc' with headers {'A'=>'a', 'B'=>'b'}"
|
41
|
-
)
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
describe "#hash" do
|
46
|
-
it "reporst same hash for two signatures with the same values" do
|
47
|
-
signature1 = WebMock::RequestSignature.new(:get, "www.example.com",
|
48
|
-
body: "abc", headers: {'A' => 'a', 'B' => 'b'})
|
49
|
-
signature2 = WebMock::RequestSignature.new(:get, "www.example.com",
|
50
|
-
body: "abc", headers: {'A' => 'a', 'B' => 'b'})
|
51
|
-
expect(signature1.hash).to eq(signature2.hash)
|
52
|
-
end
|
53
|
-
|
54
|
-
it "reports different hash for two signatures with different method" do
|
55
|
-
signature1 = WebMock::RequestSignature.new(:get, "www.example.com")
|
56
|
-
signature2 = WebMock::RequestSignature.new(:put, "www.example.com")
|
57
|
-
expect(signature1.hash).not_to eq(signature2.hash)
|
58
|
-
end
|
59
|
-
|
60
|
-
it "reports different hash for two signatures with different uri" do
|
61
|
-
signature1 = WebMock::RequestSignature.new(:get, "www.example.com")
|
62
|
-
signature2 = WebMock::RequestSignature.new(:get, "www.example.org")
|
63
|
-
expect(signature1.hash).not_to eq(signature2.hash)
|
64
|
-
end
|
65
|
-
|
66
|
-
it "reports different hash for two signatures with different body" do
|
67
|
-
signature1 = WebMock::RequestSignature.new(:get, "www.example.com", body: "abc")
|
68
|
-
signature2 = WebMock::RequestSignature.new(:get, "www.example.com", body: "def")
|
69
|
-
expect(signature1.hash).not_to eq(signature2.hash)
|
70
|
-
end
|
71
|
-
|
72
|
-
it "reports different hash for two signatures with different headers" do
|
73
|
-
signature1 = WebMock::RequestSignature.new(:get, "www.example.com",
|
74
|
-
headers: {'A' => 'a'})
|
75
|
-
signature2 = WebMock::RequestSignature.new(:get, "www.example.com",
|
76
|
-
headers: {'A' => 'A'})
|
77
|
-
expect(signature1.hash).not_to eq(signature2.hash)
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
[:==, :eql?].each do |method|
|
82
|
-
describe method do
|
83
|
-
it "is true for two signatures with the same values" do
|
84
|
-
signature1 = WebMock::RequestSignature.new(:get, "www.example.com",
|
85
|
-
body: "abc", headers: {'A' => 'a', 'B' => 'b'})
|
86
|
-
signature2 = WebMock::RequestSignature.new(:get, "www.example.com",
|
87
|
-
body: "abc", headers: {'A' => 'a', 'B' => 'b'})
|
88
|
-
|
89
|
-
expect(signature1.send(method, signature2)).to be_truthy
|
90
|
-
end
|
91
|
-
|
92
|
-
it "is false for two signatures with different method" do
|
93
|
-
signature1 = WebMock::RequestSignature.new(:get, "www.example.com")
|
94
|
-
signature2 = WebMock::RequestSignature.new(:put, "www.example.com")
|
95
|
-
expect(signature1.send(method, signature2)).to be_falsey
|
96
|
-
end
|
97
|
-
|
98
|
-
it "is false for two signatures with different uri" do
|
99
|
-
signature1 = WebMock::RequestSignature.new(:get, "www.example.com")
|
100
|
-
signature2 = WebMock::RequestSignature.new(:get, "www.example.org")
|
101
|
-
expect(signature1.send(method, signature2)).to be_falsey
|
102
|
-
end
|
103
|
-
|
104
|
-
it "is false for two signatures with different body" do
|
105
|
-
signature1 = WebMock::RequestSignature.new(:get, "www.example.com", body: "abc")
|
106
|
-
signature2 = WebMock::RequestSignature.new(:get, "www.example.com", body: "def")
|
107
|
-
expect(signature1.send(method, signature2)).to be_falsey
|
108
|
-
end
|
109
|
-
|
110
|
-
it "is false for two signatures with different headers" do
|
111
|
-
signature1 = WebMock::RequestSignature.new(:get, "www.example.com",
|
112
|
-
headers: {'A' => 'a'})
|
113
|
-
signature2 = WebMock::RequestSignature.new(:get, "www.example.com",
|
114
|
-
headers: {'A' => 'A'})
|
115
|
-
expect(signature1.send(method, signature2)).to be_falsey
|
116
|
-
end
|
117
|
-
end
|
118
|
-
end
|
119
|
-
|
120
|
-
subject { WebMock::RequestSignature.new(:get, "www.example.com") }
|
121
|
-
|
122
|
-
describe "#url_encoded?" do
|
123
|
-
it "returns true if the headers are urlencoded" do
|
124
|
-
subject.headers = { "Content-Type" => "application/x-www-form-urlencoded" }
|
125
|
-
expect(subject.url_encoded?).to be true
|
126
|
-
end
|
127
|
-
|
128
|
-
it "returns false if the headers are NOT urlencoded" do
|
129
|
-
subject.headers = { "Content-Type" => "application/made-up-format" }
|
130
|
-
expect(subject.url_encoded?).to be false
|
131
|
-
end
|
132
|
-
|
133
|
-
it "returns false when no headers are set" do
|
134
|
-
subject.headers = nil
|
135
|
-
expect(subject.url_encoded?).to be false
|
136
|
-
end
|
137
|
-
end
|
138
|
-
|
139
|
-
describe "#json_headers?" do
|
140
|
-
it "returns true if the headers are json" do
|
141
|
-
subject.headers = { "Content-Type" => "application/json" }
|
142
|
-
expect(subject.json_headers?).to be true
|
143
|
-
end
|
144
|
-
|
145
|
-
it "returns false if the headers are NOT json" do
|
146
|
-
subject.headers = { "Content-Type" => "application/made-up-format" }
|
147
|
-
expect(subject.json_headers?).to be false
|
148
|
-
end
|
149
|
-
|
150
|
-
it "returns false when no headers are set" do
|
151
|
-
subject.headers = nil
|
152
|
-
expect(subject.json_headers?).to be false
|
153
|
-
end
|
154
|
-
end
|
155
|
-
end
|
@@ -1,199 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe WebMock::RequestStub do
|
4
|
-
|
5
|
-
before(:each) do
|
6
|
-
@request_stub = WebMock::RequestStub.new(:get, "www.example.com")
|
7
|
-
end
|
8
|
-
|
9
|
-
it "should have request pattern with method and uri" do
|
10
|
-
expect(@request_stub.request_pattern.to_s).to eq("GET http://www.example.com/")
|
11
|
-
end
|
12
|
-
|
13
|
-
it "should have response" do
|
14
|
-
expect(@request_stub.response).to be_a(WebMock::Response)
|
15
|
-
end
|
16
|
-
|
17
|
-
describe "with" do
|
18
|
-
|
19
|
-
it "should assign body to request pattern" do
|
20
|
-
@request_stub.with(body: "abc")
|
21
|
-
expect(@request_stub.request_pattern.to_s).to eq(WebMock::RequestPattern.new(:get, "www.example.com", body: "abc").to_s)
|
22
|
-
end
|
23
|
-
|
24
|
-
it "should assign normalized headers to request pattern" do
|
25
|
-
@request_stub.with(headers: {'A' => 'a'})
|
26
|
-
expect(@request_stub.request_pattern.to_s).to eq(
|
27
|
-
WebMock::RequestPattern.new(:get, "www.example.com", headers: {'A' => 'a'}).to_s
|
28
|
-
)
|
29
|
-
end
|
30
|
-
|
31
|
-
it "should assign given block to request profile" do
|
32
|
-
@request_stub.with { |req| req.body == "abc" }
|
33
|
-
expect(@request_stub.request_pattern.matches?(WebMock::RequestSignature.new(:get, "www.example.com", body: "abc"))).to be_truthy
|
34
|
-
end
|
35
|
-
|
36
|
-
end
|
37
|
-
|
38
|
-
describe "to_return" do
|
39
|
-
|
40
|
-
it "should assign response with provided options" do
|
41
|
-
@request_stub.to_return(body: "abc", status: 500)
|
42
|
-
expect(@request_stub.response.body).to eq("abc")
|
43
|
-
expect(@request_stub.response.status).to eq([500, ""])
|
44
|
-
end
|
45
|
-
|
46
|
-
it "should assign responses with provided options" do
|
47
|
-
@request_stub.to_return([{body: "abc"}, {body: "def"}])
|
48
|
-
expect([@request_stub.response.body, @request_stub.response.body]).to eq(["abc", "def"])
|
49
|
-
end
|
50
|
-
|
51
|
-
end
|
52
|
-
|
53
|
-
describe "then" do
|
54
|
-
it "should return stub without any modifications, acting as syntactic sugar" do
|
55
|
-
expect(@request_stub.then).to eq(@request_stub)
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
describe "response" do
|
60
|
-
|
61
|
-
it "should return responses in a sequence passed as array" do
|
62
|
-
@request_stub.to_return([{body: "abc"}, {body: "def"}])
|
63
|
-
expect(@request_stub.response.body).to eq("abc")
|
64
|
-
expect(@request_stub.response.body).to eq("def")
|
65
|
-
end
|
66
|
-
|
67
|
-
it "should repeat returning last response" do
|
68
|
-
@request_stub.to_return([{body: "abc"}, {body: "def"}])
|
69
|
-
@request_stub.response
|
70
|
-
@request_stub.response
|
71
|
-
expect(@request_stub.response.body).to eq("def")
|
72
|
-
end
|
73
|
-
|
74
|
-
it "should return responses in a sequence passed as comma separated params" do
|
75
|
-
@request_stub.to_return({body: "abc"}, {body: "def"})
|
76
|
-
expect(@request_stub.response.body).to eq("abc")
|
77
|
-
expect(@request_stub.response.body).to eq("def")
|
78
|
-
end
|
79
|
-
|
80
|
-
it "should return responses declared in multiple to_return declarations" do
|
81
|
-
@request_stub.to_return({body: "abc"}).to_return({body: "def"})
|
82
|
-
expect(@request_stub.response.body).to eq("abc")
|
83
|
-
expect(@request_stub.response.body).to eq("def")
|
84
|
-
end
|
85
|
-
|
86
|
-
end
|
87
|
-
|
88
|
-
describe "to_raise" do
|
89
|
-
|
90
|
-
it "should assign response with exception to be thrown" do
|
91
|
-
@request_stub.to_raise(ArgumentError)
|
92
|
-
expect {
|
93
|
-
@request_stub.response.raise_error_if_any
|
94
|
-
}.to raise_error(ArgumentError, "Exception from WebMock")
|
95
|
-
end
|
96
|
-
|
97
|
-
it "should assign sequence of responses with response with exception to be thrown" do
|
98
|
-
@request_stub.to_return(body: "abc").then.to_raise(ArgumentError)
|
99
|
-
expect(@request_stub.response.body).to eq("abc")
|
100
|
-
expect {
|
101
|
-
@request_stub.response.raise_error_if_any
|
102
|
-
}.to raise_error(ArgumentError, "Exception from WebMock")
|
103
|
-
end
|
104
|
-
|
105
|
-
it "should assign a list responses to be thrown in a sequence" do
|
106
|
-
@request_stub.to_raise(ArgumentError, IndexError)
|
107
|
-
expect {
|
108
|
-
@request_stub.response.raise_error_if_any
|
109
|
-
}.to raise_error(ArgumentError, "Exception from WebMock")
|
110
|
-
expect {
|
111
|
-
@request_stub.response.raise_error_if_any
|
112
|
-
}.to raise_error(IndexError, "Exception from WebMock")
|
113
|
-
end
|
114
|
-
|
115
|
-
it "should raise exceptions declared in multiple to_raise declarations" do
|
116
|
-
@request_stub.to_raise(ArgumentError).then.to_raise(IndexError)
|
117
|
-
expect {
|
118
|
-
@request_stub.response.raise_error_if_any
|
119
|
-
}.to raise_error(ArgumentError, "Exception from WebMock")
|
120
|
-
expect {
|
121
|
-
@request_stub.response.raise_error_if_any
|
122
|
-
}.to raise_error(IndexError, "Exception from WebMock")
|
123
|
-
end
|
124
|
-
|
125
|
-
end
|
126
|
-
|
127
|
-
describe "to_timeout" do
|
128
|
-
|
129
|
-
it "should assign response with timeout" do
|
130
|
-
@request_stub.to_timeout
|
131
|
-
expect(@request_stub.response.should_timeout).to be_truthy
|
132
|
-
end
|
133
|
-
|
134
|
-
it "should assign sequence of responses with response with timeout" do
|
135
|
-
@request_stub.to_return(body: "abc").then.to_timeout
|
136
|
-
expect(@request_stub.response.body).to eq("abc")
|
137
|
-
expect(@request_stub.response.should_timeout).to be_truthy
|
138
|
-
end
|
139
|
-
|
140
|
-
it "should allow multiple timeouts to be declared" do
|
141
|
-
@request_stub.to_timeout.then.to_timeout.then.to_return(body: "abc")
|
142
|
-
expect(@request_stub.response.should_timeout).to be_truthy
|
143
|
-
expect(@request_stub.response.should_timeout).to be_truthy
|
144
|
-
expect(@request_stub.response.body).to eq("abc")
|
145
|
-
end
|
146
|
-
|
147
|
-
end
|
148
|
-
|
149
|
-
|
150
|
-
describe "times" do
|
151
|
-
|
152
|
-
it "should give error if declared before any response declaration is declared" do
|
153
|
-
expect {
|
154
|
-
@request_stub.times(3)
|
155
|
-
}.to raise_error("Invalid WebMock stub declaration. times(N) can be declared only after response declaration.")
|
156
|
-
end
|
157
|
-
|
158
|
-
it "should repeat returning last declared response declared number of times" do
|
159
|
-
@request_stub.to_return({body: "abc"}).times(2).then.to_return({body: "def"})
|
160
|
-
expect(@request_stub.response.body).to eq("abc")
|
161
|
-
expect(@request_stub.response.body).to eq("abc")
|
162
|
-
expect(@request_stub.response.body).to eq("def")
|
163
|
-
end
|
164
|
-
|
165
|
-
it "should repeat raising last declared exception declared number of times" do
|
166
|
-
@request_stub.to_return({body: "abc"}).times(2).then.to_return({body: "def"})
|
167
|
-
expect(@request_stub.response.body).to eq("abc")
|
168
|
-
expect(@request_stub.response.body).to eq("abc")
|
169
|
-
expect(@request_stub.response.body).to eq("def")
|
170
|
-
end
|
171
|
-
|
172
|
-
it "should repeat returning last declared sequence of responses declared number of times" do
|
173
|
-
@request_stub.to_return({body: "abc"}, {body: "def"}).times(2).then.to_return({body: "ghj"})
|
174
|
-
expect(@request_stub.response.body).to eq("abc")
|
175
|
-
expect(@request_stub.response.body).to eq("def")
|
176
|
-
expect(@request_stub.response.body).to eq("abc")
|
177
|
-
expect(@request_stub.response.body).to eq("def")
|
178
|
-
expect(@request_stub.response.body).to eq("ghj")
|
179
|
-
end
|
180
|
-
|
181
|
-
it "should return self" do
|
182
|
-
expect(@request_stub.to_return({body: "abc"}).times(1)).to eq(@request_stub)
|
183
|
-
end
|
184
|
-
|
185
|
-
it "should raise error if argument is not integer" do
|
186
|
-
expect {
|
187
|
-
@request_stub.to_return({body: "abc"}).times("not number")
|
188
|
-
}.to raise_error("times(N) accepts integers >= 1 only")
|
189
|
-
end
|
190
|
-
|
191
|
-
it "should raise error if argument is < 1" do
|
192
|
-
expect {
|
193
|
-
@request_stub.to_return({body: "abc"}).times(0)
|
194
|
-
}.to raise_error("times(N) accepts integers >= 1 only")
|
195
|
-
end
|
196
|
-
|
197
|
-
end
|
198
|
-
|
199
|
-
end
|