itrigga-net_helper 0.2.0 → 0.3.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/Gemfile +6 -2
- data/README.rdoc +36 -1
- data/Rakefile +18 -13
- data/VERSION +1 -1
- data/lib/itrigga/net_helper.rb +52 -145
- data/lib/itrigga/net_helper/rest_client.rb +19 -0
- data/lib/itrigga/net_helper/typhoeus.rb +35 -0
- data/spec/net_helper/rest_client_spec.rb +32 -0
- data/spec/net_helper/typhoeus_spec.rb +90 -0
- data/spec/net_helper_spec.rb +167 -236
- data/spec/spec.opts +5 -0
- data/spec/spec_helper.rb +54 -16
- metadata +95 -31
- data/Gemfile.lock +0 -36
data/spec/net_helper_spec.rb
CHANGED
@@ -1,139 +1,186 @@
|
|
1
1
|
require File.join(File.dirname(__FILE__), 'spec_helper' )
|
2
2
|
|
3
3
|
describe "Itrigga::NetHelper" do
|
4
|
-
before
|
5
|
-
@
|
6
|
-
|
4
|
+
before do
|
5
|
+
@default_http_params = {
|
6
|
+
:timeout => 5,
|
7
|
+
:retries_on_timeout => 5,
|
8
|
+
:max_redirects => 3
|
9
|
+
}
|
10
|
+
|
7
11
|
end
|
8
12
|
|
9
|
-
describe "
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
end
|
14
|
-
|
15
|
-
it "should return true" do
|
16
|
-
Itrigga::NetHelper.typhoeus_present?.should == true
|
17
|
-
end
|
13
|
+
describe "available_http_engines" do
|
14
|
+
it "should return the constants defined in the Itrigga::NetHelper module (ie the classes)" do
|
15
|
+
Itrigga::NetHelper.should_receive(:constants)
|
16
|
+
Itrigga::NetHelper.available_http_engines
|
18
17
|
end
|
19
18
|
|
20
|
-
|
21
|
-
|
22
|
-
|
19
|
+
it "should return the correct classes" do
|
20
|
+
Itrigga::NetHelper.available_http_engines.sort.should == ["RestClient","Typhoeus"].sort
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
|
25
|
+
describe "default_http_engine" do
|
26
|
+
it "should be rest client" do
|
27
|
+
Itrigga::NetHelper.default_http_engine.should == "RestClient"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
|
32
|
+
describe "do_get" do
|
33
|
+
before do
|
34
|
+
Itrigga::NetHelper.stub!(:get).and_return("result")
|
35
|
+
end
|
36
|
+
|
37
|
+
context "using defaults" do
|
38
|
+
it "should call get changing the params into a hash" do
|
39
|
+
Itrigga::NetHelper.should_receive(:get).with(hash_including({:url => "blart"}.merge(@default_http_params)))
|
40
|
+
Itrigga::NetHelper.do_get "blart"
|
23
41
|
end
|
24
|
-
|
25
|
-
|
26
|
-
|
42
|
+
end
|
43
|
+
|
44
|
+
context "overriding defaults" do
|
45
|
+
it "should call get changing the params into a hash" do
|
46
|
+
Itrigga::NetHelper.should_receive(:get).with(hash_including(:url => "blart",:timeout => 1, :retries_on_timeout => 2, :max_redirects => 42))
|
47
|
+
Itrigga::NetHelper.do_get "blart", 1, 2, 42
|
27
48
|
end
|
28
49
|
end
|
29
50
|
|
51
|
+
it "should return the result from get" do
|
52
|
+
Itrigga::NetHelper.do_get("blart").should == "result"
|
53
|
+
end
|
30
54
|
end
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
55
|
+
|
56
|
+
|
57
|
+
describe "get" do
|
58
|
+
before do
|
59
|
+
Itrigga::NetHelper.stub!(:get_engine).and_return(@engine = mock("HTTPEngine"))
|
60
|
+
@engine.stub!(:get).and_return("result")
|
61
|
+
Itrigga::NetHelper.stub!(:with_timeout).and_yield
|
62
|
+
@default_http_params = @default_http_params.merge({:headers => {}})
|
63
|
+
@default_http_params_with_url = {:url => "blart"}.merge(@default_http_params)
|
35
64
|
end
|
36
65
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
66
|
+
it "should raise error if no :url option given" do
|
67
|
+
lambda { Itrigga::NetHelper.get }.should raise_error(ArgumentError,":url is required")
|
68
|
+
end
|
69
|
+
|
70
|
+
it "should call get_engine with merged params" do
|
71
|
+
Itrigga::NetHelper.should_receive(:get_engine).with(hash_including(@default_http_params_with_url))
|
72
|
+
Itrigga::NetHelper.get :url => "blart"
|
73
|
+
end
|
74
|
+
|
75
|
+
it "should call with_timeout" do
|
76
|
+
Itrigga::NetHelper.should_receive(:with_timeout).with(@default_http_params_with_url).and_yield
|
77
|
+
Itrigga::NetHelper.get :url => "blart"
|
78
|
+
end
|
79
|
+
|
80
|
+
it "should call get in the http engine in the block" do
|
81
|
+
@engine.should_receive(:get).with(@default_http_params_with_url).and_return("result")
|
82
|
+
Itrigga::NetHelper.get :url => "blart"
|
42
83
|
end
|
43
84
|
|
44
|
-
it "should
|
45
|
-
|
46
|
-
Itrigga::NetHelper.should_receive(:handle_response).and_return("")
|
47
|
-
Itrigga::NetHelper.do_get( "http://some.com" )
|
85
|
+
it "should return the result of the block" do
|
86
|
+
Itrigga::NetHelper.get(:url => "blart").should == "result"
|
48
87
|
end
|
88
|
+
end
|
49
89
|
|
90
|
+
|
91
|
+
describe "with_timeout" do
|
92
|
+
before do
|
93
|
+
@block = Proc.new{ 6 + 6 }
|
94
|
+
end
|
50
95
|
|
51
|
-
|
52
|
-
before
|
53
|
-
|
96
|
+
context "when SystemTimer is available" do
|
97
|
+
before do
|
98
|
+
silence_warnings { Object.const_set(:SystemTimer, @system_timer = mock("SystemTimer")) }
|
99
|
+
@system_timer.stub!(:timeout_after).and_yield
|
100
|
+
end
|
101
|
+
after do
|
102
|
+
silence_warnings { Object.send(:remove_const, :SystemTimer) }
|
54
103
|
end
|
55
104
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
# NOTE: the important expectation is the above one!
|
60
|
-
lambda {
|
61
|
-
Itrigga::NetHelper.do_get( "http://some.com", 1, 2 )
|
62
|
-
}.should raise_error( IOError )
|
63
|
-
end
|
105
|
+
it "should call timeout_after" do
|
106
|
+
@system_timer.should_receive(:timeout_after).with(42).and_yield
|
107
|
+
Itrigga::NetHelper.with_timeout({:timeout => 42}, &@block)
|
64
108
|
end
|
65
109
|
|
66
|
-
|
67
|
-
|
68
|
-
lambda {
|
69
|
-
Itrigga::NetHelper.do_get( "http://some.com", 0, 2 )
|
70
|
-
}.should raise_error( IOError )
|
71
|
-
end
|
110
|
+
it "should return the result from the block" do
|
111
|
+
Itrigga::NetHelper.with_timeout({:timeout => 42}, &@block).should == 12
|
72
112
|
end
|
73
113
|
|
114
|
+
it "should not call timeout" do
|
115
|
+
Itrigga::NetHelper.should_not_receive(:timeout)
|
116
|
+
Itrigga::NetHelper.with_timeout({:timeout => 42}, &@block)
|
117
|
+
end
|
74
118
|
end
|
75
|
-
end
|
76
|
-
|
77
|
-
describe "handle_response" do
|
78
119
|
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
120
|
+
context "when SystemTimer is not available" do
|
121
|
+
it "should call timeout" do
|
122
|
+
Itrigga::NetHelper.should_receive(:timeout).with(42).and_yield
|
123
|
+
Itrigga::NetHelper.with_timeout({:timeout => 42}, &@block)
|
83
124
|
end
|
84
125
|
|
85
|
-
it "should return the
|
86
|
-
Itrigga::NetHelper.
|
126
|
+
it "should return the result from the block" do
|
127
|
+
Itrigga::NetHelper.with_timeout({:timeout => 42}, &@block).should == 12
|
87
128
|
end
|
88
129
|
end
|
89
130
|
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
@mock_response.stub!(:is_a?).with(Net::HTTPRedirection).and_return true
|
95
|
-
@mock_response.stub!(:[]).with('location').and_return("http://some.redirect")
|
131
|
+
context "when an error is thrown" do
|
132
|
+
it "should retry 3 times then raise an IOError" do
|
133
|
+
Itrigga::NetHelper.should_receive(:timeout).exactly(4).times.and_raise(TimeoutError)
|
134
|
+
lambda { Itrigga::NetHelper.with_timeout({:timeout => 42, :retries_on_timeout => 3}, &@block) }.should raise_error(IOError)
|
96
135
|
end
|
97
136
|
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
it "should pass on the absolute url" do
|
120
|
-
Itrigga::NetHelper.should_receive(:do_get).with( "http://some.com/some/relative/path?param=567", anything, anything )
|
121
|
-
Itrigga::NetHelper.handle_response( "http://some.com/some_other/path.xml?id=123", @mock_response, 23, 16)
|
122
|
-
end
|
123
|
-
end
|
137
|
+
it "should not handle other errors" do
|
138
|
+
Itrigga::NetHelper.stub!(:timeout).and_raise "Funkiness Alert!"
|
139
|
+
lambda { Itrigga::NetHelper.with_timeout({:timeout => 42, :retries_on_timeout => 3}, &@block) }.should raise_error
|
140
|
+
end
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
|
145
|
+
describe "get_engine" do
|
146
|
+
context "when the ITNH_HTTP_ENGINE is defined" do
|
147
|
+
before do
|
148
|
+
silence_warnings {
|
149
|
+
Object.const_set(:ITNH_HTTP_ENGINE, "Typhoeus")
|
150
|
+
Object.const_set(:Typhoeus, "Typhoeus")
|
151
|
+
}
|
152
|
+
end
|
153
|
+
after do
|
154
|
+
silence_warnings {
|
155
|
+
Object.send(:remove_const, :ITNH_HTTP_ENGINE)
|
156
|
+
Object.send(:remove_const, :Typhoeus)
|
157
|
+
}
|
124
158
|
end
|
125
159
|
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
160
|
+
it "should return the Typhoeus class" do
|
161
|
+
Itrigga::NetHelper.get_engine.should == Itrigga::NetHelper::Typhoeus
|
162
|
+
end
|
163
|
+
|
164
|
+
it "should respect overrides" do
|
165
|
+
Itrigga::NetHelper.get_engine(:http_engine => "RestClient").should == Itrigga::NetHelper::RestClient
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
169
|
+
context "with no Typhoeus defined" do
|
170
|
+
it "should not use Typhoeus even when told to" do
|
171
|
+
Object.send(:remove_const, :Typhoeus) rescue nil #only remove it if its present
|
172
|
+
Itrigga::NetHelper.get_engine(:http_engine => "Typhoeus").should == Itrigga::NetHelper::RestClient # because Typhoeus is not defined (ie not available)
|
173
|
+
|
132
174
|
end
|
133
175
|
end
|
134
176
|
|
177
|
+
it "should use the default engine if given an invalid option" do
|
178
|
+
Itrigga::NetHelper.get_engine(:http_engine => "blart and flange").should == Itrigga::NetHelper::RestClient
|
179
|
+
end
|
180
|
+
|
135
181
|
end
|
136
182
|
|
183
|
+
|
137
184
|
describe "query_string" do
|
138
185
|
it "should return a string" do
|
139
186
|
Itrigga::NetHelper.query_string( 'blart' => 'flange' ).should be_a(String)
|
@@ -172,6 +219,9 @@ describe "Itrigga::NetHelper" do
|
|
172
219
|
end
|
173
220
|
end
|
174
221
|
|
222
|
+
|
223
|
+
|
224
|
+
|
175
225
|
describe "discover_favicon_url" do
|
176
226
|
before(:each) do
|
177
227
|
@url = "http://blart.com"
|
@@ -189,9 +239,6 @@ describe "Itrigga::NetHelper" do
|
|
189
239
|
Itrigga::NetHelper.discover_favicon_url(@url)
|
190
240
|
end
|
191
241
|
|
192
|
-
|
193
|
-
|
194
|
-
|
195
242
|
context "each discovered href" do
|
196
243
|
context "when the get is a success" do
|
197
244
|
before(:each) do
|
@@ -209,6 +256,9 @@ describe "Itrigga::NetHelper" do
|
|
209
256
|
end
|
210
257
|
|
211
258
|
end
|
259
|
+
|
260
|
+
|
261
|
+
|
212
262
|
describe "discover_icon_hrefs" do
|
213
263
|
before(:each) do
|
214
264
|
@html = <<-HTML
|
@@ -252,145 +302,7 @@ describe "Itrigga::NetHelper" do
|
|
252
302
|
|
253
303
|
end
|
254
304
|
|
255
|
-
describe "raw_get" do
|
256
|
-
before(:each) do
|
257
|
-
Itrigga::NetHelper.stub!(:get_with_auth).and_return( 'body' )
|
258
|
-
Itrigga::NetHelper.stub!(:establish_session_if_needed)
|
259
|
-
Itrigga::NetHelper.stub!(:typhoeus_present?).and_return(false)
|
260
|
-
@mock_session = mock("http session")
|
261
|
-
@mock_session.stub!(:request_get).and_return( @mock_response = mock('request_get response') )
|
262
|
-
@mock_response.stub!(:body).and_return('response body')
|
263
|
-
@mock_parsed_url = mock("parsed url")
|
264
|
-
@mock_parsed_url.stub!(:host).and_return("host")
|
265
|
-
@mock_parsed_url.stub!(:path).and_return("path")
|
266
|
-
@mock_parsed_url.stub!(:port).and_return("port")
|
267
|
-
|
268
|
-
@mock_response = mock('response')
|
269
|
-
@mock_response.stub!(:is_a?).with(Net::HTTPRedirection).and_return(false)
|
270
|
-
@mock_response.stub!(:body).and_return('cheese')
|
271
|
-
end
|
272
|
-
|
273
|
-
it "should call establish_session_if_needed with the given opts" do
|
274
|
-
Itrigga::NetHelper.should_receive(:establish_session_if_needed).with(hash_including(:blart=>'flange'))
|
275
|
-
Itrigga::NetHelper.raw_get(:blart=>'flange', :http_session=>@mock_session, :parsed_url=>@mock_parsed_url)
|
276
|
-
end
|
277
|
-
|
278
|
-
context "when given a :username" do
|
279
|
-
it "should call get_with_auth with the given options" do
|
280
|
-
Itrigga::NetHelper.should_receive(:get_with_auth).with(hash_including(:username=>'dave')).and_return(@mock_response)
|
281
|
-
Itrigga::NetHelper.raw_get(:username=>'dave')
|
282
|
-
end
|
283
|
-
|
284
|
-
it "should return the result of get_with_auth" do
|
285
|
-
Itrigga::NetHelper.stub!(:get_with_auth).with(hash_including(:username=>'dave')).and_return(@mock_response)
|
286
|
-
Itrigga::NetHelper.raw_get(:username=>'dave').should == 'cheese'
|
287
|
-
end
|
288
|
-
|
289
|
-
context "when response is a redirection" do
|
290
|
-
before(:each) do
|
291
|
-
@mock_response.stub!(:is_a?).with(Net::HTTPRedirection).and_return(true, false)
|
292
|
-
@mock_response.stub!(:[]).with('location').and_return("http://cheesefish.com")
|
293
|
-
URI.stub!(:parse).with("http://cheesefish.com").and_return(@mock_parsed_url = mock('parsed url'))
|
294
|
-
end
|
295
|
-
|
296
|
-
it "should follow the redirect" do
|
297
|
-
URI.should_receive(:parse).with("http://cheesefish.com").and_return(@mock_parsed_url = mock('parsed url'))
|
298
|
-
Itrigga::NetHelper.should_receive(:get_with_auth).twice.and_return(@mock_response)
|
299
|
-
Itrigga::NetHelper.raw_get(:username=>'dave')
|
300
|
-
end
|
301
|
-
end
|
302
|
-
end
|
303
|
-
|
304
|
-
context "when not given a :username" do
|
305
|
-
it "should call request_get on the http session with the :parsed_url's path and :headers" do
|
306
|
-
@mock_session.should_receive(:request_get).with( 'path', {:donkey=>'dipstick'}).and_return(@mock_response)
|
307
|
-
Itrigga::NetHelper.raw_get( :parsed_url=>@mock_parsed_url, :http_session=>@mock_session, :headers=>{:donkey=>'dipstick'} )
|
308
|
-
end
|
309
|
-
|
310
|
-
it "should return the result of calling body on the request_get's response" do
|
311
|
-
Itrigga::NetHelper.raw_get(:parsed_url=>@mock_parsed_url, :http_session=>@mock_session).should == 'response body'
|
312
|
-
end
|
313
|
-
end
|
314
|
-
|
315
|
-
end
|
316
|
-
|
317
|
-
describe "get_with_auth" do
|
318
|
-
before(:each) do
|
319
|
-
Itrigga::NetHelper.stub!(:establish_session_if_needed)
|
320
|
-
Itrigga::NetHelper.stub!(:typhoeus_present).and_return(false)
|
321
|
-
@mock_get = mock('get')
|
322
|
-
@mock_get.stub!(:basic_auth)
|
323
|
-
Net::HTTP::Get.stub!(:new).and_return(@mock_get)
|
324
|
-
@mock_parsed_url = mock("parsed url")
|
325
|
-
@mock_parsed_url.stub!(:host).and_return("host")
|
326
|
-
@mock_parsed_url.stub!(:path).and_return("path")
|
327
|
-
@mock_parsed_url.stub!(:port).and_return("port")
|
328
|
-
@mock_session = mock("http session")
|
329
|
-
@mock_session.stub!(:request).and_return("request response")
|
330
|
-
end
|
331
|
-
|
332
|
-
it "should call establish_session_if_needed with the given opts" do
|
333
|
-
Itrigga::NetHelper.should_receive(:establish_session_if_needed).with(hash_including(:blart=>'flange'))
|
334
|
-
Itrigga::NetHelper.get_with_auth(:blart=>'flange', :parsed_url=>@mock_parsed_url, :http_session=>@mock_session)
|
335
|
-
end
|
336
|
-
|
337
|
-
it "should create a new Net::HTTP::Get with the path of the :parsed_url" do
|
338
|
-
Net::HTTP::Get.should_receive(:new).with('path').and_return(@mock_get)
|
339
|
-
Itrigga::NetHelper.get_with_auth(:blart=>'flange', :parsed_url=>@mock_parsed_url, :http_session=>@mock_session)
|
340
|
-
end
|
341
|
-
|
342
|
-
it "should call basic_auth on the get, passing :username and :password from the given params" do
|
343
|
-
@mock_get.should_receive(:basic_auth).with( 'username', 'password' )
|
344
|
-
Itrigga::NetHelper.get_with_auth(:username=>'username', :password=>'password', :parsed_url=>@mock_parsed_url, :http_session=>@mock_session)
|
345
|
-
end
|
346
|
-
|
347
|
-
it "should call request on the http_session with the get, and any given :headers" do
|
348
|
-
@mock_session.should_receive(:request).with(@mock_get, {:header1=>'value1'})
|
349
|
-
Itrigga::NetHelper.get_with_auth(:http_session=>@mock_session, :headers=>{:header1=>'value1'}, :parsed_url=>@mock_parsed_url, :http_session=>@mock_session )
|
350
|
-
end
|
351
|
-
|
352
|
-
it "should return the result of the request" do
|
353
|
-
@mock_session.should_receive(:request).with(@mock_get, {:header1=>'value1'}).and_return("cheese")
|
354
|
-
Itrigga::NetHelper.get_with_auth(:http_session=>@mock_session, :headers=>{:header1=>'value1'}, :parsed_url=>@mock_parsed_url, :http_session=>@mock_session ).should == "cheese"
|
355
|
-
end
|
356
|
-
end
|
357
305
|
|
358
|
-
describe "establish_session_if_needed" do
|
359
|
-
before(:each) do
|
360
|
-
@mock_parsed_url = mock("parsed url")
|
361
|
-
@mock_parsed_url.stub!(:host).and_return("host")
|
362
|
-
@mock_parsed_url.stub!(:port).and_return("port")
|
363
|
-
@mock_parsed_url.stub!(:scheme).and_return("scheme")
|
364
|
-
@mock_session = mock('http session')
|
365
|
-
@mock_session.stub!(:use_ssl=)
|
366
|
-
Net::HTTP.stub!(:new).and_return(@mock_session)
|
367
|
-
end
|
368
|
-
|
369
|
-
context "When not given a :parsed_url" do
|
370
|
-
it "should set :parsed_url to URI.parse(:url)" do
|
371
|
-
URI.should_receive(:parse).with("URL").and_return(@mock_parsed_url)
|
372
|
-
Itrigga::NetHelper.establish_session_if_needed(:url=>"URL")
|
373
|
-
end
|
374
|
-
end
|
375
|
-
|
376
|
-
context "When not given a :http_session" do
|
377
|
-
it "should set :http_session to a new Net::HTTP with the parsed_url's host and port" do
|
378
|
-
Net::HTTP.should_receive(:new).with("host", "port").and_return(@mock_session)
|
379
|
-
Itrigga::NetHelper.establish_session_if_needed(:parsed_url=>@mock_parsed_url)
|
380
|
-
end
|
381
|
-
end
|
382
|
-
|
383
|
-
context "when the :parsed_url's scheme is https" do
|
384
|
-
before(:each) do
|
385
|
-
@mock_parsed_url.stub!(:scheme).and_return("https")
|
386
|
-
end
|
387
|
-
|
388
|
-
it "should set use_ssl=true on the http session" do
|
389
|
-
@mock_session.should_receive(:use_ssl=).with(true)
|
390
|
-
Itrigga::NetHelper.establish_session_if_needed(:parsed_url=>@mock_parsed_url)
|
391
|
-
end
|
392
|
-
end
|
393
|
-
end
|
394
306
|
|
395
307
|
describe "shorten_url" do
|
396
308
|
before do
|
@@ -423,6 +335,9 @@ describe "Itrigga::NetHelper" do
|
|
423
335
|
end
|
424
336
|
end
|
425
337
|
|
338
|
+
|
339
|
+
|
340
|
+
|
426
341
|
describe "format_url_shortener_api_url" do
|
427
342
|
before do
|
428
343
|
@raw_url = "http://very_long_url_goes_here.com"
|
@@ -478,8 +393,24 @@ describe "Itrigga::NetHelper" do
|
|
478
393
|
opts = {:target => "display_name", :file => "a_file_name", :target_path => "/path/goes/here/to/file.xml", :host=>@host}
|
479
394
|
Itrigga::NetHelper.should_receive(:'`').with("scp -P123 -i key_file_path a_file_name user@hostname:/path/goes/here/to/file.xml")
|
480
395
|
Itrigga::NetHelper.transfer_file_scp(opts)
|
396
|
+
end
|
397
|
+
end
|
398
|
+
|
399
|
+
|
400
|
+
|
401
|
+
describe "ip_of" do
|
402
|
+
before do
|
403
|
+
IPSocket.stub!(:getaddress).and_return("ip_address")
|
404
|
+
end
|
405
|
+
|
406
|
+
it "should call getaddress" do
|
407
|
+
IPSocket.should_receive(:getaddress).with("server").and_return("ip_address")
|
408
|
+
Itrigga::NetHelper.ip_of("server")
|
481
409
|
end
|
482
410
|
|
411
|
+
it "should return the address" do
|
412
|
+
Itrigga::NetHelper.ip_of("server").should == "ip_address"
|
413
|
+
end
|
483
414
|
end
|
484
415
|
|
485
416
|
end
|