savon 0.9.9 → 0.9.10
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/.travis.yml +1 -0
- data/.yardopts +1 -0
- data/CHANGELOG.md +30 -0
- data/Rakefile +14 -1
- data/lib/savon.rb +13 -5
- data/lib/savon/client.rb +7 -2
- data/lib/savon/config.rb +13 -89
- data/lib/savon/log_message.rb +47 -0
- data/lib/savon/logger.rb +37 -0
- data/lib/savon/model.rb +6 -1
- data/lib/savon/soap/request.rb +16 -13
- data/lib/savon/soap/response.rb +4 -3
- data/lib/savon/soap/xml.rb +17 -10
- data/lib/savon/version.rb +1 -1
- data/savon.gemspec +4 -7
- data/spec/integration/stockquote_spec.rb +14 -0
- data/spec/savon/config_spec.rb +20 -0
- data/spec/savon/logger_spec.rb +51 -0
- data/spec/savon/model_spec.rb +11 -2
- data/spec/savon/savon_spec.rb +17 -91
- data/spec/savon/soap/request_spec.rb +8 -16
- data/spec/savon/soap/response_spec.rb +14 -32
- data/spec/savon/soap/xml_spec.rb +25 -24
- data/spec/spec_helper.rb +3 -2
- metadata +63 -94
- data/lib/savon/core_ext/object.rb +0 -14
- data/spec/savon/core_ext/object_spec.rb +0 -19
data/lib/savon/version.rb
CHANGED
data/savon.gemspec
CHANGED
@@ -23,13 +23,10 @@ Gem::Specification.new do |s|
|
|
23
23
|
s.add_dependency "gyoku", ">= 0.4.0"
|
24
24
|
s.add_dependency "nokogiri", ">= 1.4.0"
|
25
25
|
|
26
|
-
s.add_development_dependency "rake", "~> 0.
|
27
|
-
s.add_development_dependency "rspec", "~> 2.
|
28
|
-
s.add_development_dependency "mocha", "~> 0.
|
29
|
-
s.add_development_dependency "timecop", "~> 0.3
|
30
|
-
|
31
|
-
s.add_development_dependency "autotest"
|
32
|
-
s.add_development_dependency "ZenTest", "= 4.5.0"
|
26
|
+
s.add_development_dependency "rake", "~> 0.9"
|
27
|
+
s.add_development_dependency "rspec", "~> 2.10"
|
28
|
+
s.add_development_dependency "mocha", "~> 0.11"
|
29
|
+
s.add_development_dependency "timecop", "~> 0.3"
|
33
30
|
|
34
31
|
s.files = `git ls-files`.split("\n")
|
35
32
|
s.require_path = "lib"
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe "webservicex/stockquote" do
|
4
|
+
|
5
|
+
it "returns the result in a CDATA tag" do
|
6
|
+
client = Savon.client("http://www.webservicex.net/stockquote.asmx?WSDL")
|
7
|
+
response = client.request(:get_quote, :body => { :symbol => "AAPL" })
|
8
|
+
|
9
|
+
cdata = response[:get_quote_response][:get_quote_result]
|
10
|
+
result = Nori.parse(cdata)
|
11
|
+
result[:stock_quotes][:stock][:symbol].should == "AAPL"
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Savon::Config do
|
4
|
+
|
5
|
+
describe "#clone" do
|
6
|
+
subject do
|
7
|
+
config = Savon::Config.new
|
8
|
+
config.logger = Savon::Logger.new
|
9
|
+
config
|
10
|
+
end
|
11
|
+
|
12
|
+
it "clones the logger" do
|
13
|
+
logger = subject.logger
|
14
|
+
clone = subject.clone
|
15
|
+
|
16
|
+
logger.should_not equal(clone.logger)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Savon::Logger do
|
4
|
+
|
5
|
+
let(:logger) { subject }
|
6
|
+
let(:message) { "<?xml version='1.0'?><hello>world</hello>" }
|
7
|
+
let(:pretty_message) { Nokogiri::XML(message) }
|
8
|
+
let(:filtered_message) { Nokogiri::XML("<?xml version='1.0'?><hello>***FILTERED***</hello>") }
|
9
|
+
|
10
|
+
it "logs a given message" do
|
11
|
+
logger.subject.expects(logger.level).with(message)
|
12
|
+
logger.log(message)
|
13
|
+
end
|
14
|
+
|
15
|
+
it "logs a given message (pretty)" do
|
16
|
+
logger.subject.expects(logger.level).with(pretty_message.to_xml(:indent => 2))
|
17
|
+
logger.log(message, :pretty => true)
|
18
|
+
end
|
19
|
+
|
20
|
+
it "logs a given message (filtered)" do
|
21
|
+
logger.subject.expects(logger.level).with(filtered_message.to_s)
|
22
|
+
logger.filter << :hello
|
23
|
+
warn logger.log(message, :filter => true)
|
24
|
+
end
|
25
|
+
|
26
|
+
it "logs a given message (pretty and filtered)" do
|
27
|
+
logger.subject.expects(logger.level).with(filtered_message.to_xml(:indent => 2))
|
28
|
+
logger.filter << :hello
|
29
|
+
warn logger.log(message, :pretty => true, :filter => true)
|
30
|
+
end
|
31
|
+
|
32
|
+
it "defaults to wrap the standard Logger" do
|
33
|
+
logger.subject.should be_a(Logger)
|
34
|
+
end
|
35
|
+
|
36
|
+
it "can be configured to use a different Logger" do
|
37
|
+
MyLogger = Object.new
|
38
|
+
logger.subject = MyLogger
|
39
|
+
logger.subject.should == MyLogger
|
40
|
+
end
|
41
|
+
|
42
|
+
it "defaults to the :debug log level" do
|
43
|
+
logger.level.should == :debug
|
44
|
+
end
|
45
|
+
|
46
|
+
it "can be configured to use a different log level" do
|
47
|
+
logger.level = :info
|
48
|
+
logger.level.should == :info
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
data/spec/savon/model_spec.rb
CHANGED
@@ -13,11 +13,11 @@ describe Savon::Model do
|
|
13
13
|
end
|
14
14
|
|
15
15
|
after do
|
16
|
-
Savon.hooks.reject! :test_hook
|
16
|
+
Savon.config.hooks.reject! :test_hook
|
17
17
|
end
|
18
18
|
|
19
19
|
it "can be used for pre-processing SOAP responses" do
|
20
|
-
Savon.hooks.define(:test_hook, :model_soap_response) do |response|
|
20
|
+
Savon.config.hooks.define(:test_hook, :model_soap_response) do |response|
|
21
21
|
"hello #{response}"
|
22
22
|
end
|
23
23
|
|
@@ -37,6 +37,15 @@ describe Savon::Model do
|
|
37
37
|
|
38
38
|
end
|
39
39
|
|
40
|
+
describe ".config" do
|
41
|
+
|
42
|
+
it "memoizes a clone of the global config" do
|
43
|
+
model.config.should be_a(Savon::Config)
|
44
|
+
model.config.should_not equal(Savon.config)
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
48
|
+
|
40
49
|
describe ".endpoint" do
|
41
50
|
|
42
51
|
it "sets the SOAP endpoint" do
|
data/spec/savon/savon_spec.rb
CHANGED
@@ -2,105 +2,31 @@ require "spec_helper"
|
|
2
2
|
|
3
3
|
describe Savon do
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
example.run
|
9
|
-
Savon.reset_config!
|
10
|
-
Savon.log = false # disable logging
|
11
|
-
end
|
12
|
-
|
13
|
-
describe "log" do
|
14
|
-
it "should default to true" do
|
15
|
-
Savon.log?.should be_true
|
16
|
-
end
|
17
|
-
|
18
|
-
it "should set whether to log HTTP requests" do
|
19
|
-
Savon.configure { |config| config.log = false }
|
20
|
-
Savon.log?.should be_false
|
21
|
-
end
|
22
|
-
|
23
|
-
context "when instructed to filter" do
|
24
|
-
before do
|
25
|
-
Savon.log = true
|
26
|
-
end
|
27
|
-
|
28
|
-
context "and no log filter set" do
|
29
|
-
it "should not filter the message" do
|
30
|
-
Savon.logger.expects(Savon.log_level).with(Fixture.response(:authentication))
|
31
|
-
Savon.log(Fixture.response(:authentication), :filter)
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
context "and multiple log filters" do
|
36
|
-
before do
|
37
|
-
Savon.configure { |config| config.log_filter = ["logType", "logTime"] }
|
38
|
-
end
|
39
|
-
|
40
|
-
it "should filter element values" do
|
41
|
-
filtered_values = /Notes Log|2010-09-21T18:22:01|2010-09-21T18:22:07/
|
42
|
-
|
43
|
-
Savon.logger.expects(Savon.log_level).with do |msg|
|
44
|
-
msg !~ filtered_values &&
|
45
|
-
msg.include?('<ns10:logTime>***FILTERED***</ns10:logTime>') &&
|
46
|
-
msg.include?('<ns10:logType>***FILTERED***</ns10:logType>') &&
|
47
|
-
msg.include?('<ns11:logTime>***FILTERED***</ns11:logTime>') &&
|
48
|
-
msg.include?('<ns11:logType>***FILTERED***</ns11:logType>')
|
49
|
-
end
|
50
|
-
|
51
|
-
Savon.log(Fixture.response(:list), :filter)
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
5
|
+
it "provides a shortcut for creating a new client" do
|
6
|
+
Savon.client("http://example.com").should be_a(Savon::Client)
|
7
|
+
end
|
56
8
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
Savon.configure { |config| config.logger = MyLogger }
|
61
|
-
Savon.logger.should == MyLogger
|
62
|
-
end
|
9
|
+
it "memoizes the global config" do
|
10
|
+
Savon.config.should equal(Savon.config)
|
11
|
+
end
|
63
12
|
|
64
|
-
|
65
|
-
|
66
|
-
|
13
|
+
it "yields the global config to a block" do
|
14
|
+
Savon.configure do |config|
|
15
|
+
config.should equal(Savon.config)
|
67
16
|
end
|
17
|
+
end
|
68
18
|
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
end
|
73
|
-
|
74
|
-
it "should set the log level to use" do
|
75
|
-
Savon.configure { |config| config.log_level = :info }
|
76
|
-
Savon.log_level.should == :info
|
77
|
-
end
|
19
|
+
describe ".config" do
|
20
|
+
it "defaults to a log facade" do
|
21
|
+
Savon.config.logger.should be_a(Savon::Logger)
|
78
22
|
end
|
79
23
|
|
80
|
-
|
81
|
-
|
82
|
-
Savon.raise_errors?.should be_true
|
83
|
-
end
|
84
|
-
|
85
|
-
it "should not raise errors when disabled" do
|
86
|
-
Savon.raise_errors = false
|
87
|
-
Savon.raise_errors?.should be_false
|
88
|
-
end
|
24
|
+
it "defaults to raise errors" do
|
25
|
+
Savon.config.raise_errors.should be_true
|
89
26
|
end
|
90
27
|
|
91
|
-
|
92
|
-
|
93
|
-
Savon.soap_version.should == 1
|
94
|
-
end
|
95
|
-
|
96
|
-
it "should return 2 if set to SOAP 1.2" do
|
97
|
-
Savon.soap_version = 2
|
98
|
-
Savon.soap_version.should == 2
|
99
|
-
end
|
100
|
-
|
101
|
-
it "should raise an ArgumentError in case of an invalid version" do
|
102
|
-
lambda { Savon.soap_version = 3 }.should raise_error(ArgumentError)
|
103
|
-
end
|
28
|
+
it "defaults to SOAP 1.1" do
|
29
|
+
Savon.config.soap_version.should == 1
|
104
30
|
end
|
105
31
|
end
|
106
32
|
|
@@ -1,8 +1,10 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
3
|
describe Savon::SOAP::Request do
|
4
|
-
let(:soap_request) { Savon::SOAP::Request.new
|
5
|
-
let(:
|
4
|
+
let(:soap_request) { Savon::SOAP::Request.new(config, http_request, soap) }
|
5
|
+
let(:http_request) { HTTPI::Request.new }
|
6
|
+
let(:soap) { Savon::SOAP::XML.new config, Endpoint.soap, [nil, :get_user, {}], :id => 1 }
|
7
|
+
let(:config) { Savon::Config.default }
|
6
8
|
|
7
9
|
it "contains the content type for each supported SOAP version" do
|
8
10
|
content_type = Savon::SOAP::Request::ContentType
|
@@ -13,7 +15,7 @@ describe Savon::SOAP::Request do
|
|
13
15
|
describe ".execute" do
|
14
16
|
it "executes a SOAP request and returns the response" do
|
15
17
|
HTTPI.expects(:post).returns(HTTPI::Response.new 200, {}, Fixture.response(:authentication))
|
16
|
-
response = Savon::SOAP::Request.execute
|
18
|
+
response = Savon::SOAP::Request.execute config, http_request, soap
|
17
19
|
response.should be_a(Savon::SOAP::Response)
|
18
20
|
end
|
19
21
|
end
|
@@ -42,11 +44,11 @@ describe Savon::SOAP::Request do
|
|
42
44
|
|
43
45
|
it "sets the Content-Length header for every request" do
|
44
46
|
http = HTTPI::Request.new
|
45
|
-
soap_request = Savon::SOAP::Request.new(http, soap)
|
47
|
+
soap_request = Savon::SOAP::Request.new(config, http, soap)
|
46
48
|
http.headers.should include("Content-Length" => "272")
|
47
49
|
|
48
|
-
soap = Savon::SOAP::XML.new Endpoint.soap, [nil, :create_user, {}], :id => 123
|
49
|
-
soap_request = Savon::SOAP::Request.new(http, soap)
|
50
|
+
soap = Savon::SOAP::XML.new config, Endpoint.soap, [nil, :create_user, {}], :id => 123
|
51
|
+
soap_request = Savon::SOAP::Request.new(config, http, soap)
|
50
52
|
http.headers.should include("Content-Length" => "280")
|
51
53
|
end
|
52
54
|
end
|
@@ -56,16 +58,6 @@ describe Savon::SOAP::Request do
|
|
56
58
|
HTTPI.expects(:post).returns(HTTPI::Response.new 200, {}, Fixture.response(:authentication))
|
57
59
|
soap_request.response.should be_a(Savon::SOAP::Response)
|
58
60
|
end
|
59
|
-
|
60
|
-
it "logs the filtered SOAP request body" do
|
61
|
-
HTTPI.stubs(:post).returns(HTTPI::Response.new 200, {}, "")
|
62
|
-
|
63
|
-
Savon.stubs(:log).times(2)
|
64
|
-
Savon.expects(:log).with(soap.to_xml, :filter)
|
65
|
-
Savon.stubs(:log).times(2)
|
66
|
-
|
67
|
-
soap_request.response
|
68
|
-
end
|
69
61
|
end
|
70
62
|
|
71
63
|
end
|
@@ -2,15 +2,16 @@ require "spec_helper"
|
|
2
2
|
|
3
3
|
describe Savon::SOAP::Response do
|
4
4
|
|
5
|
+
let(:config) { Savon::Config.default }
|
6
|
+
|
5
7
|
describe ".new" do
|
6
8
|
it "should raise a Savon::SOAP::Fault in case of a SOAP fault" do
|
7
9
|
lambda { soap_fault_response }.should raise_error(Savon::SOAP::Fault)
|
8
10
|
end
|
9
11
|
|
10
12
|
it "should not raise a Savon::SOAP::Fault in case the default is turned off" do
|
11
|
-
|
13
|
+
config.raise_errors = false
|
12
14
|
lambda { soap_fault_response }.should_not raise_error(Savon::SOAP::Fault)
|
13
|
-
Savon.raise_errors = true
|
14
15
|
end
|
15
16
|
|
16
17
|
it "should raise a Savon::HTTP::Error in case of an HTTP error" do
|
@@ -18,18 +19,13 @@ describe Savon::SOAP::Response do
|
|
18
19
|
end
|
19
20
|
|
20
21
|
it "should not raise a Savon::HTTP::Error in case the default is turned off" do
|
21
|
-
|
22
|
+
config.raise_errors = false
|
22
23
|
soap_response :code => 500
|
23
|
-
Savon.raise_errors = true
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
27
|
describe "#success?" do
|
28
|
-
|
29
|
-
Savon.raise_errors = false
|
30
|
-
example.run
|
31
|
-
Savon.raise_errors = true
|
32
|
-
end
|
28
|
+
before { config.raise_errors = false }
|
33
29
|
|
34
30
|
it "should return true if the request was successful" do
|
35
31
|
soap_response.should be_a_success
|
@@ -45,11 +41,7 @@ describe Savon::SOAP::Response do
|
|
45
41
|
end
|
46
42
|
|
47
43
|
describe "#soap_fault?" do
|
48
|
-
|
49
|
-
Savon.raise_errors = false
|
50
|
-
example.run
|
51
|
-
Savon.raise_errors = true
|
52
|
-
end
|
44
|
+
before { config.raise_errors = false }
|
53
45
|
|
54
46
|
it "should not return true in case the response seems to be ok" do
|
55
47
|
soap_response.soap_fault?.should be_false
|
@@ -61,11 +53,7 @@ describe Savon::SOAP::Response do
|
|
61
53
|
end
|
62
54
|
|
63
55
|
describe "#soap_fault" do
|
64
|
-
|
65
|
-
Savon.raise_errors = false
|
66
|
-
example.run
|
67
|
-
Savon.raise_errors = true
|
68
|
-
end
|
56
|
+
before { config.raise_errors = false }
|
69
57
|
|
70
58
|
it "should return a Savon::SOAP::Fault" do
|
71
59
|
soap_fault_response.soap_fault.should be_a(Savon::SOAP::Fault)
|
@@ -81,11 +69,7 @@ describe Savon::SOAP::Response do
|
|
81
69
|
end
|
82
70
|
|
83
71
|
describe "#http_error?" do
|
84
|
-
|
85
|
-
Savon.raise_errors = false
|
86
|
-
example.run
|
87
|
-
Savon.raise_errors = true
|
88
|
-
end
|
72
|
+
before { config.raise_errors = false }
|
89
73
|
|
90
74
|
it "should not return true in case the response seems to be ok" do
|
91
75
|
soap_response.http_error?.should_not be_true
|
@@ -97,11 +81,7 @@ describe Savon::SOAP::Response do
|
|
97
81
|
end
|
98
82
|
|
99
83
|
describe "#http_error" do
|
100
|
-
|
101
|
-
Savon.raise_errors = false
|
102
|
-
example.run
|
103
|
-
Savon.raise_errors = true
|
104
|
-
end
|
84
|
+
before { config.raise_errors = false }
|
105
85
|
|
106
86
|
it "should return a Savon::HTTP::Error" do
|
107
87
|
http_error_response.http_error.should be_a(Savon::HTTP::Error)
|
@@ -217,8 +197,9 @@ describe Savon::SOAP::Response do
|
|
217
197
|
def soap_response(options = {})
|
218
198
|
defaults = { :code => 200, :headers => {}, :body => Fixture.response(:authentication) }
|
219
199
|
response = defaults.merge options
|
200
|
+
http_response = HTTPI::Response.new(response[:code], response[:headers], response[:body])
|
220
201
|
|
221
|
-
Savon::SOAP::Response.new
|
202
|
+
Savon::SOAP::Response.new(config, http_response)
|
222
203
|
end
|
223
204
|
|
224
205
|
def soap_fault_response
|
@@ -230,10 +211,11 @@ describe Savon::SOAP::Response do
|
|
230
211
|
end
|
231
212
|
|
232
213
|
def invalid_soap_response(options={})
|
233
|
-
defaults = { :code => 200, :headers => {}, :body => "I'm not SOAP" }
|
214
|
+
defaults = { :code => 200, :headers => {}, :body => "I'm not SOAP" }
|
234
215
|
response = defaults.merge options
|
216
|
+
http_response = HTTPI::Response.new(response[:code], response[:headers], response[:body])
|
235
217
|
|
236
|
-
Savon::SOAP::Response.new
|
218
|
+
Savon::SOAP::Response.new(config, http_response)
|
237
219
|
end
|
238
220
|
|
239
221
|
end
|
data/spec/savon/soap/xml_spec.rb
CHANGED
@@ -1,11 +1,12 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
3
|
describe Savon::SOAP::XML do
|
4
|
-
let(:xml) { Savon::SOAP::XML.new Endpoint.soap, [nil, :authenticate, {}], :id => 1 }
|
4
|
+
let(:xml) { Savon::SOAP::XML.new(config, Endpoint.soap, [nil, :authenticate, {}], :id => 1) }
|
5
|
+
let(:config) { Savon::Config.default }
|
5
6
|
|
6
7
|
describe ".new" do
|
7
8
|
it "should accept an endpoint, an input tag and a SOAP body" do
|
8
|
-
xml = Savon::SOAP::XML.new Endpoint.soap, [nil, :authentication, {}], :id => 1
|
9
|
+
xml = Savon::SOAP::XML.new(config, Endpoint.soap, [nil, :authentication, {}], :id => 1)
|
9
10
|
|
10
11
|
xml.endpoint.should == Endpoint.soap
|
11
12
|
xml.input.should == [nil, :authentication, {}]
|
@@ -33,10 +34,8 @@ describe Savon::SOAP::XML do
|
|
33
34
|
end
|
34
35
|
|
35
36
|
it "should default to the global default" do
|
36
|
-
|
37
|
+
config.soap_version = 2
|
37
38
|
xml.version.should == 2
|
38
|
-
|
39
|
-
reset_soap_version
|
40
39
|
end
|
41
40
|
|
42
41
|
it "should set the SOAP version to use" do
|
@@ -60,7 +59,7 @@ describe Savon::SOAP::XML do
|
|
60
59
|
end
|
61
60
|
|
62
61
|
it "should use the global soap_header if set" do
|
63
|
-
|
62
|
+
config.stubs(:soap_header).returns({ "MySecret" => "abc" })
|
64
63
|
xml.header.should == { "MySecret" => "abc" }
|
65
64
|
end
|
66
65
|
end
|
@@ -76,7 +75,7 @@ describe Savon::SOAP::XML do
|
|
76
75
|
end
|
77
76
|
|
78
77
|
it "should use the global env_namespace if set as the SOAP envelope namespace" do
|
79
|
-
|
78
|
+
config.stubs(:env_namespace).returns(:soapenv)
|
80
79
|
xml.env_namespace.should == :soapenv
|
81
80
|
end
|
82
81
|
end
|
@@ -156,8 +155,6 @@ describe Savon::SOAP::XML do
|
|
156
155
|
end
|
157
156
|
|
158
157
|
describe "#to_xml" do
|
159
|
-
after { reset_soap_version }
|
160
|
-
|
161
158
|
context "by default" do
|
162
159
|
it "should start with an XML declaration" do
|
163
160
|
xml.to_xml.should match(/^<\?xml version="1.0" encoding="UTF-8"\?>/)
|
@@ -208,34 +205,42 @@ describe Savon::SOAP::XML do
|
|
208
205
|
end
|
209
206
|
|
210
207
|
context "with a SOAP header" do
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
208
|
+
context "as a Hash" do
|
209
|
+
it "should contain the given header" do
|
210
|
+
xml.header = {
|
211
|
+
:token => "secret",
|
212
|
+
:attributes! => { :token => { :xmlns => "http://example.com" } }
|
213
|
+
}
|
214
|
+
|
215
|
+
xml.to_xml.should include('<env:Header><token xmlns="http://example.com">secret</token></env:Header>')
|
216
|
+
end
|
217
|
+
end
|
216
218
|
|
217
|
-
|
219
|
+
context "as a String" do
|
220
|
+
it "should contain the given header" do
|
221
|
+
xml.header = %{<token xmlns="http://example.com">secret</token>}
|
222
|
+
|
223
|
+
xml.to_xml.should include('<env:Header><token xmlns="http://example.com">secret</token></env:Header>')
|
224
|
+
end
|
218
225
|
end
|
219
226
|
end
|
220
227
|
|
221
228
|
context "with the global SOAP version set to 1.2" do
|
222
229
|
it "should contain the namespace for SOAP 1.2" do
|
223
|
-
|
230
|
+
config.soap_version = 2
|
224
231
|
|
225
232
|
uri = "http://www.w3.org/2003/05/soap-envelope"
|
226
233
|
xml.to_xml.should match(/<env:Envelope (.*)xmlns:env="#{uri}"(.*)>/)
|
227
|
-
reset_soap_version
|
228
234
|
end
|
229
235
|
end
|
230
236
|
|
231
237
|
context "with a global and request SOAP version" do
|
232
238
|
it "should contain the namespace for the request SOAP version" do
|
233
|
-
|
239
|
+
config.soap_version = 2
|
234
240
|
xml.version = 1
|
235
241
|
|
236
242
|
uri = "http://schemas.xmlsoap.org/soap/envelope/"
|
237
243
|
xml.to_xml.should match(/<env:Envelope (.*)xmlns:env="#{uri}"(.*)>/)
|
238
|
-
reset_soap_version
|
239
244
|
end
|
240
245
|
end
|
241
246
|
|
@@ -256,7 +261,7 @@ describe Savon::SOAP::XML do
|
|
256
261
|
|
257
262
|
context "with :element_form_default set to :qualified and a :namespace" do
|
258
263
|
let :xml do
|
259
|
-
Savon::SOAP::XML.new Endpoint.soap, [nil, :authenticate, {}], :user => { :id => 1, ":noNamespace" => true }
|
264
|
+
Savon::SOAP::XML.new(config, Endpoint.soap, [nil, :authenticate, {}], :user => { :id => 1, ":noNamespace" => true })
|
260
265
|
end
|
261
266
|
|
262
267
|
it "should namespace the default elements" do
|
@@ -318,9 +323,5 @@ describe Savon::SOAP::XML do
|
|
318
323
|
end
|
319
324
|
end
|
320
325
|
|
321
|
-
def reset_soap_version
|
322
|
-
Savon.soap_version = Savon::SOAP::DefaultVersion
|
323
|
-
end
|
324
|
-
|
325
326
|
end
|
326
327
|
|