savon 2.4.0 → 2.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +3 -0
- data/CHANGELOG.md +10 -2
- data/README.md +3 -19
- data/lib/savon/client.rb +1 -0
- data/lib/savon/operation.rb +1 -1
- data/lib/savon/options.rb +14 -0
- data/lib/savon/response.rb +5 -4
- data/lib/savon/version.rb +1 -1
- data/savon.gemspec +2 -2
- data/spec/fixtures/response/f5.xml +39 -0
- data/spec/integration/centra_spec.rb +72 -0
- data/spec/savon/options_spec.rb +66 -2
- data/spec/savon/response_spec.rb +10 -0
- data/spec/support/adapters.rb +48 -0
- metadata +9 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 50130e634559c3c2470b09405d608fb86887e1d5
|
4
|
+
data.tar.gz: 80f641ad66bf740cd6d90beda49830c544e988b0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4a791ac4059d5372ba758b334d066fd18af294ff42776b3f752e0e3ba0ee880d69ccf8cbeb5e9a7a9ce702d22dc45b20f1f34fc32143cc87fd59ca6af0d65e82
|
7
|
+
data.tar.gz: a81490063101948bee370664696ef1b61192992ef98477959fd04c2b73e0f7b1ffb5794cade623a0c7e483506a772be3c64175396fb17a8986308ff61da1ef55
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,10 +1,18 @@
|
|
1
|
+
# 2.5.0 (2014-05-03)
|
2
|
+
|
3
|
+
* Feature: [#566](https://github.com/savonrb/savon/pull/566) Allow specifying HTTPI adapter per client.
|
4
|
+
|
5
|
+
```ruby
|
6
|
+
curb_client = Savon.client(wsdl: "http://example.com/service.wsdl", adapter: :curb)
|
7
|
+
http_client = Savon.client(wsdl: "http://example.com/service.wsdl", adapter: :httpclient)
|
8
|
+
```
|
9
|
+
|
1
10
|
## 2.4.0 (2014-03-31)
|
2
11
|
|
3
12
|
* Logging is off by default. To enable this behavior, set the :log option to true
|
4
13
|
|
5
14
|
``` ruby
|
6
|
-
client = Savon.client(wsdl: "http://example.com/service.wsdl")
|
7
|
-
client.options[:log] = true
|
15
|
+
client = Savon.client(wsdl: "http://example.com/service.wsdl", log: true)
|
8
16
|
```
|
9
17
|
|
10
18
|
### 2.3.2 (2013-12-09)
|
data/README.md
CHANGED
@@ -25,22 +25,6 @@ or add it to your Gemfile like this:
|
|
25
25
|
gem 'savon', '~> 2.3.0'
|
26
26
|
```
|
27
27
|
|
28
|
-
|
29
|
-
## Maintainer needed
|
30
|
-
|
31
|
-
So I've been maintaining Savon and its dependant projects for the last four years and it's become quite
|
32
|
-
apparent now with my schedule I do not have the time to keep this project going single-handed.
|
33
|
-
|
34
|
-
Luckily there are numerous people helping out from time to time, but maintaining this project is pretty
|
35
|
-
much a full-time job and it keeps me from working on the next major version.
|
36
|
-
|
37
|
-
I'll be able to contribute on a small scale going forward, and will do my best in the meantime to catch
|
38
|
-
up with everything I am behind on.
|
39
|
-
|
40
|
-
If you are interested, please email me at [me at rubiii dot com].
|
41
|
-
I'll do everything I can to help you get started.
|
42
|
-
|
43
|
-
|
44
28
|
## Usage example
|
45
29
|
|
46
30
|
``` ruby
|
@@ -66,16 +50,16 @@ For more examples, you should check out the
|
|
66
50
|
## Give back
|
67
51
|
|
68
52
|
If you're using Savon and you or your company is making money from it, then please consider
|
69
|
-
donating via [Gittip](https://www.gittip.com/
|
53
|
+
donating via [Gittip](https://www.gittip.com/tjarratt/) so that I can continue to improve it.
|
70
54
|
|
71
|
-
[![donate](donate.png)](https://www.gittip.com/
|
55
|
+
[![donate](donate.png)](https://www.gittip.com/tjarratt/)
|
72
56
|
|
73
57
|
|
74
58
|
## Documentation
|
75
59
|
|
76
60
|
Please make sure to [read the documentation](http://savonrb.com/version2/).
|
77
61
|
|
78
|
-
And if you find any problems with it or if you think something's missing,
|
62
|
+
And if you find any problems with it or if you think something's missing,
|
79
63
|
feel free to [help out and improve the documentation](https://github.com/savonrb/savonrb.com).
|
80
64
|
|
81
65
|
Donate icon from the [Noun Project](http://thenounproject.com/noun/donate/#icon-No285).
|
data/lib/savon/client.rb
CHANGED
@@ -57,6 +57,7 @@ module Savon
|
|
57
57
|
@wsdl.endpoint = @globals[:endpoint] if @globals.include? :endpoint
|
58
58
|
@wsdl.namespace = @globals[:namespace] if @globals.include? :namespace
|
59
59
|
@wsdl.servicename = @globals[:servicename] if @globals.include? :servicename
|
60
|
+
@wsdl.adapter = @globals[:adapter] if @globals.include? :adapter
|
60
61
|
|
61
62
|
@wsdl.request = WSDLRequest.new(@globals).build
|
62
63
|
end
|
data/lib/savon/operation.rb
CHANGED
data/lib/savon/options.rb
CHANGED
@@ -54,7 +54,9 @@ module Savon
|
|
54
54
|
:raise_errors => true,
|
55
55
|
:strip_namespaces => true,
|
56
56
|
:convert_response_tags_to => lambda { |tag| tag.snakecase.to_sym},
|
57
|
+
:convert_attributes_to => lambda { |k,v| [k,v] },
|
57
58
|
:multipart => false,
|
59
|
+
:adapter => nil,
|
58
60
|
}
|
59
61
|
|
60
62
|
options = defaults.merge(options)
|
@@ -253,10 +255,22 @@ module Savon
|
|
253
255
|
@options[:convert_response_tags_to] = block || converter
|
254
256
|
end
|
255
257
|
|
258
|
+
# Tell Nori how to convert XML attributes on tags from the SOAP response into Hash keys.
|
259
|
+
# Accepts a lambda or a block which receives an XML tag and returns a Hash key.
|
260
|
+
# Defaults to doing nothing
|
261
|
+
def convert_attributes_to(converter = nil, &block)
|
262
|
+
@options[:convert_attributes_to] = block || converter
|
263
|
+
end
|
264
|
+
|
256
265
|
# Instruct Savon to create a multipart response if available.
|
257
266
|
def multipart(multipart)
|
258
267
|
@options[:multipart] = multipart
|
259
268
|
end
|
269
|
+
|
270
|
+
# Instruct Savon what HTTPI adapter it should use instead of default
|
271
|
+
def adapter(adapter)
|
272
|
+
@options[:adapter] = adapter
|
273
|
+
end
|
260
274
|
end
|
261
275
|
|
262
276
|
class LocalOptions < Options
|
data/lib/savon/response.rb
CHANGED
@@ -98,10 +98,11 @@ module Savon
|
|
98
98
|
return @nori if @nori
|
99
99
|
|
100
100
|
nori_options = {
|
101
|
-
:strip_namespaces
|
102
|
-
:convert_tags_to
|
103
|
-
:
|
104
|
-
:
|
101
|
+
:strip_namespaces => @globals[:strip_namespaces],
|
102
|
+
:convert_tags_to => @globals[:convert_response_tags_to],
|
103
|
+
:convert_attributes_to => @globals[:convert_attributes_to],
|
104
|
+
:advanced_typecasting => @locals[:advanced_typecasting],
|
105
|
+
:parser => @locals[:response_parser]
|
105
106
|
}
|
106
107
|
|
107
108
|
non_nil_nori_options = nori_options.reject { |_, value| value.nil? }
|
data/lib/savon/version.rb
CHANGED
data/savon.gemspec
CHANGED
@@ -16,9 +16,9 @@ Gem::Specification.new do |s|
|
|
16
16
|
s.rubyforge_project = s.name
|
17
17
|
s.license = 'MIT'
|
18
18
|
|
19
|
-
s.add_dependency "nori", "~> 2.
|
19
|
+
s.add_dependency "nori", "~> 2.4.0"
|
20
20
|
s.add_dependency "httpi", "~> 2.1.0"
|
21
|
-
s.add_dependency "wasabi", "~> 3.
|
21
|
+
s.add_dependency "wasabi", "~> 3.3.0"
|
22
22
|
s.add_dependency "akami", "~> 1.2.0"
|
23
23
|
s.add_dependency "gyoku", "~> 1.1.0"
|
24
24
|
|
@@ -0,0 +1,39 @@
|
|
1
|
+
<E:Envelope
|
2
|
+
xmlns:E="http://schemas.xmlsoap.org/soap/envelope/"
|
3
|
+
xmlns:A="http://schemas.xmlsoap.org/soap/encoding/"
|
4
|
+
xmlns:s="http://www.w3.org/2001/XMLSchema-instance"
|
5
|
+
xmlns:y="http://www.w3.org/2001/XMLSchema"
|
6
|
+
xmlns:iControl="urn:iControl"
|
7
|
+
E:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
|
8
|
+
<E:Body>
|
9
|
+
<m:get_agent_listen_addressResponse
|
10
|
+
xmlns:m="urn:iControl:Management/SNMPConfiguration">
|
11
|
+
<return
|
12
|
+
s:type="A:Array"
|
13
|
+
A:arrayType="iControl:Management.SNMPConfiguration.AgentListenAddressPort[2]">
|
14
|
+
<item>
|
15
|
+
<transport
|
16
|
+
s:type="iControl:Management.SNMPConfiguration.TransportType">TRANSPORT_TCP6</transport>
|
17
|
+
<ipport
|
18
|
+
s:type="iControl:Common.IPPortDefinition">
|
19
|
+
<address
|
20
|
+
s:type="y:string"></address>
|
21
|
+
<port
|
22
|
+
s:type="y:long">161</port>
|
23
|
+
</ipport>
|
24
|
+
</item>
|
25
|
+
<item>
|
26
|
+
<transport
|
27
|
+
s:type="iControl:Management.SNMPConfiguration.TransportType">TRANSPORT_UDP6</transport>
|
28
|
+
<ipport
|
29
|
+
s:type="iControl:Common.IPPortDefinition">
|
30
|
+
<address
|
31
|
+
s:type="y:string"></address>
|
32
|
+
<port
|
33
|
+
s:type="y:long">161</port>
|
34
|
+
</ipport>
|
35
|
+
</item>
|
36
|
+
</return>
|
37
|
+
</m:get_agent_listen_addressResponse>
|
38
|
+
</E:Body>
|
39
|
+
</E:Envelope>
|
@@ -0,0 +1,72 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module LogInterceptor
|
4
|
+
@@intercepted_request = ""
|
5
|
+
def self.debug(message)
|
6
|
+
# save only the first XMLly message
|
7
|
+
if message.include? "xml version"
|
8
|
+
@@intercepted_request = message if @@intercepted_request == ""
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.info(message)
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.get_intercepted_request
|
16
|
+
@@intercepted_request
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.reset_intercepted_request
|
20
|
+
@@intercepted_request = ""
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe 'Correct translation of attributes to XML' do
|
25
|
+
it "new :@attr syntax: correctly maps a Ruby Hash to XML attributes" do
|
26
|
+
LogInterceptor.reset_intercepted_request
|
27
|
+
|
28
|
+
client = Savon.client(
|
29
|
+
:wsdl => "http://mt205.sabameeting.com/CWS/CWS.asmx?WSDL",
|
30
|
+
:logger => LogInterceptor
|
31
|
+
)
|
32
|
+
|
33
|
+
response = nil
|
34
|
+
begin
|
35
|
+
response = call_and_fail_gracefully(client, :add_new_user, :message => { :user => { :@userID => "test" } })
|
36
|
+
rescue
|
37
|
+
end
|
38
|
+
|
39
|
+
xml_doc = Nokogiri::XML(LogInterceptor.get_intercepted_request)
|
40
|
+
xml_doc.remove_namespaces!
|
41
|
+
|
42
|
+
attributes_element_not_present = xml_doc.xpath("//AddNewUser/attributes").blank?
|
43
|
+
|
44
|
+
puts "new syntax: attributes element not present: " + attributes_element_not_present.to_s
|
45
|
+
|
46
|
+
expect(attributes_element_not_present).to eq true
|
47
|
+
end
|
48
|
+
|
49
|
+
it "old :attributes! syntax: correctly maps a Ruby Hash to XML attributes" do
|
50
|
+
LogInterceptor.reset_intercepted_request
|
51
|
+
|
52
|
+
client = Savon.client(
|
53
|
+
:wsdl => "http://mt205.sabameeting.com/CWS/CWS.asmx?WSDL",
|
54
|
+
:logger => LogInterceptor
|
55
|
+
)
|
56
|
+
|
57
|
+
response = nil
|
58
|
+
begin
|
59
|
+
response = call_and_fail_gracefully(client, :add_new_user, :message => { :user => {}, :attributes! => { :user => { :userID => "test" } } })
|
60
|
+
rescue
|
61
|
+
end
|
62
|
+
|
63
|
+
xml_doc = Nokogiri::XML(LogInterceptor.get_intercepted_request)
|
64
|
+
xml_doc.remove_namespaces!
|
65
|
+
|
66
|
+
attributes_element_not_present = xml_doc.xpath("//AddNewUser/attributes").blank?
|
67
|
+
|
68
|
+
puts "new syntax: attributes element not present: " + attributes_element_not_present.to_s
|
69
|
+
|
70
|
+
expect(attributes_element_not_present).to eq true
|
71
|
+
end
|
72
|
+
end
|
data/spec/savon/options_spec.rb
CHANGED
@@ -84,7 +84,9 @@ describe "Options" do
|
|
84
84
|
client = new_client(:endpoint => non_routable_ip, :open_timeout => 0.1)
|
85
85
|
|
86
86
|
expect { client.call(:authenticate) }.to raise_error { |error|
|
87
|
-
|
87
|
+
host_unreachable = error.kind_of? Errno::EHOSTUNREACH
|
88
|
+
net_unreachable = error.kind_of? Errno::ENETUNREACH
|
89
|
+
if host_unreachable || net_unreachable
|
88
90
|
warn "Warning: looks like your network may be down?!\n" +
|
89
91
|
"-> skipping spec at #{__FILE__}:#{__LINE__}"
|
90
92
|
else
|
@@ -495,7 +497,7 @@ describe "Options" do
|
|
495
497
|
expect(request).to include("<wsse:Username>lea</wsse:Username>")
|
496
498
|
|
497
499
|
# the nonce node
|
498
|
-
expect(request).to match(/<wsse:Nonce
|
500
|
+
expect(request).to match(/<wsse:Nonce.*>.+\n<\/wsse:Nonce>/)
|
499
501
|
|
500
502
|
# the created node with a timestamp
|
501
503
|
expect(request).to match(/<wsu:Created>\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.*<\/wsu:Created>/)
|
@@ -590,6 +592,68 @@ describe "Options" do
|
|
590
592
|
end
|
591
593
|
end
|
592
594
|
|
595
|
+
context "global :convert_attributes_to" do
|
596
|
+
it "changes how XML tag attributes from the SOAP response are translated into Hash keys" do
|
597
|
+
client = new_client(:endpoint => @server.url(:repeat), :convert_attributes_to => lambda {|k,v| [k,v]})
|
598
|
+
response = client.call(:authenticate, :xml => Fixture.response(:f5))
|
599
|
+
expect(response.body[:get_agent_listen_address_response][:return][:item].first[:ipport][:address]).to eq({:"@s:type"=>"y:string"})
|
600
|
+
end
|
601
|
+
|
602
|
+
it "strips the attributes if an appropriate lambda is set" do
|
603
|
+
client = new_client(:endpoint => @server.url(:repeat), :convert_attributes_to => lambda {|k,v| []})
|
604
|
+
response = client.call(:authenticate, :xml => Fixture.response(:f5))
|
605
|
+
expect(response.body[:get_agent_listen_address_response][:return][:item].first[:ipport][:address]).to eq(nil)
|
606
|
+
end
|
607
|
+
|
608
|
+
it "accepts a block in the block-based interface" do
|
609
|
+
client = Savon.client do |globals|
|
610
|
+
globals.log false
|
611
|
+
globals.wsdl Fixture.wsdl(:authentication)
|
612
|
+
globals.endpoint @server.url(:repeat)
|
613
|
+
globals.convert_attributes_to {|k,v| [k,v]}
|
614
|
+
end
|
615
|
+
|
616
|
+
response = client.call(:authenticate) do |locals|
|
617
|
+
locals.xml Fixture.response(:f5)
|
618
|
+
end
|
619
|
+
|
620
|
+
expect(response.body[:get_agent_listen_address_response][:return][:item].first[:ipport][:address]).to eq({:"@s:type"=>"y:string"})
|
621
|
+
end
|
622
|
+
end
|
623
|
+
|
624
|
+
context 'global: :adapter' do
|
625
|
+
it 'passes option to Wasabi initializer for WSDL fetching' do
|
626
|
+
## I want to use there something similar to the next mock expectation, but I can't
|
627
|
+
## as due to how Savon sets up Wasabi::Document and Wasabi::Document initialize itself
|
628
|
+
## adapter= method is called first time with nil and second time with adapter. [Envek, 2014-05-03]
|
629
|
+
# Wasabi::Document.any_instance.expects(:adapter=).with(:fake_adapter_for_test)
|
630
|
+
client = Savon.client(
|
631
|
+
:log => false,
|
632
|
+
:wsdl => @server.url(:authentication),
|
633
|
+
:adapter => :fake_adapter_for_test,
|
634
|
+
)
|
635
|
+
operations = client.operations
|
636
|
+
expect(operations).to eq([:authenticate])
|
637
|
+
expect(FakeAdapterForTest.class_variable_get(:@@requests).size).to eq(1)
|
638
|
+
expect(FakeAdapterForTest.class_variable_get(:@@requests).first.url).to eq(URI.parse(@server.url(:authentication)))
|
639
|
+
expect(FakeAdapterForTest.class_variable_get(:@@methods)).to eq([:get])
|
640
|
+
end
|
641
|
+
|
642
|
+
it 'instructs HTTPI to use provided adapter for performing SOAP requests' do
|
643
|
+
client = new_client_without_wsdl(
|
644
|
+
:endpoint => @server.url(:repeat),
|
645
|
+
:namespace => "http://v1.example.com",
|
646
|
+
:adapter => :adapter_for_test,
|
647
|
+
)
|
648
|
+
response = client.call(:authenticate)
|
649
|
+
expect(response.http.body).to include('xmlns:wsdl="http://v1.example.com"')
|
650
|
+
expect(response.http.body).to include('<wsdl:authenticate>')
|
651
|
+
expect(AdapterForTest.class_variable_get(:@@requests).size).to eq(1)
|
652
|
+
expect(AdapterForTest.class_variable_get(:@@requests).first.url).to eq(URI.parse(@server.url(:repeat)))
|
653
|
+
expect(AdapterForTest.class_variable_get(:@@methods)).to eq([:post])
|
654
|
+
end
|
655
|
+
end
|
656
|
+
|
593
657
|
context "global and request :soap_header" do
|
594
658
|
it "merges the headers if both were provided as Hashes" do
|
595
659
|
global_soap_header = {
|
data/spec/savon/response_spec.rb
CHANGED
@@ -118,6 +118,16 @@ describe Savon::Response do
|
|
118
118
|
expect(header.keys).to include('SESSIONNUMBER')
|
119
119
|
end
|
120
120
|
|
121
|
+
it 'respects the global :convert_attributes_to option' do
|
122
|
+
globals[:convert_attributes_to] = lambda { |k,v| [] }
|
123
|
+
|
124
|
+
response_with_header = soap_response(:body => Fixture.response(:header))
|
125
|
+
header = response_with_header.header
|
126
|
+
|
127
|
+
expect(header).to be_a(Hash)
|
128
|
+
expect(header.keys).to include(:session_number)
|
129
|
+
end
|
130
|
+
|
121
131
|
it "should throw an exception when the response header isn't parsable" do
|
122
132
|
lambda { invalid_soap_response.header }.should raise_error Savon::InvalidResponseError
|
123
133
|
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'httpi/adapter/httpclient'
|
2
|
+
|
3
|
+
# Proxy adapter. Records all requests and passes them to HTTPClient
|
4
|
+
class AdapterForTest < HTTPI::Adapter::Base
|
5
|
+
|
6
|
+
register :adapter_for_test
|
7
|
+
|
8
|
+
def initialize(request)
|
9
|
+
@@requests ||= []
|
10
|
+
@@requests.push request
|
11
|
+
@request = request
|
12
|
+
@worker = HTTPI::Adapter::HTTPClient.new(request)
|
13
|
+
end
|
14
|
+
|
15
|
+
def client
|
16
|
+
@worker.client
|
17
|
+
end
|
18
|
+
|
19
|
+
def request(method)
|
20
|
+
@@methods ||= []
|
21
|
+
@@methods.push method
|
22
|
+
@worker.request(method)
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
# Fake adapter with request recording.
|
28
|
+
# Takes path from url and returns fixture WSDL with that name.
|
29
|
+
class FakeAdapterForTest < HTTPI::Adapter::Base
|
30
|
+
|
31
|
+
register :fake_adapter_for_test
|
32
|
+
|
33
|
+
def initialize(request)
|
34
|
+
@@requests ||= []
|
35
|
+
@@requests.push request
|
36
|
+
@request = request
|
37
|
+
end
|
38
|
+
|
39
|
+
attr_reader :client
|
40
|
+
|
41
|
+
def request(method)
|
42
|
+
@@methods ||= []
|
43
|
+
@@methods.push method
|
44
|
+
target = @request.url.path.to_sym
|
45
|
+
HTTPI::Response.new(200, {}, Fixture.wsdl(target))
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: savon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Harrington
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-04
|
11
|
+
date: 2014-05-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nori
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ~>
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 2.
|
19
|
+
version: 2.4.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 2.
|
26
|
+
version: 2.4.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: httpi
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - ~>
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 3.
|
47
|
+
version: 3.3.0
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 3.
|
54
|
+
version: 3.3.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: akami
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -233,6 +233,7 @@ files:
|
|
233
233
|
- spec/fixtures/gzip/message.gz
|
234
234
|
- spec/fixtures/response/another_soap_fault.xml
|
235
235
|
- spec/fixtures/response/authentication.xml
|
236
|
+
- spec/fixtures/response/f5.xml
|
236
237
|
- spec/fixtures/response/header.xml
|
237
238
|
- spec/fixtures/response/list.xml
|
238
239
|
- spec/fixtures/response/multi_ref.xml
|
@@ -254,6 +255,7 @@ files:
|
|
254
255
|
- spec/fixtures/wsdl/team_software.xml
|
255
256
|
- spec/fixtures/wsdl/vies.xml
|
256
257
|
- spec/fixtures/wsdl/wasmuth.xml
|
258
|
+
- spec/integration/centra_spec.rb
|
257
259
|
- spec/integration/email_example_spec.rb
|
258
260
|
- spec/integration/random_quote_spec.rb
|
259
261
|
- spec/integration/ratp_example_spec.rb
|
@@ -278,6 +280,7 @@ files:
|
|
278
280
|
- spec/savon/response_spec.rb
|
279
281
|
- spec/savon/soap_fault_spec.rb
|
280
282
|
- spec/spec_helper.rb
|
283
|
+
- spec/support/adapters.rb
|
281
284
|
- spec/support/endpoint.rb
|
282
285
|
- spec/support/fixture.rb
|
283
286
|
- spec/support/integration.rb
|