webmock 2.0.3 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -0
- data/Gemfile +2 -7
- data/README.md +54 -53
- data/Rakefile +1 -1
- data/lib/webmock/callback_registry.rb +1 -1
- data/lib/webmock/http_lib_adapters/curb_adapter.rb +68 -6
- data/lib/webmock/http_lib_adapters/em_http_request_adapter.rb +4 -4
- data/lib/webmock/http_lib_adapters/excon_adapter.rb +9 -9
- data/lib/webmock/http_lib_adapters/http_rb/request.rb +2 -2
- data/lib/webmock/http_lib_adapters/http_rb/response.rb +5 -5
- data/lib/webmock/http_lib_adapters/http_rb/webmock.rb +3 -3
- data/lib/webmock/http_lib_adapters/httpclient_adapter.rb +5 -5
- data/lib/webmock/http_lib_adapters/manticore_adapter.rb +7 -7
- data/lib/webmock/http_lib_adapters/net_http.rb +3 -3
- data/lib/webmock/http_lib_adapters/patron_adapter.rb +4 -4
- data/lib/webmock/http_lib_adapters/typhoeus_hydra_adapter.rb +14 -14
- data/lib/webmock/matchers/hash_including_matcher.rb +1 -1
- data/lib/webmock/rack_response.rb +3 -3
- data/lib/webmock/request_pattern.rb +8 -8
- data/lib/webmock/request_stub.rb +5 -5
- data/lib/webmock/util/uri.rb +2 -2
- data/lib/webmock/version.rb +1 -1
- data/minitest/webmock_spec.rb +3 -3
- data/spec/acceptance/curb/curb_spec.rb +64 -47
- data/spec/acceptance/curb/curb_spec_helper.rb +4 -4
- data/spec/acceptance/em_http_request/em_http_request_spec.rb +32 -32
- data/spec/acceptance/em_http_request/em_http_request_spec_helper.rb +9 -9
- data/spec/acceptance/excon/excon_spec.rb +14 -14
- data/spec/acceptance/excon/excon_spec_helper.rb +6 -6
- data/spec/acceptance/http_rb/http_rb_spec.rb +1 -1
- data/spec/acceptance/http_rb/http_rb_spec_helper.rb +7 -7
- data/spec/acceptance/httpclient/httpclient_spec.rb +20 -20
- data/spec/acceptance/httpclient/httpclient_spec_helper.rb +5 -5
- data/spec/acceptance/manticore/manticore_spec.rb +11 -11
- data/spec/acceptance/manticore/manticore_spec_helper.rb +3 -3
- data/spec/acceptance/net_http/net_http_shared.rb +4 -4
- data/spec/acceptance/net_http/net_http_spec.rb +25 -25
- data/spec/acceptance/net_http/net_http_spec_helper.rb +4 -4
- data/spec/acceptance/net_http/real_net_http_spec.rb +1 -1
- data/spec/acceptance/patron/patron_spec.rb +10 -10
- data/spec/acceptance/patron/patron_spec_helper.rb +5 -5
- data/spec/acceptance/shared/allowing_and_disabling_net_connect.rb +36 -36
- data/spec/acceptance/shared/callbacks.rb +11 -11
- data/spec/acceptance/shared/complex_cross_concern_behaviors.rb +5 -5
- data/spec/acceptance/shared/enabling_and_disabling_webmock.rb +4 -4
- data/spec/acceptance/shared/precedence_of_stubs.rb +4 -4
- data/spec/acceptance/shared/request_expectations.rb +90 -90
- data/spec/acceptance/shared/returning_declared_responses.rb +49 -49
- data/spec/acceptance/shared/stubbing_requests.rb +78 -78
- data/spec/acceptance/typhoeus/typhoeus_hydra_spec.rb +11 -11
- data/spec/acceptance/typhoeus/typhoeus_hydra_spec_helper.rb +8 -8
- data/spec/spec_helper.rb +6 -3
- data/spec/support/webmock_server.rb +1 -1
- data/spec/unit/api_spec.rb +2 -2
- data/spec/unit/errors_spec.rb +3 -3
- data/spec/unit/matchers/hash_including_matcher_spec.rb +16 -16
- data/spec/unit/rack_response_spec.rb +2 -2
- data/spec/unit/request_body_diff_spec.rb +1 -1
- data/spec/unit/request_execution_verifier_spec.rb +1 -1
- data/spec/unit/request_pattern_spec.rb +115 -115
- data/spec/unit/request_signature_snippet_spec.rb +2 -2
- data/spec/unit/request_signature_spec.rb +16 -16
- data/spec/unit/request_stub_spec.rb +20 -20
- data/spec/unit/response_spec.rb +28 -28
- data/spec/unit/stub_registry_spec.rb +10 -10
- data/spec/unit/stub_request_snippet_spec.rb +6 -6
- data/spec/unit/util/hash_keys_stringifier_spec.rb +4 -4
- data/spec/unit/util/query_mapper_spec.rb +2 -2
- data/spec/unit/util/uri_spec.rb +1 -1
- data/test/http_request.rb +3 -3
- data/test/shared_test.rb +6 -6
- data/webmock.gemspec +4 -2
- metadata +32 -4
@@ -19,7 +19,7 @@ shared_context "enabled and disabled webmock" do |*adapter_info|
|
|
19
19
|
|
20
20
|
describe "when webmock is disabled except this lib" do
|
21
21
|
before(:each) do
|
22
|
-
WebMock.disable!(:
|
22
|
+
WebMock.disable!(except: [http_library])
|
23
23
|
end
|
24
24
|
after(:each) do
|
25
25
|
WebMock.enable!
|
@@ -30,7 +30,7 @@ shared_context "enabled and disabled webmock" do |*adapter_info|
|
|
30
30
|
describe "when webmock is enabled except this lib" do
|
31
31
|
before(:each) do
|
32
32
|
WebMock.disable!
|
33
|
-
WebMock.enable!(:
|
33
|
+
WebMock.enable!(except: [http_library])
|
34
34
|
end
|
35
35
|
after(:each) do
|
36
36
|
WebMock.enable!
|
@@ -52,7 +52,7 @@ shared_context "disabled WebMock" do
|
|
52
52
|
end
|
53
53
|
|
54
54
|
it "should return real response even if there are stubs" do
|
55
|
-
stub_request(:get, /.*/).to_return(:
|
55
|
+
stub_request(:get, /.*/).to_return(body: "x")
|
56
56
|
expect(http_request(:get, webmock_server_url).body).to eq("hello world")
|
57
57
|
end
|
58
58
|
|
@@ -80,7 +80,7 @@ shared_context "enabled WebMock" do
|
|
80
80
|
end
|
81
81
|
|
82
82
|
it "should return stubbed response" do
|
83
|
-
stub_request(:get, /.*/).to_return(:
|
83
|
+
stub_request(:get, /.*/).to_return(body: "x")
|
84
84
|
expect(http_request(:get, "http://www.example.com/").body).to eq("x")
|
85
85
|
end
|
86
86
|
|
@@ -1,14 +1,14 @@
|
|
1
1
|
shared_context "precedence of stubs" do |*adapter_info|
|
2
2
|
describe "when choosing a matching request stub" do
|
3
3
|
it "should use the last declared matching request stub" do
|
4
|
-
stub_request(:get, "www.example.com").to_return(:
|
5
|
-
stub_request(:get, "www.example.com").to_return(:
|
4
|
+
stub_request(:get, "www.example.com").to_return(body: "abc")
|
5
|
+
stub_request(:get, "www.example.com").to_return(body: "def")
|
6
6
|
expect(http_request(:get, "http://www.example.com/").body).to eq("def")
|
7
7
|
end
|
8
8
|
|
9
9
|
it "should not be affected by the type of uri or request method" do
|
10
|
-
stub_request(:get, "www.example.com").to_return(:
|
11
|
-
stub_request(:any, /.*example.*/).to_return(:
|
10
|
+
stub_request(:get, "www.example.com").to_return(body: "abc")
|
11
|
+
stub_request(:any, /.*example.*/).to_return(body: "def")
|
12
12
|
expect(http_request(:get, "http://www.example.com/").body).to eq("def")
|
13
13
|
end
|
14
14
|
end
|
@@ -56,7 +56,7 @@ shared_context "request expectations" do |*adapter_info|
|
|
56
56
|
|
57
57
|
it "should fail if request was executed with different method" do
|
58
58
|
expect {
|
59
|
-
http_request(:post, "http://www.example.com/", :
|
59
|
+
http_request(:post, "http://www.example.com/", body: "abc")
|
60
60
|
expect(a_request(:get, "http://www.example.com")).to have_been_made
|
61
61
|
}.to fail_with(%r(The request GET http://www.example.com/ was expected to execute 1 time but it executed 0 times))
|
62
62
|
end
|
@@ -98,10 +98,10 @@ shared_context "request expectations" do |*adapter_info|
|
|
98
98
|
|
99
99
|
it "should satisfy expectations even if requests were executed in different order than expectations were declared" do
|
100
100
|
stub_request(:post, "http://www.example.com")
|
101
|
-
http_request(:post, "http://www.example.com/", :
|
102
|
-
http_request(:post, "http://www.example.com/", :
|
103
|
-
expect(WebMock).to have_requested(:post, "www.example.com").with(:
|
104
|
-
expect(WebMock).to have_requested(:post, "www.example.com").with(:
|
101
|
+
http_request(:post, "http://www.example.com/", body: "def")
|
102
|
+
http_request(:post, "http://www.example.com/", body: "abc")
|
103
|
+
expect(WebMock).to have_requested(:post, "www.example.com").with(body: "abc")
|
104
|
+
expect(WebMock).to have_requested(:post, "www.example.com").with(body: "def")
|
105
105
|
end
|
106
106
|
|
107
107
|
describe "when matching requests with escaped or unescaped uris" do
|
@@ -141,28 +141,28 @@ shared_context "request expectations" do |*adapter_info|
|
|
141
141
|
it "should satisfy expectation if the request was executed with query params declared as a hash in a query option" do
|
142
142
|
expect {
|
143
143
|
http_request(:get, "http://www.example.com/?a[]=b&a[]=c")
|
144
|
-
expect(a_request(:get, "www.example.com").with(:
|
144
|
+
expect(a_request(:get, "www.example.com").with(query: {"a" => ["b", "c"]})).to have_been_made
|
145
145
|
}.not_to raise_error
|
146
146
|
end
|
147
147
|
|
148
148
|
it "should satisfy expectation if the request was executed with query params declared as string in query option" do
|
149
149
|
expect {
|
150
150
|
http_request(:get, "http://www.example.com/?a[]=b&a[]=c")
|
151
|
-
expect(a_request(:get, "www.example.com").with(:
|
151
|
+
expect(a_request(:get, "www.example.com").with(query: "a[]=b&a[]=c")).to have_been_made
|
152
152
|
}.not_to raise_error
|
153
153
|
end
|
154
154
|
|
155
155
|
it "should satisfy expectation if the request was executed with query params both in uri and in query option" do
|
156
156
|
expect {
|
157
157
|
http_request(:get, "http://www.example.com/?x=3&a[]=b&a[]=c")
|
158
|
-
expect(a_request(:get, "www.example.com/?x=3").with(:
|
158
|
+
expect(a_request(:get, "www.example.com/?x=3").with(query: {"a" => ["b", "c"]})).to have_been_made
|
159
159
|
}.not_to raise_error
|
160
160
|
end
|
161
161
|
|
162
162
|
it "should satisfy expectation if the request was executed with only part query params declared as a hash in a query option" do
|
163
163
|
expect {
|
164
164
|
http_request(:get, "http://www.example.com/?a[]=b&a[]=c&b=1")
|
165
|
-
expect(a_request(:get, "www.example.com").with(:
|
165
|
+
expect(a_request(:get, "www.example.com").with(query: hash_including({"a" => ["b", "c"]}))).to have_been_made
|
166
166
|
}.not_to raise_error
|
167
167
|
end
|
168
168
|
end
|
@@ -384,32 +384,32 @@ shared_context "request expectations" do |*adapter_info|
|
|
384
384
|
|
385
385
|
it "should satisfy expectation if request was executed with the same body" do
|
386
386
|
expect {
|
387
|
-
http_request(:post, "http://www.example.com/", :
|
388
|
-
expect(a_request(:post, "www.example.com").with(:
|
387
|
+
http_request(:post, "http://www.example.com/", body: "abc")
|
388
|
+
expect(a_request(:post, "www.example.com").with(body: "abc")).to have_been_made
|
389
389
|
}.not_to raise_error
|
390
390
|
end
|
391
391
|
|
392
392
|
it "should fail if request was executed with different body" do
|
393
393
|
expect {
|
394
|
-
http_request(:post, "http://www.example.com/", :
|
394
|
+
http_request(:post, "http://www.example.com/", body: "abc")
|
395
395
|
expect(a_request(:post, "www.example.com").
|
396
|
-
with(:
|
396
|
+
with(body: "def")).to have_been_made
|
397
397
|
}.to fail_with(%r(The request POST http://www.example.com/ with body "def" was expected to execute 1 time but it executed 0 times))
|
398
398
|
end
|
399
399
|
|
400
400
|
describe "when expected request body is declared as a regexp" do
|
401
401
|
it "should satisfy expectation if request was executed with body matching regexp" do
|
402
402
|
expect {
|
403
|
-
http_request(:post, "http://www.example.com/", :
|
404
|
-
expect(a_request(:post, "www.example.com").with(:
|
403
|
+
http_request(:post, "http://www.example.com/", body: "abc")
|
404
|
+
expect(a_request(:post, "www.example.com").with(body: /^abc$/)).to have_been_made
|
405
405
|
}.not_to raise_error
|
406
406
|
end
|
407
407
|
|
408
408
|
it "should fail if request was executed with body not matching regexp" do
|
409
409
|
expect {
|
410
|
-
http_request(:post, "http://www.example.com/", :
|
410
|
+
http_request(:post, "http://www.example.com/", body: "abc")
|
411
411
|
expect(a_request(:post, "www.example.com").
|
412
|
-
with(:
|
412
|
+
with(body: /^xabc/)).to have_been_made
|
413
413
|
}.to fail_with(%r(The request POST http://www.example.com/ with body /\^xabc/ was expected to execute 1 time but it executed 0 times))
|
414
414
|
end
|
415
415
|
|
@@ -422,22 +422,22 @@ shared_context "request expectations" do |*adapter_info|
|
|
422
422
|
describe "when request is made with url encoded body matching hash" do
|
423
423
|
it "should satisfy expectation" do
|
424
424
|
expect {
|
425
|
-
http_request(:post, "http://www.example.com/", :
|
426
|
-
expect(a_request(:post, "www.example.com").with(:
|
425
|
+
http_request(:post, "http://www.example.com/", body: 'a=1&c[d][]=e&c[d][]=f&b=five')
|
426
|
+
expect(a_request(:post, "www.example.com").with(body: body_hash)).to have_been_made
|
427
427
|
}.not_to raise_error
|
428
428
|
end
|
429
429
|
|
430
430
|
it "should satisfy expectation even if url encoded params have different order" do
|
431
431
|
expect {
|
432
|
-
http_request(:post, "http://www.example.com/", :
|
433
|
-
expect(a_request(:post, "www.example.com").with(:
|
432
|
+
http_request(:post, "http://www.example.com/", body: 'a=1&c[d][]=e&b=five&c[d][]=f')
|
433
|
+
expect(a_request(:post, "www.example.com").with(body: body_hash)).to have_been_made
|
434
434
|
}.not_to raise_error
|
435
435
|
end
|
436
436
|
|
437
437
|
it "should fail if request is executed with url encoded body not matching hash" do
|
438
438
|
expect {
|
439
|
-
http_request(:post, "http://www.example.com/", :
|
440
|
-
expect(a_request(:post, "www.example.com").with(:
|
439
|
+
http_request(:post, "http://www.example.com/", body: 'c[d][]=f&a=1&c[d][]=e')
|
440
|
+
expect(a_request(:post, "www.example.com").with(body: body_hash)).to have_been_made
|
441
441
|
}.to fail_with(fail_message)
|
442
442
|
end
|
443
443
|
end
|
@@ -445,25 +445,25 @@ shared_context "request expectations" do |*adapter_info|
|
|
445
445
|
describe "when request is executed with json body matching hash and Content-Type is set to json" do
|
446
446
|
it "should satisfy expectation" do
|
447
447
|
expect {
|
448
|
-
http_request(:post, "http://www.example.com/", :
|
449
|
-
:
|
450
|
-
expect(a_request(:post, "www.example.com").with(:
|
448
|
+
http_request(:post, "http://www.example.com/", headers: {'Content-Type' => 'application/json'},
|
449
|
+
body: "{\"a\":\"1\",\"c\":{\"d\":[\"e\",\"f\"]},\"b\":\"five\"}")
|
450
|
+
expect(a_request(:post, "www.example.com").with(body: body_hash)).to have_been_made
|
451
451
|
}.not_to raise_error
|
452
452
|
end
|
453
453
|
|
454
454
|
it "should satisfy expectation even if json body is in different form" do
|
455
455
|
expect {
|
456
|
-
http_request(:post, "http://www.example.com/", :
|
457
|
-
:
|
458
|
-
expect(a_request(:post, "www.example.com").with(:
|
456
|
+
http_request(:post, "http://www.example.com/", headers: {'Content-Type' => 'application/json'},
|
457
|
+
body: "{\"a\":\"1\",\"b\":\"five\",\"c\":{\"d\":[\"e\",\"f\"]}}")
|
458
|
+
expect(a_request(:post, "www.example.com").with(body: body_hash)).to have_been_made
|
459
459
|
}.not_to raise_error
|
460
460
|
end
|
461
461
|
|
462
462
|
it "should satisfy expectation even if json body contains date string" do
|
463
463
|
expect {
|
464
|
-
http_request(:post, "http://www.example.com/", :
|
465
|
-
:
|
466
|
-
expect(a_request(:post, "www.example.com").with(:
|
464
|
+
http_request(:post, "http://www.example.com/", headers: {'Content-Type' => 'application/json'},
|
465
|
+
body: "{\"foo\":\"2010-01-01\"}")
|
466
|
+
expect(a_request(:post, "www.example.com").with(body: {"foo" => "2010-01-01"})).to have_been_made
|
467
467
|
}.not_to raise_error
|
468
468
|
end
|
469
469
|
end
|
@@ -474,25 +474,25 @@ shared_context "request expectations" do |*adapter_info|
|
|
474
474
|
|
475
475
|
it "should satisfy expectation" do
|
476
476
|
expect {
|
477
|
-
http_request(:post, "http://www.example.com/", :
|
478
|
-
:
|
479
|
-
expect(a_request(:post, "www.example.com").with(:
|
477
|
+
http_request(:post, "http://www.example.com/", headers: {'Content-Type' => 'application/xml'},
|
478
|
+
body: "<opt a=\"1\" b=\"five\">\n <c>\n <d>e</d>\n <d>f</d>\n </c>\n</opt>\n")
|
479
|
+
expect(a_request(:post, "www.example.com").with(body: body_hash)).to have_been_made
|
480
480
|
}.not_to raise_error
|
481
481
|
end
|
482
482
|
|
483
483
|
it "should satisfy expectation even if xml body is in different form" do
|
484
484
|
expect {
|
485
|
-
http_request(:post, "http://www.example.com/", :
|
486
|
-
:
|
487
|
-
expect(a_request(:post, "www.example.com").with(:
|
485
|
+
http_request(:post, "http://www.example.com/", headers: {'Content-Type' => 'application/xml'},
|
486
|
+
body: "<opt b=\"five\" a=\"1\">\n <c>\n <d>e</d>\n <d>f</d>\n </c>\n</opt>\n")
|
487
|
+
expect(a_request(:post, "www.example.com").with(body: body_hash)).to have_been_made
|
488
488
|
}.not_to raise_error
|
489
489
|
end
|
490
490
|
|
491
491
|
it "should satisfy expectation even if xml body contains date string" do
|
492
492
|
expect {
|
493
|
-
http_request(:post, "http://www.example.com/", :
|
494
|
-
:
|
495
|
-
expect(a_request(:post, "www.example.com").with(:
|
493
|
+
http_request(:post, "http://www.example.com/", headers: {'Content-Type' => 'application/xml'},
|
494
|
+
body: "<opt foo=\"2010-01-01\">\n</opt>\n")
|
495
|
+
expect(a_request(:post, "www.example.com").with(body: {"opt" => {"foo" => "2010-01-01"}})).to have_been_made
|
496
496
|
}.not_to raise_error
|
497
497
|
end
|
498
498
|
end
|
@@ -505,15 +505,15 @@ shared_context "request expectations" do |*adapter_info|
|
|
505
505
|
describe "when request is made with url encoded body matching hash" do
|
506
506
|
it "should satisfy expectation" do
|
507
507
|
expect {
|
508
|
-
http_request(:post, "http://www.example.com/", :
|
509
|
-
expect(a_request(:post, "www.example.com").with(:
|
508
|
+
http_request(:post, "http://www.example.com/", body: 'a=1&c[d][]=e&c[d][]=f&b=five')
|
509
|
+
expect(a_request(:post, "www.example.com").with(body: body_hash)).to have_been_made
|
510
510
|
}.not_to raise_error
|
511
511
|
end
|
512
512
|
|
513
513
|
it "should fail if request is executed with url encoded body not matching hash" do
|
514
514
|
expect {
|
515
|
-
http_request(:post, "http://www.example.com/", :
|
516
|
-
expect(a_request(:post, "www.example.com").with(:
|
515
|
+
http_request(:post, "http://www.example.com/", body: 'c[d][]=f&a=1&c[d][]=e')
|
516
|
+
expect(a_request(:post, "www.example.com").with(body: body_hash)).to have_been_made
|
517
517
|
}.to fail_with(fail_message)
|
518
518
|
end
|
519
519
|
end
|
@@ -522,77 +522,77 @@ shared_context "request expectations" do |*adapter_info|
|
|
522
522
|
describe "when request with headers is expected" do
|
523
523
|
it "should satisfy expectation if request was executed with the same headers" do
|
524
524
|
expect {
|
525
|
-
http_request(:get, "http://www.example.com/", :
|
525
|
+
http_request(:get, "http://www.example.com/", headers: SAMPLE_HEADERS)
|
526
526
|
expect(a_request(:get, "www.example.com").
|
527
|
-
with(:
|
527
|
+
with(headers: SAMPLE_HEADERS)).to have_been_made
|
528
528
|
}.not_to raise_error
|
529
529
|
end
|
530
530
|
|
531
531
|
it "should satisfy expectation if request was executed with the same headers but with header value declared as array" do
|
532
532
|
expect {
|
533
|
-
http_request(:get, "http://www.example.com/", :
|
533
|
+
http_request(:get, "http://www.example.com/", headers: {"a" => "b"})
|
534
534
|
expect(a_request(:get, "www.example.com").
|
535
|
-
with(:
|
535
|
+
with(headers: {"a" => ["b"]})).to have_been_made
|
536
536
|
}.not_to raise_error
|
537
537
|
end
|
538
538
|
|
539
539
|
describe "when multiple headers with the same key are passed" do
|
540
540
|
it "should satisfy expectation" do
|
541
541
|
expect {
|
542
|
-
http_request(:get, "http://www.example.com/", :
|
542
|
+
http_request(:get, "http://www.example.com/", headers: {"a" => ["b", "c"]})
|
543
543
|
expect(a_request(:get, "www.example.com").
|
544
|
-
with(:
|
544
|
+
with(headers: {"a" => ["b", "c"]})).to have_been_made
|
545
545
|
}.not_to raise_error
|
546
546
|
end
|
547
547
|
|
548
548
|
it "should satisfy expectation even if request was executed with the same headers but different order" do
|
549
549
|
expect {
|
550
|
-
http_request(:get, "http://www.example.com/", :
|
550
|
+
http_request(:get, "http://www.example.com/", headers: {"a" => ["b", "c"]})
|
551
551
|
expect(a_request(:get, "www.example.com").
|
552
|
-
with(:
|
552
|
+
with(headers: {"a" => ["c", "b"]})).to have_been_made
|
553
553
|
}.not_to raise_error
|
554
554
|
end
|
555
555
|
|
556
556
|
it "should fail if request was executed with different headers" do
|
557
557
|
expect {
|
558
|
-
http_request(:get, "http://www.example.com/", :
|
558
|
+
http_request(:get, "http://www.example.com/", headers: {"a" => ["b", "c"]})
|
559
559
|
expect(a_request(:get, "www.example.com").
|
560
|
-
with(:
|
560
|
+
with(headers: {"a" => ["b", "d"]})).to have_been_made
|
561
561
|
}.to fail_with(%r(The request GET http://www.example.com/ with headers \{'A'=>\['b', 'd'\]\} was expected to execute 1 time but it executed 0 times))
|
562
562
|
end
|
563
563
|
end
|
564
564
|
|
565
565
|
it "should fail if request was executed with different headers" do
|
566
566
|
expect {
|
567
|
-
http_request(:get, "http://www.example.com/", :
|
567
|
+
http_request(:get, "http://www.example.com/", headers: SAMPLE_HEADERS)
|
568
568
|
expect(a_request(:get, "www.example.com").
|
569
|
-
with(:
|
569
|
+
with(headers: { 'Content-Length' => '9999'})).to have_been_made
|
570
570
|
}.to fail_with(%r(The request GET http://www.example.com/ with headers \{'Content-Length'=>'9999'\} was expected to execute 1 time but it executed 0 times))
|
571
571
|
end
|
572
572
|
|
573
573
|
it "should fail if request was executed with less headers" do
|
574
574
|
expect {
|
575
|
-
http_request(:get, "http://www.example.com/", :
|
575
|
+
http_request(:get, "http://www.example.com/", headers: {'A' => 'a'})
|
576
576
|
expect(a_request(:get, "www.example.com").
|
577
|
-
with(:
|
577
|
+
with(headers: {'A' => 'a', 'B' => 'b'})).to have_been_made
|
578
578
|
}.to fail_with(%r(The request GET http://www.example.com/ with headers \{'A'=>'a', 'B'=>'b'\} was expected to execute 1 time but it executed 0 times))
|
579
579
|
end
|
580
580
|
|
581
581
|
it "should satisfy expectation if request was executed with more headers" do
|
582
582
|
expect {
|
583
583
|
http_request(:get, "http://www.example.com/",
|
584
|
-
:
|
584
|
+
headers: {'A' => 'a', 'B' => 'b'}
|
585
585
|
)
|
586
586
|
expect(a_request(:get, "www.example.com").
|
587
|
-
with(:
|
587
|
+
with(headers: {'A' => 'a'})).to have_been_made
|
588
588
|
}.not_to raise_error
|
589
589
|
end
|
590
590
|
|
591
591
|
it "should satisfy expectation if request was executed with body and headers but they were not specified in expectantion" do
|
592
592
|
expect {
|
593
593
|
http_request(:post, "http://www.example.com/",
|
594
|
-
:
|
595
|
-
:
|
594
|
+
body: "abc",
|
595
|
+
headers: SAMPLE_HEADERS
|
596
596
|
)
|
597
597
|
expect(a_request(:post, "www.example.com")).to have_been_made
|
598
598
|
}.not_to raise_error
|
@@ -600,17 +600,17 @@ shared_context "request expectations" do |*adapter_info|
|
|
600
600
|
|
601
601
|
it "should satisfy expectation if request was executed with headers matching regular expressions" do
|
602
602
|
expect {
|
603
|
-
http_request(:get, "http://www.example.com/", :
|
603
|
+
http_request(:get, "http://www.example.com/", headers: { 'some-header' => 'MyAppName' })
|
604
604
|
expect(a_request(:get, "www.example.com").
|
605
|
-
with(:
|
605
|
+
with(headers: { some_header: /^MyAppName$/ })).to have_been_made
|
606
606
|
}.not_to raise_error
|
607
607
|
end
|
608
608
|
|
609
609
|
it "should fail if request was executed with headers not matching regular expression" do
|
610
610
|
expect {
|
611
|
-
http_request(:get, "http://www.example.com/", :
|
611
|
+
http_request(:get, "http://www.example.com/", headers: { 'some-header' => 'xMyAppName' })
|
612
612
|
expect(a_request(:get, "www.example.com").
|
613
|
-
with(:
|
613
|
+
with(headers: { some_header: /^MyAppName$/ })).to have_been_made
|
614
614
|
}.to fail_with(%r(The request GET http://www.example.com/ with headers \{'Some-Header'=>/\^MyAppName\$/\} was expected to execute 1 time but it executed 0 times))
|
615
615
|
end
|
616
616
|
end
|
@@ -618,27 +618,27 @@ shared_context "request expectations" do |*adapter_info|
|
|
618
618
|
describe "when expectation contains a request matching block" do
|
619
619
|
it "should satisfy expectation if request was executed and block evaluated to true" do
|
620
620
|
expect {
|
621
|
-
http_request(:post, "http://www.example.com/", :
|
621
|
+
http_request(:post, "http://www.example.com/", body: "wadus")
|
622
622
|
expect(a_request(:post, "www.example.com").with { |req| req.body == "wadus" }).to have_been_made
|
623
623
|
}.not_to raise_error
|
624
624
|
end
|
625
625
|
|
626
626
|
it "should fail if request was executed and block evaluated to false" do
|
627
627
|
expect {
|
628
|
-
http_request(:post, "http://www.example.com/", :
|
628
|
+
http_request(:post, "http://www.example.com/", body: "abc")
|
629
629
|
expect(a_request(:post, "www.example.com").with { |req| req.body == "wadus" }).to have_been_made
|
630
630
|
}.to fail_with(%r(The request POST http://www.example.com/ with given block was expected to execute 1 time but it executed 0 times))
|
631
631
|
end
|
632
632
|
|
633
633
|
it "should fail if request was not expected but it executed and block matched request" do
|
634
634
|
expect {
|
635
|
-
http_request(:post, "http://www.example.com/", :
|
635
|
+
http_request(:post, "http://www.example.com/", body: "wadus")
|
636
636
|
expect(a_request(:post, "www.example.com").with { |req| req.body == "wadus" }).not_to have_been_made
|
637
637
|
}.to fail_with(%r(The request POST http://www.example.com/ with given block was not expected to execute but it executed 1 time))
|
638
638
|
end
|
639
639
|
end
|
640
640
|
|
641
|
-
describe "with userinfo", :
|
641
|
+
describe "with userinfo", unless: (adapter_info.include?(:no_url_auth)) do
|
642
642
|
before(:each) do
|
643
643
|
stub_request(:any, "http://user:pass@www.example.com")
|
644
644
|
stub_request(:any, "http://user:pazz@www.example.com")
|
@@ -721,7 +721,7 @@ shared_context "request expectations" do |*adapter_info|
|
|
721
721
|
}.not_to raise_error
|
722
722
|
end
|
723
723
|
|
724
|
-
it "should fail if request was executed with basic auth header and credentials were provided in url", :
|
724
|
+
it "should fail if request was executed with basic auth header and credentials were provided in url", unless: (adapter_info.include?(:no_url_auth)) do
|
725
725
|
expect {
|
726
726
|
stub_request(:any, "http://user:pass@www.example.com")
|
727
727
|
http_request(:get, "http://user:pass@www.example.com/")
|
@@ -740,8 +740,8 @@ shared_context "request expectations" do |*adapter_info|
|
|
740
740
|
|
741
741
|
it "should satisfy expectation if request with body and headers was expected and request was made" do
|
742
742
|
expect {
|
743
|
-
http_request(:post, "http://www.example.com/", :
|
744
|
-
expect(WebMock).to have_requested(:post, "http://www.example.com").with(:
|
743
|
+
http_request(:post, "http://www.example.com/", body: "abc", headers: {'A' => 'a'})
|
744
|
+
expect(WebMock).to have_requested(:post, "http://www.example.com").with(body: "abc", headers: {'A' => 'a'}).once
|
745
745
|
}.not_to raise_error
|
746
746
|
end
|
747
747
|
|
@@ -754,21 +754,21 @@ shared_context "request expectations" do |*adapter_info|
|
|
754
754
|
|
755
755
|
it "should satisfy expectation if request was executed and expectation had block which evaluated to true" do
|
756
756
|
expect {
|
757
|
-
http_request(:post, "http://www.example.com/", :
|
757
|
+
http_request(:post, "http://www.example.com/", body: "wadus")
|
758
758
|
expect(WebMock).to have_requested(:post, "www.example.com").with { |req| req.body == "wadus" }
|
759
759
|
}.not_to raise_error
|
760
760
|
end
|
761
761
|
|
762
762
|
it "should fail if request was executed and expectation had block which evaluated to false" do
|
763
763
|
expect {
|
764
|
-
http_request(:post, "http://www.example.com/", :
|
764
|
+
http_request(:post, "http://www.example.com/", body: "abc")
|
765
765
|
expect(WebMock).to have_requested(:post, "www.example.com").with { |req| req.body == "wadus" }
|
766
766
|
}.to fail_with(%r(The request POST http://www.example.com/ with given block was expected to execute 1 time but it executed 0 times))
|
767
767
|
end
|
768
768
|
|
769
769
|
it "should fail if request was expected not to be made but was made and block matched request" do
|
770
770
|
expect {
|
771
|
-
http_request(:post, "http://www.example.com/", :
|
771
|
+
http_request(:post, "http://www.example.com/", body: "wadus")
|
772
772
|
expect(WebMock).not_to have_requested(:post, "www.example.com").with { |req| req.body == "wadus" }
|
773
773
|
}.to fail_with(%r(The request POST http://www.example.com/ with given block was not expected to execute but it executed 1 time))
|
774
774
|
end
|
@@ -778,15 +778,15 @@ shared_context "request expectations" do |*adapter_info|
|
|
778
778
|
it "should satisfy expectation if requests was made" do
|
779
779
|
expect {
|
780
780
|
http_request(:get, "http://www.example.com/")
|
781
|
-
assert_requested(:get, "http://www.example.com", :
|
781
|
+
assert_requested(:get, "http://www.example.com", times: 1)
|
782
782
|
assert_requested(:get, "http://www.example.com")
|
783
783
|
}.not_to raise_error
|
784
784
|
end
|
785
785
|
|
786
786
|
it "should satisfy expectation if request was made with body and headers" do
|
787
787
|
expect {
|
788
|
-
http_request(:post, "http://www.example.com/", :
|
789
|
-
assert_requested(:post, "http://www.example.com", :
|
788
|
+
http_request(:post, "http://www.example.com/", body: "abc", headers: {'A' => 'a'})
|
789
|
+
assert_requested(:post, "http://www.example.com", body: "abc", headers: {'A' => 'a'})
|
790
790
|
}.not_to raise_error
|
791
791
|
end
|
792
792
|
|
@@ -799,21 +799,21 @@ shared_context "request expectations" do |*adapter_info|
|
|
799
799
|
|
800
800
|
it "should fail if request expected not to be made was made and expectation block evaluated to true" do
|
801
801
|
expect {
|
802
|
-
http_request(:post, "http://www.example.com/", :
|
802
|
+
http_request(:post, "http://www.example.com/", body: "wadus")
|
803
803
|
assert_not_requested(:post, "www.example.com") { |req| req.body == "wadus" }
|
804
804
|
}.to fail_with(%r(The request POST http://www.example.com/ with given block was not expected to execute but it executed 1 time))
|
805
805
|
end
|
806
806
|
|
807
807
|
it "should satisfy expectation if request was made and expectation block evaluated to true" do
|
808
808
|
expect {
|
809
|
-
http_request(:post, "http://www.example.com/", :
|
809
|
+
http_request(:post, "http://www.example.com/", body: "wadus")
|
810
810
|
assert_requested(:post, "www.example.com") { |req| req.body == "wadus" }
|
811
811
|
}.not_to raise_error
|
812
812
|
end
|
813
813
|
|
814
814
|
it "should fail if request was made and expectation block evaluated to false" do
|
815
815
|
expect {
|
816
|
-
http_request(:post, "http://www.example.com/", :
|
816
|
+
http_request(:post, "http://www.example.com/", body: "abc")
|
817
817
|
assert_requested(:post, "www.example.com") { |req| req.body == "wadus" }
|
818
818
|
}.to fail_with(%r(The request POST http://www.example.com/ with given block was expected to execute 1 time but it executed 0 times))
|
819
819
|
end
|
@@ -824,7 +824,7 @@ shared_context "request expectations" do |*adapter_info|
|
|
824
824
|
stub_http = stub_http_request(:get, "http://www.example.com")
|
825
825
|
expect {
|
826
826
|
http_request(:get, "http://www.example.com/")
|
827
|
-
assert_requested(stub_http, :
|
827
|
+
assert_requested(stub_http, times: 1)
|
828
828
|
assert_requested(stub_http)
|
829
829
|
}.not_to raise_error
|
830
830
|
end
|
@@ -856,8 +856,8 @@ shared_context "request expectations" do |*adapter_info|
|
|
856
856
|
end
|
857
857
|
|
858
858
|
it "should satisfy expectation if expected request with body and headers was made" do
|
859
|
-
stub = stub_request(:post, "http://www.example.com").with(:
|
860
|
-
http_request(:post, "http://www.example.com/", :
|
859
|
+
stub = stub_request(:post, "http://www.example.com").with(body: "abc", headers: {'A' => 'a'})
|
860
|
+
http_request(:post, "http://www.example.com/", body: "abc", headers: {'A' => 'a'})
|
861
861
|
expect(stub).to have_been_requested.once
|
862
862
|
end
|
863
863
|
|
@@ -872,14 +872,14 @@ shared_context "request expectations" do |*adapter_info|
|
|
872
872
|
it "should fail request not expected to be made was made and expectation block evaluated to true" do
|
873
873
|
expect {
|
874
874
|
stub = stub_request(:post, "www.example.com").with { |req| req.body == "wadus" }
|
875
|
-
http_request(:post, "http://www.example.com/", :
|
875
|
+
http_request(:post, "http://www.example.com/", body: "wadus")
|
876
876
|
expect(stub).not_to have_been_requested
|
877
877
|
}.to fail_with(%r(The request POST http://www.example.com/ with given block was not expected to execute but it executed 1 time))
|
878
878
|
end
|
879
879
|
|
880
880
|
it "should satisfy expectation if request was made and expectation block evaluated to true" do
|
881
881
|
stub = stub_request(:post, "www.example.com").with { |req| req.body == "wadus" }
|
882
|
-
http_request(:post, "http://www.example.com/", :
|
882
|
+
http_request(:post, "http://www.example.com/", body: "wadus")
|
883
883
|
expect(stub).to have_been_requested
|
884
884
|
end
|
885
885
|
|
@@ -887,13 +887,13 @@ shared_context "request expectations" do |*adapter_info|
|
|
887
887
|
expect {
|
888
888
|
stub_request(:any, /.+/) #stub any request
|
889
889
|
stub = stub_request(:post, "www.example.com").with { |req| req.body == "wadus" }
|
890
|
-
http_request(:post, "http://www.example.com/", :
|
890
|
+
http_request(:post, "http://www.example.com/", body: "abc")
|
891
891
|
expect(stub).to have_been_requested
|
892
892
|
}.to fail_with(%r(The request POST http://www.example.com/ with given block was expected to execute 1 time but it executed 0 times))
|
893
893
|
end
|
894
894
|
end
|
895
895
|
|
896
|
-
describe "when net connect is allowed", :
|
896
|
+
describe "when net connect is allowed", net_connect: true do
|
897
897
|
before(:each) do
|
898
898
|
WebMock.allow_net_connect!
|
899
899
|
end
|