tictoc-savon 0.7.9
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/.autotest +5 -0
- data/CHANGELOG +176 -0
- data/LICENSE +20 -0
- data/README.rdoc +64 -0
- data/Rakefile +50 -0
- data/lib/savon.rb +35 -0
- data/lib/savon/client.rb +131 -0
- data/lib/savon/core_ext.rb +8 -0
- data/lib/savon/core_ext/array.rb +31 -0
- data/lib/savon/core_ext/datetime.rb +10 -0
- data/lib/savon/core_ext/hash.rb +107 -0
- data/lib/savon/core_ext/net_http.rb +19 -0
- data/lib/savon/core_ext/object.rb +16 -0
- data/lib/savon/core_ext/string.rb +69 -0
- data/lib/savon/core_ext/symbol.rb +8 -0
- data/lib/savon/core_ext/uri.rb +10 -0
- data/lib/savon/logger.rb +56 -0
- data/lib/savon/request.rb +138 -0
- data/lib/savon/response.rb +174 -0
- data/lib/savon/soap.rb +302 -0
- data/lib/savon/version.rb +5 -0
- data/lib/savon/wsdl.rb +137 -0
- data/lib/savon/wsdl_stream.rb +85 -0
- data/lib/savon/wsse.rb +163 -0
- data/spec/basic_spec_helper.rb +11 -0
- data/spec/endpoint_helper.rb +23 -0
- data/spec/fixtures/gzip/gzip_response_fixture.rb +7 -0
- data/spec/fixtures/gzip/message.gz +0 -0
- data/spec/fixtures/response/response_fixture.rb +36 -0
- data/spec/fixtures/response/xml/authentication.xml +14 -0
- data/spec/fixtures/response/xml/multi_ref.xml +39 -0
- data/spec/fixtures/response/xml/soap_fault.xml +8 -0
- data/spec/fixtures/response/xml/soap_fault12.xml +18 -0
- data/spec/fixtures/wsdl/wsdl_fixture.rb +37 -0
- data/spec/fixtures/wsdl/wsdl_fixture.yml +42 -0
- data/spec/fixtures/wsdl/xml/authentication.xml +63 -0
- data/spec/fixtures/wsdl/xml/geotrust.xml +156 -0
- data/spec/fixtures/wsdl/xml/namespaced_actions.xml +307 -0
- data/spec/fixtures/wsdl/xml/no_namespace.xml +115 -0
- data/spec/http_stubs.rb +26 -0
- data/spec/integration/http_basic_auth_spec.rb +16 -0
- data/spec/integration/server.rb +51 -0
- data/spec/savon/client_spec.rb +86 -0
- data/spec/savon/core_ext/array_spec.rb +49 -0
- data/spec/savon/core_ext/datetime_spec.rb +21 -0
- data/spec/savon/core_ext/hash_spec.rb +190 -0
- data/spec/savon/core_ext/net_http_spec.rb +38 -0
- data/spec/savon/core_ext/object_spec.rb +34 -0
- data/spec/savon/core_ext/string_spec.rb +99 -0
- data/spec/savon/core_ext/symbol_spec.rb +12 -0
- data/spec/savon/core_ext/uri_spec.rb +19 -0
- data/spec/savon/request_spec.rb +117 -0
- data/spec/savon/response_spec.rb +179 -0
- data/spec/savon/soap_spec.rb +202 -0
- data/spec/savon/wsdl_spec.rb +107 -0
- data/spec/savon/wsse_spec.rb +132 -0
- data/spec/spec.opts +4 -0
- data/spec/spec_helper.rb +5 -0
- metadata +229 -0
@@ -0,0 +1,202 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Savon::SOAP do
|
4
|
+
before do
|
5
|
+
@operation = WSDLFixture.authentication(:operations)[:authenticate]
|
6
|
+
@action, @input = @operation[:action], @operation[:input]
|
7
|
+
@soap = Savon::SOAP.new @action, @input, EndpointHelper.soap_endpoint
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should contain the SOAP namespace for each supported SOAP version" do
|
11
|
+
Savon::SOAP::Versions.each do |soap_version|
|
12
|
+
Savon::SOAP::Namespace[soap_version].should be_a(String)
|
13
|
+
Savon::SOAP::Namespace[soap_version].should_not be_empty
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should contain the Content-Types for each supported SOAP version" do
|
18
|
+
Savon::SOAP::Versions.each do |soap_version|
|
19
|
+
Savon::SOAP::ContentType[soap_version].should be_a(String)
|
20
|
+
Savon::SOAP::ContentType[soap_version].should_not be_empty
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should contain an Array of supported SOAP versions" do
|
25
|
+
Savon::SOAP::Versions.should be_an(Array)
|
26
|
+
Savon::SOAP::Versions.should_not be_empty
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should contain the xs:dateTime format" do
|
30
|
+
Savon::SOAP::DateTimeFormat.should be_a(String)
|
31
|
+
Savon::SOAP::DateTimeFormat.should_not be_empty
|
32
|
+
|
33
|
+
DateTime.new(2012, 03, 22, 16, 22, 33).strftime(Savon::SOAP::DateTimeFormat).
|
34
|
+
should == "2012-03-22T16:22:33Z"
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should contain a Regexp matching the xs:dateTime format" do
|
38
|
+
Savon::SOAP::DateTimeRegexp.should be_a(Regexp)
|
39
|
+
(Savon::SOAP::DateTimeRegexp === "2012-03-22T16:22:33").should be_true
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should default to SOAP 1.1" do
|
43
|
+
Savon::SOAP.version.should == 1
|
44
|
+
end
|
45
|
+
|
46
|
+
describe "xml returned via to_xml" do
|
47
|
+
before do
|
48
|
+
@xml_declaration = '<?xml version="1.0" encoding="UTF-8"?>'
|
49
|
+
@namespace = { "xmlns:ns" => "http://example.com" }
|
50
|
+
@namespace_string = 'xmlns:ns="http://example.com"'
|
51
|
+
@namespaces = { "xmlns:ns" => "http://ns.example.com", "xmlns:ns2" => "http://ns2.example.com" }
|
52
|
+
|
53
|
+
# reset to defaults
|
54
|
+
Savon::SOAP.version = 1
|
55
|
+
Savon::SOAP.header = {}
|
56
|
+
Savon::SOAP.namespaces = {}
|
57
|
+
end
|
58
|
+
|
59
|
+
it "should contain an xml declaration" do
|
60
|
+
@soap.to_xml.should include(@xml_declaration)
|
61
|
+
end
|
62
|
+
|
63
|
+
# namespaces
|
64
|
+
|
65
|
+
it "should contain the namespace for SOAP 1.1" do
|
66
|
+
@soap.to_xml.should include('xmlns:env="' + Savon::SOAP::Namespace[1] + '"')
|
67
|
+
end
|
68
|
+
|
69
|
+
it "should contain the namespace for SOAP 1.2 when defined globally" do
|
70
|
+
Savon::SOAP.version = 2
|
71
|
+
@soap.to_xml.should include('xmlns:env="' + Savon::SOAP::Namespace[2] + '"')
|
72
|
+
end
|
73
|
+
|
74
|
+
it "should contain the namespace for SOAP 1.2 when defined per request" do
|
75
|
+
@soap.version = 2
|
76
|
+
@soap.to_xml.should include('xmlns:env="' + Savon::SOAP::Namespace[2] + '"')
|
77
|
+
end
|
78
|
+
|
79
|
+
it "should containg a xmlns:wsdl namespace defined via the :namespace shortcut method" do
|
80
|
+
@soap.namespace = "http://wsdl.example.com"
|
81
|
+
@soap.to_xml.should include('xmlns:wsdl="http://wsdl.example.com"')
|
82
|
+
end
|
83
|
+
|
84
|
+
it "should accept custom namespaces when defined globally" do
|
85
|
+
Savon::SOAP.namespaces = @namespace
|
86
|
+
@soap.to_xml.should include("<env:Envelope " + @namespace_string)
|
87
|
+
end
|
88
|
+
|
89
|
+
it "should accept custom namespaces when defined per request" do
|
90
|
+
@soap.namespaces = @namespace
|
91
|
+
@soap.to_xml.should include("<env:Envelope " + @namespace_string)
|
92
|
+
end
|
93
|
+
|
94
|
+
it "should merge global and per request namespaces" do
|
95
|
+
Savon::SOAP.namespaces = @namespaces
|
96
|
+
@soap.namespaces = @namespace
|
97
|
+
@soap.to_xml.should include(
|
98
|
+
'xmlns:ns="http://example.com"',
|
99
|
+
'xmlns:ns2="http://ns2.example.com"'
|
100
|
+
)
|
101
|
+
end
|
102
|
+
|
103
|
+
# header
|
104
|
+
|
105
|
+
it "should not contain a header tag unless specified" do
|
106
|
+
@soap.to_xml.should_not include("<env:Header>")
|
107
|
+
end
|
108
|
+
|
109
|
+
it "should accept a custom (String) header defined globally" do
|
110
|
+
Savon::SOAP.header = "<key>value</key>"
|
111
|
+
@soap.to_xml.should include("<env:Header><key>value</key></env:Header>")
|
112
|
+
end
|
113
|
+
|
114
|
+
it "should accept a custom (Hash) header defined globally" do
|
115
|
+
Savon::SOAP.header[:key] = "value"
|
116
|
+
@soap.to_xml.should include("<env:Header><key>value</key></env:Header>")
|
117
|
+
end
|
118
|
+
|
119
|
+
it "should accept a custom (String) header defined per request" do
|
120
|
+
@soap.header = "<key>value</key>"
|
121
|
+
@soap.to_xml.should include("<env:Header><key>value</key></env:Header>")
|
122
|
+
end
|
123
|
+
|
124
|
+
it "should accept a custom (Hash) header defined per request" do
|
125
|
+
@soap.header[:key] = "value"
|
126
|
+
@soap.to_xml.should include("<env:Header><key>value</key></env:Header>")
|
127
|
+
end
|
128
|
+
|
129
|
+
it "should merge global and per request headers defined as Strings" do
|
130
|
+
Savon::SOAP.header = "<key2>other value</key2>"
|
131
|
+
@soap.header = "<key>value</key>"
|
132
|
+
@soap.to_xml.should include(
|
133
|
+
"<env:Header><key2>other value</key2><key>value</key></env:Header>"
|
134
|
+
)
|
135
|
+
end
|
136
|
+
|
137
|
+
it "should merge global and per request headers defined as Hashes" do
|
138
|
+
Savon::SOAP.header = { :key => "value", :key2 => "global value" }
|
139
|
+
@soap.header[:key2] = "request value"
|
140
|
+
@soap.to_xml.should match(
|
141
|
+
/<env:Header>(<key>value<\/key><key2>request value<\/key2>|<key2>request value<\/key2><key>value<\/key>)<\/env:Header>/
|
142
|
+
)
|
143
|
+
end
|
144
|
+
|
145
|
+
it "should use the :header method from a given WSSE object to include a WSSE header" do
|
146
|
+
wsse = "some compliant object"
|
147
|
+
wsse.stubs(:header).returns("<wsse>authentication</wsse>")
|
148
|
+
|
149
|
+
@soap.wsse = wsse
|
150
|
+
@soap.to_xml.should include("<env:Header><wsse>authentication</wsse></env:Header>")
|
151
|
+
end
|
152
|
+
|
153
|
+
# input tag
|
154
|
+
|
155
|
+
it "should contain a :wsdl namespaced input tag matching the :input property on instantiation" do
|
156
|
+
@soap = Savon::SOAP.new "someAction", "someInput", EndpointHelper.soap_endpoint
|
157
|
+
@soap.to_xml.should include('<wsdl:someInput>')
|
158
|
+
end
|
159
|
+
|
160
|
+
it "should fall back to using the :action property whem :input is blank" do
|
161
|
+
@soap = Savon::SOAP.new "someAction", "", EndpointHelper.soap_endpoint
|
162
|
+
@soap.to_xml.should include('<wsdl:someAction>')
|
163
|
+
end
|
164
|
+
|
165
|
+
it "should containg namespaces defined via an input tag Array containing the tag name and a Hash of namespaces" do
|
166
|
+
input = ["someInput", { "otherNs" => "http://otherns.example.com" }]
|
167
|
+
@soap = Savon::SOAP.new "someAction", input, EndpointHelper.soap_endpoint
|
168
|
+
@soap.to_xml.should include('<wsdl:someInput otherNs="http://otherns.example.com">')
|
169
|
+
end
|
170
|
+
|
171
|
+
# xml body
|
172
|
+
|
173
|
+
it "should contain the SOAP body defined as a Hash" do
|
174
|
+
@soap.body = { :someTag => "some value" }
|
175
|
+
@soap.to_xml.should include("<someTag>some value</someTag>")
|
176
|
+
end
|
177
|
+
|
178
|
+
it "should contain the SOAP body defined as an Object responding to :to_s" do
|
179
|
+
@soap.body = "<someTag>some value</someTag>"
|
180
|
+
@soap.to_xml.should include(@soap.body)
|
181
|
+
end
|
182
|
+
|
183
|
+
# xml
|
184
|
+
|
185
|
+
it "should be a completely custom XML when specified" do
|
186
|
+
@soap.xml = "custom SOAP body"
|
187
|
+
@soap.to_xml.should == @soap.xml
|
188
|
+
end
|
189
|
+
|
190
|
+
# safety check
|
191
|
+
|
192
|
+
it "should be a valid SOAP request" do
|
193
|
+
@soap.to_xml.should include(
|
194
|
+
@xml_declaration +
|
195
|
+
'<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">' <<
|
196
|
+
'<env:Body><wsdl:authenticate></wsdl:authenticate></env:Body>' <<
|
197
|
+
'</env:Envelope>'
|
198
|
+
)
|
199
|
+
end
|
200
|
+
end
|
201
|
+
end
|
202
|
+
|
@@ -0,0 +1,107 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Savon::WSDL do
|
4
|
+
describe "a common WSDL document" do
|
5
|
+
before { @wsdl = new_wsdl }
|
6
|
+
|
7
|
+
it "is initialized with a Savon::Request object" do
|
8
|
+
Savon::WSDL.new Savon::Request.new(EndpointHelper.wsdl_endpoint)
|
9
|
+
end
|
10
|
+
|
11
|
+
it "it accepts a custom SOAP endpoint" do
|
12
|
+
wsdl = Savon::WSDL.new Savon::Request.new(EndpointHelper.wsdl_endpoint), "http://localhost"
|
13
|
+
wsdl.soap_endpoint.should == "http://localhost"
|
14
|
+
end
|
15
|
+
|
16
|
+
it "is enabled by default" do
|
17
|
+
@wsdl.enabled?.should be_true
|
18
|
+
end
|
19
|
+
|
20
|
+
it "has a getter for the namespace URI" do
|
21
|
+
@wsdl.namespace_uri.should == WSDLFixture.authentication(:namespace_uri)
|
22
|
+
end
|
23
|
+
|
24
|
+
it "has a getter for returning an Array of available SOAP actions" do
|
25
|
+
WSDLFixture.authentication(:operations).keys.each do |soap_action|
|
26
|
+
@wsdl.soap_actions.should include(soap_action)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
it "has a getter for returning a Hash of available SOAP operations" do
|
31
|
+
@wsdl.operations.should == WSDLFixture.authentication(:operations)
|
32
|
+
end
|
33
|
+
|
34
|
+
it "responds to SOAP actions while still behaving as usual otherwise" do
|
35
|
+
WSDLFixture.authentication(:operations).keys.each do |soap_action|
|
36
|
+
@wsdl.respond_to?(soap_action).should be_true
|
37
|
+
end
|
38
|
+
|
39
|
+
@wsdl.respond_to?(:object_id).should be_true
|
40
|
+
@wsdl.respond_to?(:some_undefined_method).should be_false
|
41
|
+
end
|
42
|
+
|
43
|
+
it "returns the raw WSDL document for to_s" do
|
44
|
+
@wsdl.to_s.should == WSDLFixture.authentication
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
describe "a WSDL document having core sections without a namespace" do
|
49
|
+
before { @wsdl = new_wsdl :no_namespace }
|
50
|
+
|
51
|
+
it "returns the namespace URI" do
|
52
|
+
@wsdl.namespace_uri.should == WSDLFixture.no_namespace(:namespace_uri)
|
53
|
+
end
|
54
|
+
|
55
|
+
it "returns an Array of available SOAP actions" do
|
56
|
+
WSDLFixture.no_namespace(:operations).keys.each do |soap_action|
|
57
|
+
@wsdl.soap_actions.should include(soap_action)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
it "returns a Hash of SOAP operations" do
|
62
|
+
@wsdl.operations.should == WSDLFixture.no_namespace(:operations)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
describe "a WSDL document with namespaced SOAP actions" do
|
67
|
+
before { @wsdl = new_wsdl :namespaced_actions }
|
68
|
+
|
69
|
+
it "returns the namespace URI" do
|
70
|
+
@wsdl.namespace_uri.should == WSDLFixture.namespaced_actions(:namespace_uri)
|
71
|
+
end
|
72
|
+
|
73
|
+
it "returns an Array of available SOAP actions" do
|
74
|
+
WSDLFixture.namespaced_actions(:operations).keys.each do |soap_action|
|
75
|
+
@wsdl.soap_actions.should include(soap_action)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
it "returns a Hash of SOAP operations" do
|
80
|
+
@wsdl.operations.should == WSDLFixture.namespaced_actions(:operations)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
describe "a WSDL document from geotrust" do
|
85
|
+
before { @wsdl = new_wsdl :geotrust }
|
86
|
+
|
87
|
+
it "returns the namespace URI" do
|
88
|
+
@wsdl.namespace_uri.should == WSDLFixture.geotrust(:namespace_uri)
|
89
|
+
end
|
90
|
+
|
91
|
+
it "returns an Array of available SOAP actions" do
|
92
|
+
WSDLFixture.geotrust(:operations).keys.each do |soap_action|
|
93
|
+
@wsdl.soap_actions.should include(soap_action)
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
it "returns a Hash of SOAP operations" do
|
98
|
+
@wsdl.operations.should == WSDLFixture.geotrust(:operations)
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
def new_wsdl(fixture = nil)
|
103
|
+
endpoint = fixture ? EndpointHelper.wsdl_endpoint(fixture) : EndpointHelper.wsdl_endpoint
|
104
|
+
Savon::WSDL.new Savon::Request.new(endpoint)
|
105
|
+
end
|
106
|
+
|
107
|
+
end
|
@@ -0,0 +1,132 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Savon::WSSE do
|
4
|
+
before do
|
5
|
+
Savon::WSSE.username, Savon::WSSE.password, Savon::WSSE.digest = nil, nil, false
|
6
|
+
@wsse, @username, @password = Savon::WSSE.new, "gorilla", "secret"
|
7
|
+
end
|
8
|
+
|
9
|
+
it "contains the namespace for WS Security Secext" do
|
10
|
+
Savon::WSSE::WSENamespace.should be_a(String)
|
11
|
+
Savon::WSSE::WSENamespace.should_not be_empty
|
12
|
+
end
|
13
|
+
|
14
|
+
it "contains the namespace for WS Security Utility" do
|
15
|
+
Savon::WSSE::WSUNamespace.should be_a(String)
|
16
|
+
Savon::WSSE::WSUNamespace.should_not be_empty
|
17
|
+
end
|
18
|
+
|
19
|
+
it "defaults to nil for the WSSE username (global setting)" do
|
20
|
+
Savon::WSSE.username.should be_nil
|
21
|
+
end
|
22
|
+
|
23
|
+
it "has both getter and setter for the WSSE username (global setting)" do
|
24
|
+
Savon::WSSE.username = "gorilla"
|
25
|
+
Savon::WSSE.username.should == "gorilla"
|
26
|
+
end
|
27
|
+
|
28
|
+
it "defaults to nil for the WSSE password (global setting)" do
|
29
|
+
Savon::WSSE.password.should be_nil
|
30
|
+
end
|
31
|
+
|
32
|
+
it "has both getter and setter for the WSSE password (global setting)" do
|
33
|
+
Savon::WSSE.password = "secret"
|
34
|
+
Savon::WSSE.password.should == "secret"
|
35
|
+
end
|
36
|
+
|
37
|
+
it "defaults to nil for whether to use WSSE digest (global setting)" do
|
38
|
+
Savon::WSSE.digest?.should be_false
|
39
|
+
end
|
40
|
+
|
41
|
+
it "has both getter and setter for whether to use WSSE digest (global setting)" do
|
42
|
+
Savon::WSSE.digest = true
|
43
|
+
Savon::WSSE.digest?.should == true
|
44
|
+
end
|
45
|
+
|
46
|
+
it "defaults to nil for the WSSE username" do
|
47
|
+
@wsse.username.should be_nil
|
48
|
+
end
|
49
|
+
|
50
|
+
it "has both getter and setter for the WSSE username" do
|
51
|
+
@wsse.username = "gorilla"
|
52
|
+
@wsse.username.should == "gorilla"
|
53
|
+
end
|
54
|
+
|
55
|
+
it "defaults to nil for the WSSE password" do
|
56
|
+
@wsse.password.should be_nil
|
57
|
+
end
|
58
|
+
|
59
|
+
it "has both getter and setter for the WSSE password" do
|
60
|
+
@wsse.password = "secret"
|
61
|
+
@wsse.password.should == "secret"
|
62
|
+
end
|
63
|
+
|
64
|
+
it "defaults to nil for whether to use WSSE digest" do
|
65
|
+
@wsse.digest?.should be_false
|
66
|
+
end
|
67
|
+
|
68
|
+
it "has both getter and setter for whether to use WSSE digest" do
|
69
|
+
@wsse.digest = true
|
70
|
+
@wsse.digest?.should == true
|
71
|
+
end
|
72
|
+
|
73
|
+
describe "header" do
|
74
|
+
describe "returns the XML for a WSSE authentication header" do
|
75
|
+
it "with WSSE credentials specified" do
|
76
|
+
@wsse.username = @username
|
77
|
+
@wsse.password = @password
|
78
|
+
header = @wsse.header
|
79
|
+
|
80
|
+
header.should include_security_namespaces
|
81
|
+
header.should include(@username)
|
82
|
+
header.should include(@password)
|
83
|
+
header.should include(Savon::WSSE::PasswordTextURI)
|
84
|
+
end
|
85
|
+
|
86
|
+
it "with WSSE credentials specified via defaults" do
|
87
|
+
Savon::WSSE.username = @username
|
88
|
+
Savon::WSSE.password = @password
|
89
|
+
header = @wsse.header
|
90
|
+
|
91
|
+
header.should include_security_namespaces
|
92
|
+
header.should include(@username)
|
93
|
+
header.should include(@password)
|
94
|
+
header.should include(Savon::WSSE::PasswordTextURI)
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
describe "returns the XML for a WSSE digest header if specified" do
|
99
|
+
it "via accessors" do
|
100
|
+
@wsse.username = @username
|
101
|
+
@wsse.password = @password
|
102
|
+
@wsse.digest = true
|
103
|
+
header = @wsse.header
|
104
|
+
|
105
|
+
header.should include_security_namespaces
|
106
|
+
header.should include(@username)
|
107
|
+
header.should_not include(@password)
|
108
|
+
header.should include(Savon::WSSE::PasswordDigestURI)
|
109
|
+
end
|
110
|
+
|
111
|
+
it "via defaults" do
|
112
|
+
@wsse.username = @username
|
113
|
+
@wsse.password = @password
|
114
|
+
Savon::WSSE.digest = true
|
115
|
+
header = @wsse.header
|
116
|
+
|
117
|
+
header.should include_security_namespaces
|
118
|
+
header.should include(@username)
|
119
|
+
header.should_not include(@password)
|
120
|
+
header.should include(Savon::WSSE::PasswordDigestURI)
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
def include_security_namespaces
|
125
|
+
simple_matcher("include security namespaces") do |given|
|
126
|
+
given.should include(Savon::WSSE::WSENamespace)
|
127
|
+
given.should include(Savon::WSSE::WSUNamespace)
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
end
|
data/spec/spec.opts
ADDED