itrigga-net_helper 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|