webmock 0.7.3 → 0.8.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.
- data/CHANGELOG +15 -0
- data/README.md +80 -68
- data/Rakefile +1 -0
- data/VERSION +1 -1
- data/lib/webmock.rb +2 -0
- data/lib/webmock/adapters/rspec/webmock_matcher.rb +1 -4
- data/lib/webmock/http_lib_adapters/httpclient.rb +96 -0
- data/lib/webmock/http_lib_adapters/net_http.rb +4 -7
- data/lib/webmock/request.rb +29 -0
- data/lib/webmock/request_profile.rb +28 -15
- data/lib/webmock/request_registry.rb +12 -2
- data/lib/webmock/request_signature.rb +2 -1
- data/lib/webmock/request_stub.rb +1 -2
- data/lib/webmock/response.rb +18 -6
- data/lib/webmock/util/uri.rb +2 -2
- data/lib/webmock/webmock.rb +2 -2
- data/spec/httpclient_spec.rb +36 -0
- data/spec/httpclient_spec_helper.rb +57 -0
- data/spec/net_http_spec.rb +15 -24
- data/spec/net_http_spec_helper.rb +53 -0
- data/spec/request_execution_verifier_spec.rb +5 -5
- data/spec/request_profile_spec.rb +17 -10
- data/spec/request_registry_spec.rb +15 -15
- data/spec/request_signature_spec.rb +71 -56
- data/spec/request_stub_spec.rb +3 -3
- data/spec/response_spec.rb +7 -1
- data/spec/spec_helper.rb +5 -33
- data/spec/util/uri_spec.rb +67 -40
- data/spec/webmock_spec.rb +179 -164
- data/test/test_webmock.rb +25 -19
- data/webmock.gemspec +14 -3
- metadata +20 -2
@@ -5,43 +5,50 @@ describe RequestProfile do
|
|
5
5
|
describe "initialization" do
|
6
6
|
|
7
7
|
it "should have assigned normalized uri" do
|
8
|
-
WebMock::Util::URI.should_receive(:normalize_uri).and_return("www.
|
9
|
-
profile = RequestProfile.new(:get, "www.
|
10
|
-
profile.uri.should == "www.
|
8
|
+
WebMock::Util::URI.should_receive(:normalize_uri).and_return("www.example.kom")
|
9
|
+
profile = RequestProfile.new(:get, "www.example.com")
|
10
|
+
profile.uri.should == "www.example.kom"
|
11
11
|
end
|
12
12
|
|
13
13
|
it "should have assigned uri without normalization if uri is URI" do
|
14
14
|
WebMock::Util::URI.should_not_receive(:normalize_uri)
|
15
|
-
uri = Addressable::URI.parse("www.
|
15
|
+
uri = Addressable::URI.parse("www.example.com")
|
16
16
|
profile = RequestProfile.new(:get, uri)
|
17
17
|
profile.uri.should == uri
|
18
18
|
end
|
19
19
|
|
20
20
|
it "should have assigned normalized headers" do
|
21
21
|
WebMock::Util::Headers.should_receive(:normalize_headers).with('A' => 'a').and_return('B' => 'b')
|
22
|
-
RequestProfile.new(:get, "www.
|
22
|
+
RequestProfile.new(:get, "www.example.com", :headers => {'A' => 'a'}).headers.should == {'B' => 'b'}
|
23
23
|
end
|
24
24
|
|
25
25
|
it "should have assigned body" do
|
26
|
-
RequestProfile.new(:get, "www.
|
26
|
+
RequestProfile.new(:get, "www.example.com", :body => "abc").
|
27
|
+
body.should == RequestProfile::Body.new("abc")
|
27
28
|
end
|
28
29
|
|
29
30
|
end
|
30
31
|
|
31
32
|
it "should report string describing itself" do
|
32
|
-
RequestProfile.new(:get, "www.
|
33
|
-
|
33
|
+
RequestProfile.new(:get, "www.example.com",
|
34
|
+
:body => "abc", :headers => {'A' => 'a', 'B' => 'b'}).to_s.should ==
|
35
|
+
"GET http://www.example.com/ with body 'abc' with headers {'A'=>'a', 'B'=>'b'}"
|
34
36
|
end
|
35
37
|
|
36
38
|
|
37
39
|
describe "with" do
|
38
40
|
before(:each) do
|
39
|
-
@request_profile = RequestProfile.new(:get, "www.
|
41
|
+
@request_profile = RequestProfile.new(:get, "www.example.com")
|
40
42
|
end
|
41
43
|
|
42
44
|
it "should assign body to request profile" do
|
43
45
|
@request_profile.with(:body => "abc")
|
44
|
-
@request_profile.body.should == "abc"
|
46
|
+
@request_profile.body.should == RequestProfile::Body.new("abc")
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should have the same body" do
|
50
|
+
@request_profile.with(:body => "abc")
|
51
|
+
@request_profile.body.should == RequestProfile::Body.new("abc")
|
45
52
|
end
|
46
53
|
|
47
54
|
it "should assign normalized headers to request profile" do
|
@@ -4,9 +4,9 @@ describe RequestRegistry do
|
|
4
4
|
|
5
5
|
before(:each) do
|
6
6
|
RequestRegistry.instance.reset_webmock
|
7
|
-
@request_profile = RequestProfile.new(:get, "www.
|
8
|
-
@request_signature = RequestSignature.new(:get, "www.
|
9
|
-
@request_stub = RequestStub.new(:get, "www.
|
7
|
+
@request_profile = RequestProfile.new(:get, "www.example.com")
|
8
|
+
@request_signature = RequestSignature.new(:get, "www.example.com")
|
9
|
+
@request_stub = RequestStub.new(:get, "www.example.com")
|
10
10
|
end
|
11
11
|
|
12
12
|
describe "reset_webmock" do
|
@@ -60,11 +60,11 @@ describe RequestRegistry do
|
|
60
60
|
end
|
61
61
|
|
62
62
|
it "should always return last registered matching response" do
|
63
|
-
@request_stub1 = RequestStub.new(:get, "www.
|
63
|
+
@request_stub1 = RequestStub.new(:get, "www.example.com")
|
64
64
|
@request_stub1.response = @response1 = Response.new
|
65
|
-
@request_stub2 = RequestStub.new(:get, "www.
|
65
|
+
@request_stub2 = RequestStub.new(:get, "www.example.com")
|
66
66
|
@request_stub2.response = @response2 = Response.new
|
67
|
-
@request_stub3 = RequestStub.new(:get, "www.
|
67
|
+
@request_stub3 = RequestStub.new(:get, "www.example.org")
|
68
68
|
@request_stub3.response = @response3 = Response.new
|
69
69
|
RequestRegistry.instance.register_request_stub(@request_stub1)
|
70
70
|
RequestRegistry.instance.register_request_stub(@request_stub2)
|
@@ -83,24 +83,24 @@ describe RequestRegistry do
|
|
83
83
|
end
|
84
84
|
|
85
85
|
before(:each) do
|
86
|
-
@request_stub1 = RequestStub.new(:get, "www.
|
87
|
-
@request_stub2 = RequestStub.new(:get, "www.
|
88
|
-
@request_stub3 = RequestStub.new(:get, "www.
|
89
|
-
RequestRegistry.instance.requested_signatures.put(RequestSignature.new(:get, "www.
|
90
|
-
RequestRegistry.instance.requested_signatures.put(RequestSignature.new(:get, "www.
|
91
|
-
RequestRegistry.instance.requested_signatures.put(RequestSignature.new(:get, "www.
|
86
|
+
@request_stub1 = RequestStub.new(:get, "www.example.com")
|
87
|
+
@request_stub2 = RequestStub.new(:get, "www.example.net")
|
88
|
+
@request_stub3 = RequestStub.new(:get, "www.example.org")
|
89
|
+
RequestRegistry.instance.requested_signatures.put(RequestSignature.new(:get, "www.example.com"))
|
90
|
+
RequestRegistry.instance.requested_signatures.put(RequestSignature.new(:get, "www.example.com"))
|
91
|
+
RequestRegistry.instance.requested_signatures.put(RequestSignature.new(:get, "www.example.org"))
|
92
92
|
end
|
93
93
|
|
94
94
|
it "should report 0 if no request matching profile was requested" do
|
95
|
-
RequestRegistry.instance.times_executed(RequestProfile.new(:get, "www.
|
95
|
+
RequestRegistry.instance.times_executed(RequestProfile.new(:get, "www.example.net")).should == 0
|
96
96
|
end
|
97
97
|
|
98
98
|
it "should report number of times matching profile was requested" do
|
99
|
-
RequestRegistry.instance.times_executed(RequestProfile.new(:get, "www.
|
99
|
+
RequestRegistry.instance.times_executed(RequestProfile.new(:get, "www.example.com")).should == 2
|
100
100
|
end
|
101
101
|
|
102
102
|
it "should report number of times all matching profile were requested" do
|
103
|
-
RequestRegistry.instance.times_executed(RequestProfile.new(:get, /.*
|
103
|
+
RequestRegistry.instance.times_executed(RequestProfile.new(:get, /.*example.*/)).should == 3
|
104
104
|
end
|
105
105
|
|
106
106
|
|
@@ -5,79 +5,79 @@ describe RequestSignature do
|
|
5
5
|
describe "when matching" do
|
6
6
|
|
7
7
|
it "should match if uri matches and method matches" do
|
8
|
-
RequestSignature.new(:get, "www.
|
9
|
-
should match(RequestProfile.new(:get, "www.
|
8
|
+
RequestSignature.new(:get, "www.example.com").
|
9
|
+
should match(RequestProfile.new(:get, "www.example.com"))
|
10
10
|
end
|
11
11
|
|
12
12
|
it "should match if uri matches and method is any" do
|
13
|
-
RequestSignature.new(:get, "www.
|
14
|
-
should match(RequestProfile.new(:any, "www.
|
13
|
+
RequestSignature.new(:get, "www.example.com").
|
14
|
+
should match(RequestProfile.new(:any, "www.example.com"))
|
15
15
|
end
|
16
16
|
|
17
17
|
it "should not match if other request profile has different method" do
|
18
|
-
RequestSignature.new(:get, "www.
|
19
|
-
should_not match(RequestProfile.new(:post, "www.
|
18
|
+
RequestSignature.new(:get, "www.example.com").
|
19
|
+
should_not match(RequestProfile.new(:post, "www.example.com"))
|
20
20
|
end
|
21
21
|
|
22
22
|
it "should match if uri matches other uri" do
|
23
|
-
RequestSignature.new(:get, "www.
|
24
|
-
should match(RequestProfile.new(:get, "www.
|
23
|
+
RequestSignature.new(:get, "www.example.com").
|
24
|
+
should match(RequestProfile.new(:get, "www.example.com"))
|
25
25
|
end
|
26
26
|
|
27
27
|
it "should match if uri matches other escaped using uri" do
|
28
|
-
RequestSignature.new(:get, "www.
|
29
|
-
should match(RequestProfile.new(:get, "www.
|
28
|
+
RequestSignature.new(:get, "www.example.com/my path").
|
29
|
+
should match(RequestProfile.new(:get, "www.example.com/my%20path"))
|
30
30
|
end
|
31
31
|
|
32
32
|
it "should match if unescaped uri matches other uri" do
|
33
|
-
RequestSignature.new(:get, "www.
|
34
|
-
should match(RequestProfile.new(:get, "www.
|
33
|
+
RequestSignature.new(:get, "www.example.com/my%20path").
|
34
|
+
should match(RequestProfile.new(:get, "www.example.com/my path"))
|
35
35
|
end
|
36
36
|
|
37
37
|
it "should match if unescaped uri matches other regexp uri" do
|
38
|
-
RequestSignature.new(:get, "www.
|
39
|
-
should match(RequestProfile.new(:get, /.*
|
38
|
+
RequestSignature.new(:get, "www.example.com/my%20path").
|
39
|
+
should match(RequestProfile.new(:get, /.*my path.*/))
|
40
40
|
end
|
41
41
|
|
42
42
|
it "should match if uri matches other regex uri" do
|
43
|
-
RequestSignature.new(:get, "www.
|
44
|
-
should match(RequestProfile.new(:get, /.*
|
43
|
+
RequestSignature.new(:get, "www.example.com").
|
44
|
+
should match(RequestProfile.new(:get, /.*example.*/))
|
45
45
|
end
|
46
46
|
|
47
47
|
it "should match for uris with same parameters" do
|
48
|
-
RequestSignature.new(:get, "www.
|
49
|
-
should match(RequestProfile.new(:get, "www.
|
48
|
+
RequestSignature.new(:get, "www.example.com?a=1&b=2").
|
49
|
+
should match(RequestProfile.new(:get, "www.example.com?a=1&b=2"))
|
50
50
|
end
|
51
51
|
|
52
52
|
it "should not match for uris with different parameters" do
|
53
|
-
RequestSignature.new(:get, "www.
|
54
|
-
should_not match(RequestProfile.new(:get, "www.
|
53
|
+
RequestSignature.new(:get, "www.example.com?a=2&b=1").
|
54
|
+
should_not match(RequestProfile.new(:get, "www.example.com?a=1&b=2"))
|
55
55
|
end
|
56
56
|
|
57
57
|
it "should match for parameters in different order" do
|
58
|
-
RequestSignature.new(:get, "www.
|
59
|
-
should match(RequestProfile.new(:get, "www.
|
58
|
+
RequestSignature.new(:get, "www.example.com?a=1&b=2").
|
59
|
+
should match(RequestProfile.new(:get, "www.example.com?b=2&a=1"))
|
60
60
|
end
|
61
61
|
|
62
62
|
describe "when parameters are escaped" do
|
63
63
|
|
64
64
|
it "should match if uri with non escaped parameters is the same as other uri with escaped parameters" do
|
65
|
-
RequestSignature.new(:get, "www.
|
66
|
-
should match(RequestProfile.new(:get, "www.
|
65
|
+
RequestSignature.new(:get, "www.example.com/?a=a b").
|
66
|
+
should match(RequestProfile.new(:get, "www.example.com/?a=a%20b"))
|
67
67
|
end
|
68
68
|
|
69
69
|
it "should match if uri with escaped parameters is the same as other uri with non escaped parameters" do
|
70
|
-
RequestSignature.new(:get, "www.
|
71
|
-
should match(RequestProfile.new(:get, "www.
|
70
|
+
RequestSignature.new(:get, "www.example.com/?a=a%20b").
|
71
|
+
should match(RequestProfile.new(:get, "www.example.com/?a=a b"))
|
72
72
|
end
|
73
73
|
|
74
74
|
it "should match if other regexp is for non escaped parameters but uri has escaped parameters" do
|
75
|
-
RequestSignature.new(:get, "www.
|
75
|
+
RequestSignature.new(:get, "www.example.com/?a=a%20b").
|
76
76
|
should match(RequestProfile.new(:get, /.*a=a b.*/))
|
77
77
|
end
|
78
78
|
|
79
79
|
it "should match if other regexp is for escaped parameters but uri has non escaped parameters" do
|
80
|
-
RequestSignature.new(:get, "www.
|
80
|
+
RequestSignature.new(:get, "www.example.com/?a=a b").
|
81
81
|
should match(RequestProfile.new(:get, /.*a=a%20b.*/))
|
82
82
|
end
|
83
83
|
|
@@ -86,68 +86,83 @@ describe RequestSignature do
|
|
86
86
|
|
87
87
|
|
88
88
|
it "should match for same bodies" do
|
89
|
-
RequestSignature.new(:get, "www.
|
90
|
-
should match(RequestProfile.new(:get, "www.
|
89
|
+
RequestSignature.new(:get, "www.example.com", :body => "abc").
|
90
|
+
should match(RequestProfile.new(:get, "www.example.com", :body => "abc"))
|
91
91
|
end
|
92
92
|
|
93
93
|
it "should not match for different bodies" do
|
94
|
-
RequestSignature.new(:get, "www.
|
95
|
-
should_not match(RequestProfile.new(:get, "www.
|
94
|
+
RequestSignature.new(:get, "www.example.com", :body => "abc").
|
95
|
+
should_not match(RequestProfile.new(:get, "www.example.com", :body => "def"))
|
96
96
|
end
|
97
97
|
|
98
|
-
it "should match
|
99
|
-
RequestSignature.new(:get, "www.
|
100
|
-
should match(RequestProfile.new(:get, "www.
|
98
|
+
it "should match if other has not specified body" do
|
99
|
+
RequestSignature.new(:get, "www.example.com", :body => "abc").
|
100
|
+
should match(RequestProfile.new(:get, "www.example.com"))
|
101
|
+
end
|
102
|
+
|
103
|
+
it "should not match if other has nil body" do
|
104
|
+
RequestSignature.new(:get, "www.example.com", :body => "abc").
|
105
|
+
should_not match(RequestProfile.new(:get, "www.example.com", :body => nil))
|
101
106
|
end
|
102
107
|
|
103
108
|
it "should not match if other has empty body" do
|
104
|
-
RequestSignature.new(:get, "www.
|
105
|
-
should_not match(RequestProfile.new(:get, "www.
|
109
|
+
RequestSignature.new(:get, "www.example.com", :body => "abc").
|
110
|
+
should_not match(RequestProfile.new(:get, "www.example.com", :body => ""))
|
111
|
+
end
|
112
|
+
|
113
|
+
it "should not match if other has body" do
|
114
|
+
RequestSignature.new(:get, "www.example.com").
|
115
|
+
should_not match(RequestProfile.new(:get, "www.example.com", :body => "abc"))
|
106
116
|
end
|
107
117
|
|
108
118
|
it "should match for same headers" do
|
109
|
-
RequestSignature.new(:get, "www.
|
110
|
-
should match(RequestProfile.new(:get, "www.
|
119
|
+
RequestSignature.new(:get, "www.example.com", :headers => {'Content-Type' => 'image/jpeg'}).
|
120
|
+
should match(RequestProfile.new(:get, "www.example.com", :headers => {'Content-Type' => 'image/jpeg'}))
|
111
121
|
end
|
112
122
|
|
113
123
|
it "should not match for different values of the same header" do
|
114
|
-
RequestSignature.new(:get, "www.
|
115
|
-
should_not match(RequestProfile.new(:get, "www.
|
124
|
+
RequestSignature.new(:get, "www.example.com", :headers => {'Content-Type' => 'image/jpeg'}).
|
125
|
+
should_not match(RequestProfile.new(:get, "www.example.com", :headers => {'Content-Type' => 'image/png'}))
|
116
126
|
end
|
117
127
|
|
118
128
|
it "should match if request has more headers than other" do
|
119
|
-
RequestSignature.new(:get, "www.
|
120
|
-
should match(RequestProfile.new(:get, "www.
|
129
|
+
RequestSignature.new(:get, "www.example.com", :headers => {'Content-Type' => 'image/jpeg', 'Content-Length' => '8888'}).
|
130
|
+
should match(RequestProfile.new(:get, "www.example.com", :headers => {'Content-Type' => 'image/jpeg'}))
|
121
131
|
end
|
122
132
|
|
123
133
|
it "should not match if request has less headers that the other and all match" do
|
124
|
-
RequestSignature.new(:get, "www.
|
125
|
-
should_not match(RequestProfile.new(:get, "www.
|
134
|
+
RequestSignature.new(:get, "www.example.com", :headers => {'Content-Type' => 'image/jpeg'}).
|
135
|
+
should_not match(RequestProfile.new(:get, "www.example.com", :headers => {'Content-Type' => 'image/jpeg', 'Content-Length' => '8888'}))
|
126
136
|
end
|
127
137
|
|
128
138
|
it "should match even is header keys or values are in different format" do
|
129
|
-
RequestSignature.new(:get, "www.
|
130
|
-
should match(RequestProfile.new(:get, "www.
|
139
|
+
RequestSignature.new(:get, "www.example.com", :headers => {:ContentLength => 8888, 'content_type' => 'image/png'}).
|
140
|
+
should match(RequestProfile.new(:get, "www.example.com", :headers => {'ContentLength' => '8888', 'Content-type' => 'image/png'}))
|
141
|
+
end
|
142
|
+
|
143
|
+
it "should match is other has not specified" do
|
144
|
+
RequestSignature.new(:get, "www.example.com", :headers => {'A' => 'a'}).
|
145
|
+
should match(RequestProfile.new(:get, "www.example.com"))
|
131
146
|
end
|
132
147
|
|
133
|
-
it "should match is other has nil headers" do
|
134
|
-
RequestSignature.new(:get, "www.
|
135
|
-
should match(RequestProfile.new(:get, "www.
|
148
|
+
it "should not match is other has nil headers" do
|
149
|
+
RequestSignature.new(:get, "www.example.com", :headers => {'A' => 'a'}).
|
150
|
+
should match(RequestProfile.new(:get, "www.example.com", :headers => nil))
|
136
151
|
end
|
137
152
|
|
138
153
|
it "should not match if other has empty headers" do
|
139
|
-
RequestSignature.new(:get, "www.
|
140
|
-
should_not match(RequestProfile.new(:get, "www.
|
154
|
+
RequestSignature.new(:get, "www.example.com", :headers => {'A' => 'a'}).
|
155
|
+
should_not match(RequestProfile.new(:get, "www.example.com", :headers => {}))
|
141
156
|
end
|
142
157
|
|
143
158
|
it "should not match if profile has no headers but other has headers" do
|
144
|
-
RequestSignature.new(:get, "www.
|
145
|
-
should_not match(RequestProfile.new(:get, "www.
|
159
|
+
RequestSignature.new(:get, "www.example.com").
|
160
|
+
should_not match(RequestProfile.new(:get, "www.example.com", :headers => {'A'=>'a'}))
|
146
161
|
end
|
147
162
|
|
148
163
|
it "should not match if profile has empty headers but other has headers" do
|
149
|
-
RequestSignature.new(:get, "www.
|
150
|
-
should_not match(RequestProfile.new(:get, "www.
|
164
|
+
RequestSignature.new(:get, "www.example.com", :headers => {}).
|
165
|
+
should_not match(RequestProfile.new(:get, "www.example.com", :headers => {'A'=>'a'}))
|
151
166
|
end
|
152
167
|
|
153
168
|
end
|
data/spec/request_stub_spec.rb
CHANGED
@@ -3,12 +3,12 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
|
3
3
|
describe RequestStub do
|
4
4
|
|
5
5
|
before(:each) do
|
6
|
-
@request_stub = RequestStub.new(:get, "www.
|
6
|
+
@request_stub = RequestStub.new(:get, "www.example.com")
|
7
7
|
end
|
8
8
|
|
9
9
|
it "should have request profile with method and uri" do
|
10
10
|
@request_stub.request_profile.method.should == :get
|
11
|
-
@request_stub.request_profile.uri.host.should == "www.
|
11
|
+
@request_stub.request_profile.uri.host.should == "www.example.com"
|
12
12
|
end
|
13
13
|
|
14
14
|
it "should have response" do
|
@@ -19,7 +19,7 @@ describe RequestStub do
|
|
19
19
|
|
20
20
|
it "should assign body to request profile" do
|
21
21
|
@request_stub.with(:body => "abc")
|
22
|
-
@request_stub.request_profile.body.should == "abc"
|
22
|
+
@request_stub.request_profile.body.should == RequestProfile::Body.new("abc")
|
23
23
|
end
|
24
24
|
|
25
25
|
it "should assign normalized headers to request profile" do
|
data/spec/response_spec.rb
CHANGED
@@ -7,6 +7,7 @@ describe Response do
|
|
7
7
|
|
8
8
|
it "should report normalized headers" do
|
9
9
|
Util::Headers.should_receive(:normalize_headers).with('A' => 'a').and_return('B' => 'b')
|
10
|
+
@response = Response.new(:headers => {'A' => 'a'})
|
10
11
|
@response.headers.should == {'B' => 'b'}
|
11
12
|
end
|
12
13
|
|
@@ -49,8 +50,13 @@ describe Response do
|
|
49
50
|
@response.body.should == "abc"
|
50
51
|
end
|
51
52
|
|
52
|
-
it "should report
|
53
|
+
it "should report string even if existing file path was provided" do
|
53
54
|
@response = Response.new(:body => __FILE__)
|
55
|
+
@response.body.should == __FILE__
|
56
|
+
end
|
57
|
+
|
58
|
+
it "should report content of a IO object if provided" do
|
59
|
+
@response = Response.new(:body => File.new(__FILE__))
|
54
60
|
@response.body.should == File.new(__FILE__).read
|
55
61
|
end
|
56
62
|
|
data/spec/spec_helper.rb
CHANGED
@@ -1,8 +1,9 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'httpclient'
|
1
3
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
2
4
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
3
5
|
require 'spec'
|
4
6
|
require 'spec/autorun'
|
5
|
-
require 'rubygems'
|
6
7
|
|
7
8
|
require 'webmock/rspec'
|
8
9
|
|
@@ -13,7 +14,7 @@ def fail()
|
|
13
14
|
end
|
14
15
|
|
15
16
|
def fail_with(message)
|
16
|
-
raise_error(Spec::Expectations::ExpectationNotMetError,message)
|
17
|
+
raise_error(Spec::Expectations::ExpectationNotMetError, message)
|
17
18
|
end
|
18
19
|
|
19
20
|
class Proc
|
@@ -22,37 +23,8 @@ class Proc
|
|
22
23
|
end
|
23
24
|
end
|
24
25
|
|
25
|
-
|
26
|
-
|
27
|
-
# that a request isn't handled by WebMock
|
28
|
-
#This solution is copied from FakeWeb project
|
29
|
-
def setup_expectations_for_real_request(options = {})
|
30
|
-
# Socket handling
|
31
|
-
if options[:port] == 443
|
32
|
-
socket = mock("SSLSocket")
|
33
|
-
OpenSSL::SSL::SSLSocket.should_receive(:===).with(socket).at_least(:once).and_return(true)
|
34
|
-
OpenSSL::SSL::SSLSocket.should_receive(:new).with(socket, instance_of(OpenSSL::SSL::SSLContext)).at_least(:once).and_return(socket)
|
35
|
-
socket.stub!(:sync_close=).and_return(true)
|
36
|
-
socket.should_receive(:connect).at_least(:once).with()
|
37
|
-
else
|
38
|
-
socket = mock("TCPSocket")
|
39
|
-
Socket.should_receive(:===).with(socket).at_least(:once).and_return(true)
|
40
|
-
end
|
41
|
-
|
42
|
-
TCPSocket.should_receive(:open).with(options[:host], options[:port]).at_least(:once).and_return(socket)
|
43
|
-
socket.stub!(:closed?).and_return(false)
|
44
|
-
socket.stub!(:close).and_return(true)
|
45
|
-
|
46
|
-
# Request/response handling
|
47
|
-
request_parts = ["#{options[:method]} #{options[:path]} HTTP/1.1", "Host: #{options[:host]}"]
|
48
|
-
socket.should_receive(:write).with(/#{request_parts[0]}.*#{request_parts[1]}.*/m).and_return(100)
|
49
|
-
|
50
|
-
socket.should_receive(:sysread).once.and_return("HTTP/1.1 #{options[:response_code]} #{options[:response_message]}\nContent-Length: #{options[:response_body].length}\n\n#{options[:response_body]}")
|
51
|
-
socket.should_receive(:sysread).any_number_of_times.and_raise(EOFError)
|
52
|
-
end
|
53
|
-
|
54
|
-
def setup_expectations_for_real_google_request(options = {})
|
55
|
-
defaults = { :host => "www.google.com", :port => 80, :method => "GET",
|
26
|
+
def setup_expectations_for_real_example_com_request(options = {})
|
27
|
+
defaults = { :host => "www.example.com", :port => 80, :method => "GET",
|
56
28
|
:path => "/",
|
57
29
|
:response_code => 200, :response_message => "OK",
|
58
30
|
:response_body => "<title>Google fake response</title>" }
|