washout_builder 0.10.2 → 0.10.3
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.
- 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
|