washout_builder 0.10.2 → 0.10.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/lib/washout_builder.rb +1 -1
- data/lib/washout_builder/version.rb +1 -1
- data/spec/lib/washout_builder_spec.rb +92 -56
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NGMwZWQyMDJkY2E1OTU1MzBhOGVhY2YyMDE4NTc3ZWUyM2MwODA2NQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MjE4YjQyNjI5NjIwZWMzMjI5YmQyNGEwNGUwMWFlOTI0ZGJjM2I2ZA==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NDhlODA4MzAzYzU4YmE0NDE0YWYyNDA5NmYyNjkzNjE4NWViNGIzZGJlMmI1
|
10
|
+
ODQyN2ZjZDc0MTU4MGUxZTgzMmYxYWM5YTc0OGE5YjFlODRmYjgxMWIxMTAz
|
11
|
+
MWFlZWI0ZGM0ZjZjZTg2ZDE0ZmQ4MmRjOWU1OGFlN2ZlODQwNWI=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
N2RkMjg5MGYxODQxZWI2NDRlYTM3ZWY4NmI0M2ZkYmVlYjM3YjEzMDgzMjIy
|
14
|
+
YWQ3OGYzYTZiOGE0NDNmMzAyNzBhMjQ3ZjA4YzZmNWIwNzUwNTJkNzU1MWEw
|
15
|
+
ODU5OGQxYmQwMTNkY2FjYjJiNWM2YzZiMDkwYTgxMWYxYzY0M2Q=
|
data/lib/washout_builder.rb
CHANGED
@@ -30,7 +30,7 @@ end
|
|
30
30
|
Virtus::InstanceMethods::Constructor.class_eval do
|
31
31
|
alias_method :original_initialize,:initialize
|
32
32
|
def initialize(attributes = nil)
|
33
|
-
if self.class.ancestors.include?(WashOut::SOAPError) || self.is_a?(WashOut::SOAPError)
|
33
|
+
if self.class.ancestors.include?(WashOut::SOAPError) || self.is_a?(WashOut::SOAPError) || self.class.ancestors.include?(SOAPError) ||self.is_a?(SOAPError)
|
34
34
|
attributes = {:message => attributes} unless attributes.is_a?(Hash)
|
35
35
|
end
|
36
36
|
original_initialize(attributes)
|
@@ -5,9 +5,9 @@ require 'spec_helper'
|
|
5
5
|
describe WashoutBuilder do
|
6
6
|
|
7
7
|
before(:each) do
|
8
|
-
|
9
|
-
|
10
|
-
|
8
|
+
WashOut::Rails::Engine.config.wash_out[:wsdl_style] = 'rpc'
|
9
|
+
WashOut::Rails::Engine.config.wash_out[:parser] = :nokogiri
|
10
|
+
WashOut::Rails::Engine.config.wash_out[:catch_xml_errors] = true
|
11
11
|
end
|
12
12
|
|
13
13
|
let :nori do
|
@@ -22,16 +22,16 @@ describe WashoutBuilder do
|
|
22
22
|
message = {:value => message} unless message.is_a?(Hash)
|
23
23
|
|
24
24
|
savon_client = Savon::Client.new(:log => false, :wsdl => 'http://app/api/wsdl', &block)
|
25
|
-
|
26
|
-
|
25
|
+
result = savon_client.call(method, :message => message)
|
26
|
+
result.respond_to?(:to_hash) ? result.to_hash : result
|
27
27
|
end
|
28
28
|
|
29
29
|
def savon!(method, message={}, &block)
|
30
30
|
message = {:value => message} unless message.is_a?(Hash)
|
31
31
|
|
32
32
|
savon_client = Savon::Client.new(:log => true, :wsdl => 'http://app/api/wsdl', &block)
|
33
|
-
|
34
|
-
|
33
|
+
result = savon_client.call(method, :message => message)
|
34
|
+
result.respond_to?(:to_hash) ? result.to_hash : result
|
35
35
|
end
|
36
36
|
|
37
37
|
describe "Module" do
|
@@ -59,12 +59,12 @@ describe WashoutBuilder do
|
|
59
59
|
|
60
60
|
soap_action "getArea", :args => {
|
61
61
|
:circle => [{
|
62
|
-
|
63
|
-
|
64
|
-
|
62
|
+
:center => { :x => [:integer], :y => :integer },
|
63
|
+
:radius => :double
|
64
|
+
}]},
|
65
65
|
:return => { :area => :double }
|
66
66
|
soap_action "rocky", :args => { :circle1 => { :x => :integer } },
|
67
|
-
|
67
|
+
:return => { :circle2 => { :y => :integer } }
|
68
68
|
end
|
69
69
|
|
70
70
|
HTTPI.get("http://app/api/wsdl").body
|
@@ -192,20 +192,20 @@ describe WashoutBuilder do
|
|
192
192
|
it "accept nested structures" do
|
193
193
|
mock_controller do
|
194
194
|
soap_action "getArea", :args => { :circle => { :center => { :x => :integer,
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
195
|
+
:y => :integer },
|
196
|
+
:radius => :double } },
|
197
|
+
:return => { :area => :double,
|
198
|
+
:distance_from_o => :double },
|
199
|
+
:to => :get_area
|
200
200
|
def get_area
|
201
201
|
circle = params[:circle]
|
202
202
|
render :soap => { :area => Math::PI * circle[:radius] ** 2,
|
203
|
-
|
203
|
+
:distance_from_o => Math.sqrt(circle[:center][:x] ** 2 + circle[:center][:y] ** 2) }
|
204
204
|
end
|
205
205
|
end
|
206
206
|
|
207
207
|
message = { :circle => { :center => { :x => 3, :y => 4 },
|
208
|
-
|
208
|
+
:radius => 5 } }
|
209
209
|
|
210
210
|
savon(:get_area, message)[:get_area_response].
|
211
211
|
should == ({ :area => (Math::PI * 25).to_s, :distance_from_o => (5.0).to_s })
|
@@ -214,10 +214,10 @@ describe WashoutBuilder do
|
|
214
214
|
it "accept arrays" do
|
215
215
|
mock_controller do
|
216
216
|
soap_action "rumba",
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
217
|
+
:args => {
|
218
|
+
:rumbas => [:integer]
|
219
|
+
},
|
220
|
+
:return => nil
|
221
221
|
def rumba
|
222
222
|
params.should == {"rumbas" => [1, 2, 3]}
|
223
223
|
render :soap => nil
|
@@ -230,10 +230,10 @@ describe WashoutBuilder do
|
|
230
230
|
it "accept empty arrays" do
|
231
231
|
mock_controller do
|
232
232
|
soap_action "rumba",
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
233
|
+
:args => {
|
234
|
+
:my_array => [:integer]
|
235
|
+
},
|
236
|
+
:return => nil
|
237
237
|
def rumba
|
238
238
|
params.should == {}
|
239
239
|
render :soap => nil
|
@@ -245,10 +245,10 @@ describe WashoutBuilder do
|
|
245
245
|
it "accept nested empty arrays" do
|
246
246
|
mock_controller do
|
247
247
|
soap_action "rumba",
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
248
|
+
:args => {
|
249
|
+
:nested => {:my_array => [:integer] }
|
250
|
+
},
|
251
|
+
:return => nil
|
252
252
|
def rumba
|
253
253
|
params.should == {"nested" => {}}
|
254
254
|
render :soap => nil
|
@@ -260,13 +260,13 @@ describe WashoutBuilder do
|
|
260
260
|
it "accept nested structures inside arrays" do
|
261
261
|
mock_controller do
|
262
262
|
soap_action "rumba",
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
263
|
+
:args => {
|
264
|
+
:rumbas => [ {
|
265
|
+
:zombies => :string,
|
266
|
+
:puppies => :string
|
267
|
+
} ]
|
268
|
+
},
|
269
|
+
:return => nil
|
270
270
|
def rumba
|
271
271
|
params.should == {
|
272
272
|
"rumbas" => [
|
@@ -287,11 +287,11 @@ describe WashoutBuilder do
|
|
287
287
|
it "respond with nested structures" do
|
288
288
|
mock_controller do
|
289
289
|
soap_action "gogogo",
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
290
|
+
:args => nil,
|
291
|
+
:return => {
|
292
|
+
:zoo => :string,
|
293
|
+
:boo => { :moo => :string, :doo => :string }
|
294
|
+
}
|
295
295
|
def gogogo
|
296
296
|
render :soap => {
|
297
297
|
:zoo => 'zoo',
|
@@ -307,8 +307,8 @@ describe WashoutBuilder do
|
|
307
307
|
it "respond with arrays" do
|
308
308
|
mock_controller do
|
309
309
|
soap_action "rumba",
|
310
|
-
|
311
|
-
|
310
|
+
:args => nil,
|
311
|
+
:return => [:integer]
|
312
312
|
def rumba
|
313
313
|
render :soap => [1, 2, 3]
|
314
314
|
end
|
@@ -322,15 +322,15 @@ describe WashoutBuilder do
|
|
322
322
|
soap_action "rumba",
|
323
323
|
:args => nil,
|
324
324
|
:return => {
|
325
|
-
|
326
|
-
|
325
|
+
:rumbas => [{:zombies => :string, :puppies => :string}]
|
326
|
+
}
|
327
327
|
def rumba
|
328
328
|
render :soap =>
|
329
329
|
{:rumbas => [
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
330
|
+
{:zombies => "suck1", :puppies => "rock1" },
|
331
|
+
{:zombies => "suck2", :puppies => "rock2" }
|
332
|
+
]
|
333
|
+
}
|
334
334
|
end
|
335
335
|
end
|
336
336
|
|
@@ -377,7 +377,7 @@ describe WashoutBuilder do
|
|
377
377
|
it "respond with simple definition" do
|
378
378
|
mock_controller do
|
379
379
|
soap_action "rocknroll",
|
380
|
-
|
380
|
+
:args => nil, :return => { :my_value => [:integer] }
|
381
381
|
def rocknroll
|
382
382
|
render :soap => {}
|
383
383
|
end
|
@@ -389,7 +389,7 @@ describe WashoutBuilder do
|
|
389
389
|
it "respond with complext definition" do
|
390
390
|
mock_controller do
|
391
391
|
soap_action "rocknroll",
|
392
|
-
|
392
|
+
:args => nil, :return => { :my_value => [{ :value => :integer }] }
|
393
393
|
def rocknroll
|
394
394
|
render :soap => {}
|
395
395
|
end
|
@@ -401,7 +401,7 @@ describe WashoutBuilder do
|
|
401
401
|
it "respond with nested simple definition" do
|
402
402
|
mock_controller do
|
403
403
|
soap_action "rocknroll",
|
404
|
-
|
404
|
+
:args => nil, :return => { :my_value => { :my_array => [{ :value => :integer }] } }
|
405
405
|
def rocknroll
|
406
406
|
render :soap => {}
|
407
407
|
end
|
@@ -414,7 +414,7 @@ describe WashoutBuilder do
|
|
414
414
|
it "handles incomplete array response" do
|
415
415
|
mock_controller do
|
416
416
|
soap_action "rocknroll",
|
417
|
-
|
417
|
+
:args => nil, :return => { :my_value => [{ :value => :string }] }
|
418
418
|
def rocknroll
|
419
419
|
render :soap => { :my_value => [nil] }
|
420
420
|
end
|
@@ -566,6 +566,42 @@ describe WashoutBuilder do
|
|
566
566
|
/SOAP response .*oops.*String.*telephone_booths.*Array/
|
567
567
|
)
|
568
568
|
end
|
569
|
+
|
570
|
+
context "custom exceptions" do
|
571
|
+
let(:error_message) { "some message" }
|
572
|
+
let(:error_code) { 1001 }
|
573
|
+
let(:soap_exception) { SOAPError.new(error_message,error_code) }
|
574
|
+
|
575
|
+
before(:each) do
|
576
|
+
# Savon::Response.raise_errors = false
|
577
|
+
end
|
578
|
+
|
579
|
+
it "raises a savon soapfault" do
|
580
|
+
mock_controller do
|
581
|
+
soap_action 'bad', :args => nil, :return => nil
|
582
|
+
|
583
|
+
def bad
|
584
|
+
raise SOAPError.new("some message", 1001)
|
585
|
+
end
|
586
|
+
end
|
587
|
+
|
588
|
+
lambda { savon(:bad) }.should raise_exception{ |error|
|
589
|
+
error_hash = error.to_hash
|
590
|
+
error_hash[:fault][:faultcode].should eq(error_code.to_s)
|
591
|
+
error_hash[:fault][:faultstring].should eq(error_message)
|
592
|
+
expect(error).to be_a(Savon::SOAPFault)
|
593
|
+
}
|
594
|
+
|
595
|
+
end
|
596
|
+
|
597
|
+
it "intanstiates correctly a custom exception" do
|
598
|
+
soap_exception.attributes.should eq({:code=>error_code, :message=>error_message, :backtrace=>nil})
|
599
|
+
end
|
600
|
+
end
|
601
|
+
|
602
|
+
|
603
|
+
|
604
|
+
|
569
605
|
end
|
570
606
|
|
571
607
|
context "deprecates" do
|
@@ -576,8 +612,8 @@ describe WashoutBuilder do
|
|
576
612
|
mock_controller do
|
577
613
|
lambda {
|
578
614
|
soap_action "rumba",
|
579
|
-
|
580
|
-
|
615
|
+
:args => :integer,
|
616
|
+
:return => []
|
581
617
|
}.should raise_runtime_exception
|
582
618
|
def rumba
|
583
619
|
render :soap => nil
|