lolsoap 0.1.4 → 0.2.0
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/README.md +24 -3
- data/VERSION +1 -1
- data/lib/lolsoap/builder.rb +12 -1
- data/lib/lolsoap/envelope.rb +10 -6
- data/lib/lolsoap/fault.rb +16 -3
- data/lib/lolsoap/request.rb +15 -4
- data/lib/lolsoap/wsdl/element.rb +4 -4
- data/lib/lolsoap/wsdl/type.rb +17 -15
- data/lib/lolsoap/wsdl.rb +40 -32
- data/lib/lolsoap/wsdl_parser.rb +100 -52
- data/lolsoap.gemspec +4 -3
- data/test/fixtures/stock_quote.wsdl +8 -5
- data/test/fixtures/stock_quote_fault_soap_1_1.xml +10 -0
- data/test/integration/test_envelope.rb +4 -0
- data/test/integration/test_wsdl.rb +3 -4
- data/test/unit/test_builder.rb +1 -0
- data/test/unit/test_envelope.rb +23 -3
- data/test/unit/test_fault.rb +33 -15
- data/test/unit/test_request.rb +14 -14
- data/test/unit/test_response.rb +1 -1
- data/test/unit/test_wsdl.rb +74 -93
- data/test/unit/test_wsdl_parser.rb +46 -32
- data/test/unit/wsdl/test_type.rb +4 -4
- metadata +40 -14
@@ -0,0 +1,10 @@
|
|
1
|
+
<?xml version="1.0"?>
|
2
|
+
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
3
|
+
<soap:Body>
|
4
|
+
<soap:Fault>
|
5
|
+
<soap:faultcode>soap:Sender</soap:faultcode>
|
6
|
+
<soap:faultstring>Omg! stock market has crashed!</soap:faultstring>
|
7
|
+
<soap:detail><Foo>Some detail</Foo></soap:detail>
|
8
|
+
</soap:Fault>
|
9
|
+
</soap:Body>
|
10
|
+
</soap:Envelope>
|
@@ -21,6 +21,7 @@ module LolSoap
|
|
21
21
|
s.name 'LOCOLOCOLOCO'
|
22
22
|
end
|
23
23
|
b.lol
|
24
|
+
b.id 42
|
24
25
|
end
|
25
26
|
|
26
27
|
el = doc.at_xpath('//xsd1:TradePriceRequest/xsd1:tickerSymbol', doc.namespaces)
|
@@ -30,6 +31,9 @@ module LolSoap
|
|
30
31
|
el = doc.at_xpath('//xsd1:TradePriceRequest/xsd1:specialTickerSymbol/xsd2:name', doc.namespaces)
|
31
32
|
el.wont_equal nil
|
32
33
|
el.text.to_s.must_equal 'LOCOLOCOLOCO'
|
34
|
+
|
35
|
+
attr = doc.at_xpath('//xsd1:TradePriceRequest/@id', doc.namespaces)
|
36
|
+
attr.to_s.must_equal "42"
|
33
37
|
end
|
34
38
|
|
35
39
|
it 'creates some header' do
|
@@ -8,14 +8,13 @@ module LolSoap
|
|
8
8
|
it 'should successfully parse a WSDL document' do
|
9
9
|
subject.operations.length.must_equal 1
|
10
10
|
subject.operations['GetLastTradePrice'].tap do |o|
|
11
|
-
o.input.must_equal subject.types['TradePriceRequest']
|
11
|
+
o.input.must_equal subject.types['xsd1:TradePriceRequest']
|
12
12
|
o.action.must_equal 'http://example.com/GetLastTradePrice'
|
13
13
|
end
|
14
14
|
|
15
15
|
subject.types.length.must_equal 3
|
16
|
-
subject.types['TradePriceRequest'].tap do |t|
|
17
|
-
t.
|
18
|
-
t.namespace.must_equal 'http://example.com/stockquote.xsd'
|
16
|
+
subject.types['xsd1:TradePriceRequest'].tap do |t|
|
17
|
+
t.prefix.must_equal 'xsd1'
|
19
18
|
end
|
20
19
|
end
|
21
20
|
|
data/test/unit/test_builder.rb
CHANGED
data/test/unit/test_envelope.rb
CHANGED
@@ -3,7 +3,13 @@ require 'lolsoap/envelope'
|
|
3
3
|
|
4
4
|
module LolSoap
|
5
5
|
describe Envelope do
|
6
|
-
let(:wsdl)
|
6
|
+
let(:wsdl) do
|
7
|
+
OpenStruct.new(
|
8
|
+
:type_namespaces => { 'foo' => 'http://example.com/foo' },
|
9
|
+
:soap_version => '1.2'
|
10
|
+
)
|
11
|
+
end
|
12
|
+
|
7
13
|
let(:operation) do
|
8
14
|
OpenStruct.new(:input => OpenStruct.new(:prefix => 'foo', :name => 'WashHandsRequest'))
|
9
15
|
end
|
@@ -16,7 +22,7 @@ module LolSoap
|
|
16
22
|
|
17
23
|
it 'has a skeleton SOAP envelope structure when first created' do
|
18
24
|
doc.namespaces.must_equal(
|
19
|
-
'xmlns:soap' => Envelope::
|
25
|
+
'xmlns:soap' => Envelope::SOAP_1_2,
|
20
26
|
'xmlns:foo' => 'http://example.com/foo'
|
21
27
|
)
|
22
28
|
|
@@ -84,7 +90,11 @@ module LolSoap
|
|
84
90
|
|
85
91
|
describe '#to_xml' do
|
86
92
|
it 'returns the xml of the doc' do
|
87
|
-
def subject.doc
|
93
|
+
def subject.doc
|
94
|
+
doc = Object.new
|
95
|
+
def doc.to_xml(options); '<lol>'; end
|
96
|
+
doc
|
97
|
+
end
|
88
98
|
subject.to_xml.must_equal '<lol>'
|
89
99
|
end
|
90
100
|
end
|
@@ -108,5 +118,15 @@ module LolSoap
|
|
108
118
|
subject.output_type.must_equal 'lol'
|
109
119
|
end
|
110
120
|
end
|
121
|
+
|
122
|
+
describe '#soap_namespace' do
|
123
|
+
it 'returns the correct envelope namespace according to the SOAP version' do
|
124
|
+
wsdl.soap_version = '1.2'
|
125
|
+
subject.soap_namespace.must_equal Envelope::SOAP_1_2
|
126
|
+
|
127
|
+
wsdl.soap_version = '1.1'
|
128
|
+
subject.soap_namespace.must_equal Envelope::SOAP_1_1
|
129
|
+
end
|
130
|
+
end
|
111
131
|
end
|
112
132
|
end
|
data/test/unit/test_fault.rb
CHANGED
@@ -4,30 +4,48 @@ require 'lolsoap/fault'
|
|
4
4
|
|
5
5
|
module LolSoap
|
6
6
|
describe Fault do
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
7
|
+
examples = proc do
|
8
|
+
describe '#code' do
|
9
|
+
it 'returns the code' do
|
10
|
+
subject.code.must_equal 'soap:Sender'
|
11
|
+
end
|
12
|
+
end
|
12
13
|
|
13
|
-
|
14
|
+
describe '#reason' do
|
15
|
+
it 'returns the reason' do
|
16
|
+
subject.reason.must_match(/^Omg.*crashed!$/)
|
17
|
+
end
|
18
|
+
end
|
14
19
|
|
15
|
-
|
16
|
-
|
17
|
-
|
20
|
+
describe '#detail' do
|
21
|
+
it 'returns the detail' do
|
22
|
+
subject.detail.must_equal '<Foo>Some detail</Foo>'
|
23
|
+
end
|
18
24
|
end
|
19
25
|
end
|
20
26
|
|
21
|
-
describe '
|
22
|
-
|
23
|
-
|
27
|
+
describe 'SOAP 1.1' do
|
28
|
+
let(:request) { OpenStruct.new(:soap_version => '1.2', :soap_namespace => Envelope::SOAP_1_2) }
|
29
|
+
let(:node) do
|
30
|
+
doc = Nokogiri::XML(File.read(TEST_ROOT + '/fixtures/stock_quote_fault.xml'))
|
31
|
+
doc.at_xpath('//soap:Fault', 'soap' => Envelope::SOAP_1_2)
|
24
32
|
end
|
33
|
+
|
34
|
+
subject { Fault.new(request, node) }
|
35
|
+
|
36
|
+
instance_eval(&examples)
|
25
37
|
end
|
26
38
|
|
27
|
-
describe '
|
28
|
-
|
29
|
-
|
39
|
+
describe 'SOAP 1.2' do
|
40
|
+
let(:request) { OpenStruct.new(:soap_version => '1.1', :soap_namespace => Envelope::SOAP_1_1) }
|
41
|
+
let(:node) do
|
42
|
+
doc = Nokogiri::XML(File.read(TEST_ROOT + '/fixtures/stock_quote_fault_soap_1_1.xml'))
|
43
|
+
doc.at_xpath('//soap:Fault', 'soap' => Envelope::SOAP_1_1)
|
30
44
|
end
|
45
|
+
|
46
|
+
subject { Fault.new(request, node) }
|
47
|
+
|
48
|
+
instance_eval(&examples)
|
31
49
|
end
|
32
50
|
end
|
33
51
|
end
|
data/test/unit/test_request.rb
CHANGED
@@ -6,18 +6,6 @@ module LolSoap
|
|
6
6
|
let(:envelope) { OpenStruct.new }
|
7
7
|
subject { Request.new(envelope) }
|
8
8
|
|
9
|
-
[:header, :body, :soap_namespace, :input_type, :output_type].each do |method|
|
10
|
-
describe "##{method}" do
|
11
|
-
let(:envelope) { MiniTest::Mock.new }
|
12
|
-
|
13
|
-
it 'delegates to the envelope' do
|
14
|
-
ret = Object.new
|
15
|
-
envelope.expect(method, ret)
|
16
|
-
subject.send(method).must_equal ret
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
9
|
describe '#url' do
|
22
10
|
it 'returns the envelope endpoint' do
|
23
11
|
envelope.endpoint = 'lol'
|
@@ -27,7 +15,7 @@ module LolSoap
|
|
27
15
|
|
28
16
|
describe '#headers' do
|
29
17
|
it 'returns the necessary headers' do
|
30
|
-
envelope.to_xml
|
18
|
+
def envelope.to_xml(options); '<lol>'; end
|
31
19
|
envelope.action = 'http://example.com/LolOutLoud'
|
32
20
|
|
33
21
|
subject.headers.must_equal({
|
@@ -40,9 +28,21 @@ module LolSoap
|
|
40
28
|
|
41
29
|
describe '#content' do
|
42
30
|
it 'returns the envelope as an xml string' do
|
43
|
-
envelope.to_xml
|
31
|
+
def envelope.to_xml(options); '<lol>'; end
|
44
32
|
subject.content.must_equal '<lol>'
|
45
33
|
end
|
46
34
|
end
|
35
|
+
|
36
|
+
describe '#mime' do
|
37
|
+
it 'is application/soap+xml for SOAP 1.2' do
|
38
|
+
envelope.soap_version = '1.2'
|
39
|
+
subject.mime.must_equal 'application/soap+xml'
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'is text/xml for SOAP 1.1' do
|
43
|
+
envelope.soap_version = '1.1'
|
44
|
+
subject.mime.must_equal 'text/xml'
|
45
|
+
end
|
46
|
+
end
|
47
47
|
end
|
48
48
|
end
|
data/test/unit/test_response.rb
CHANGED
@@ -4,7 +4,7 @@ require 'lolsoap/response'
|
|
4
4
|
|
5
5
|
module LolSoap
|
6
6
|
describe Response do
|
7
|
-
let(:request) { OpenStruct.new(:soap_namespace => Envelope::
|
7
|
+
let(:request) { OpenStruct.new(:soap_namespace => Envelope::SOAP_1_2, :soap_version => '1.2', :output => Object.new) }
|
8
8
|
let(:doc) { Nokogiri::XML(File.read(TEST_ROOT + '/fixtures/stock_quote_response.xml')) }
|
9
9
|
|
10
10
|
subject { Response.new(request, doc) }
|
data/test/unit/test_wsdl.rb
CHANGED
@@ -5,137 +5,118 @@ module LolSoap
|
|
5
5
|
describe WSDL do
|
6
6
|
describe 'with a doc that can be parsed' do
|
7
7
|
let(:namespace) { 'http://lolsoap.api/bla' }
|
8
|
-
let(:parser) { OpenStruct.new(:namespaces => { 'bla' => namespace }) }
|
9
8
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
def subject.type(n)
|
15
|
-
@types ||= { 'WashHandsRequest' => Object.new, 'WashHandsResponse' => Object.new }
|
16
|
-
@types[n]
|
17
|
-
end
|
18
|
-
|
19
|
-
parser.operations = {
|
9
|
+
let(:parser) do
|
10
|
+
OpenStruct.new(
|
11
|
+
:namespaces => { 'bla' => namespace },
|
12
|
+
:operations => {
|
20
13
|
'washHands' => {
|
21
14
|
:action => 'urn:washHands',
|
22
|
-
:input =>
|
23
|
-
:output =>
|
15
|
+
:input => 'bla:Brush',
|
16
|
+
:output => 'bla:Color'
|
24
17
|
}
|
25
|
-
}
|
26
|
-
|
27
|
-
|
28
|
-
describe '#operations' do
|
29
|
-
it 'returns a hash of operations' do
|
30
|
-
subject.operations.length.must_equal 1
|
31
|
-
subject.operations['washHands'].tap do |op|
|
32
|
-
op.wsdl.must_equal subject
|
33
|
-
op.action.must_equal "urn:washHands"
|
34
|
-
op.input.must_equal subject.types['WashHandsRequest']
|
35
|
-
op.output.must_equal subject.types['WashHandsResponse']
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
describe '#operation' do
|
41
|
-
it 'returns a single operation' do
|
42
|
-
subject.operation('washHands').must_equal subject.operations['washHands']
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
describe '#endpoint' do
|
48
|
-
it 'returns the endpoint' do
|
49
|
-
parser.endpoint = 'http://lolsoap.api/v1'
|
50
|
-
subject.endpoint.must_equal 'http://lolsoap.api/v1'
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
describe '#namespaces' do
|
55
|
-
it 'returns a namespaces hash' do
|
56
|
-
subject.namespaces.must_equal({ 'bla' => namespace })
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
describe '#prefixes' do
|
61
|
-
it 'returns the prefixes-to-namespace mapping' do
|
62
|
-
subject.prefixes.must_equal({ namespace => 'bla' })
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
describe 'with types' do
|
67
|
-
before do
|
68
|
-
parser.types = {
|
69
|
-
'Brush' => {
|
18
|
+
},
|
19
|
+
:types => {
|
20
|
+
'bla:Brush' => {
|
70
21
|
:elements => {
|
71
22
|
'handleColor' => {
|
72
|
-
:name => 'handleColor',
|
73
23
|
:type => 'bla:Color',
|
74
24
|
:singular => true
|
75
25
|
},
|
76
26
|
'age' => {
|
77
|
-
:name => 'age',
|
78
27
|
:type => 'xs:int',
|
79
28
|
:singular => false
|
80
29
|
}
|
81
30
|
},
|
82
|
-
:
|
31
|
+
:attributes => ['id'],
|
32
|
+
:prefix => 'bla'
|
83
33
|
},
|
84
|
-
'Color' => {
|
34
|
+
'bla:Color' => {
|
85
35
|
:elements => {
|
86
36
|
'name' => {
|
87
|
-
:name => 'name',
|
88
37
|
:type => 'xs:string',
|
89
38
|
:singular => true
|
90
39
|
},
|
91
40
|
'hex' => {
|
92
|
-
:name => 'hex',
|
93
41
|
:type => 'xs:string',
|
94
42
|
:singular => true
|
95
43
|
}
|
96
44
|
},
|
97
|
-
:
|
45
|
+
:attributes => [],
|
46
|
+
:prefix => 'bla'
|
98
47
|
}
|
99
48
|
}
|
49
|
+
)
|
50
|
+
end
|
51
|
+
|
52
|
+
subject { WSDL.new(parser) }
|
53
|
+
|
54
|
+
describe '#operations' do
|
55
|
+
it 'returns a hash of operations' do
|
56
|
+
subject.operations.length.must_equal 1
|
57
|
+
subject.operations['washHands'].tap do |op|
|
58
|
+
op.wsdl.must_equal subject
|
59
|
+
op.action.must_equal "urn:washHands"
|
60
|
+
op.input.must_equal subject.types['bla:Brush']
|
61
|
+
op.output.must_equal subject.types['bla:Color']
|
62
|
+
end
|
100
63
|
end
|
64
|
+
end
|
101
65
|
|
102
|
-
|
103
|
-
|
104
|
-
|
66
|
+
describe '#operation' do
|
67
|
+
it 'returns a single operation' do
|
68
|
+
subject.operation('washHands').must_equal subject.operations['washHands']
|
69
|
+
end
|
70
|
+
end
|
105
71
|
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
t.element('age').singular?.must_equal false
|
113
|
-
end
|
72
|
+
describe '#endpoint' do
|
73
|
+
it 'returns the endpoint' do
|
74
|
+
parser.endpoint = 'http://lolsoap.api/v1'
|
75
|
+
subject.endpoint.must_equal 'http://lolsoap.api/v1'
|
76
|
+
end
|
77
|
+
end
|
114
78
|
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
t.element('name').type.must_equal WSDL::NullType.new
|
119
|
-
t.element('hex').type.must_equal WSDL::NullType.new
|
120
|
-
end
|
121
|
-
end
|
79
|
+
describe '#namespaces' do
|
80
|
+
it 'returns a namespaces hash' do
|
81
|
+
subject.namespaces.must_equal({ 'bla' => namespace })
|
122
82
|
end
|
83
|
+
end
|
123
84
|
|
124
|
-
|
125
|
-
|
126
|
-
|
85
|
+
describe '#types' do
|
86
|
+
it 'returns a hash of types' do
|
87
|
+
subject.types.length.must_equal 2
|
88
|
+
|
89
|
+
subject.types['bla:Brush'].tap do |t|
|
90
|
+
t.elements.length.must_equal 2
|
91
|
+
t.element('handleColor').type.must_equal subject.types['bla:Color']
|
92
|
+
t.element('handleColor').singular?.must_equal true
|
93
|
+
t.element('age').type.must_equal WSDL::NullType.new
|
94
|
+
t.element('age').singular?.must_equal false
|
95
|
+
t.attributes.must_equal ['id']
|
127
96
|
end
|
128
97
|
|
129
|
-
|
130
|
-
|
98
|
+
subject.types['bla:Color'].tap do |t|
|
99
|
+
t.elements.length.must_equal 2
|
100
|
+
t.element('name').type.must_equal WSDL::NullType.new
|
101
|
+
t.element('hex').type.must_equal WSDL::NullType.new
|
131
102
|
end
|
132
103
|
end
|
104
|
+
end
|
133
105
|
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
106
|
+
describe '#type' do
|
107
|
+
it 'returns a single type' do
|
108
|
+
subject.type('bla:Color').must_equal subject.types['bla:Color']
|
109
|
+
end
|
110
|
+
|
111
|
+
it 'returns a null object if a type is missing' do
|
112
|
+
subject.type('FooBar').must_equal WSDL::NullType.new
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
describe '#type_namespaces' do
|
117
|
+
it 'returns only the namespaces that are used by types' do
|
118
|
+
parser.namespaces['foo'] = 'bar'
|
119
|
+
subject.type_namespaces.must_equal 'bla' => namespace
|
139
120
|
end
|
140
121
|
end
|
141
122
|
end
|
@@ -3,7 +3,12 @@ require 'lolsoap/wsdl_parser'
|
|
3
3
|
|
4
4
|
module LolSoap
|
5
5
|
describe WSDLParser do
|
6
|
-
|
6
|
+
def raw_doc
|
7
|
+
File.read(TEST_ROOT + '/fixtures/stock_quote.wsdl')
|
8
|
+
end
|
9
|
+
|
10
|
+
let(:doc) { Nokogiri::XML(raw_doc) }
|
11
|
+
|
7
12
|
subject { WSDLParser.new(doc) }
|
8
13
|
|
9
14
|
describe '#namespaces' do
|
@@ -12,7 +17,9 @@ module LolSoap
|
|
12
17
|
'tns' => 'http://example.com/stockquote.wsdl',
|
13
18
|
'xsd1' => 'http://example.com/stockquote.xsd',
|
14
19
|
'xsd2' => 'http://example.com/stockquote2.xsd',
|
15
|
-
'
|
20
|
+
'xsd3' => 'http://example.com/stockquote.xsd',
|
21
|
+
'soap' => 'http://schemas.xmlsoap.org/wsdl/soap12/',
|
22
|
+
'xs' => 'http://www.w3.org/2001/XMLSchema'
|
16
23
|
})
|
17
24
|
end
|
18
25
|
end
|
@@ -26,43 +33,42 @@ module LolSoap
|
|
26
33
|
describe '#types' do
|
27
34
|
it 'returns the types, with attributes and namespace' do
|
28
35
|
subject.types.must_equal({
|
29
|
-
'TradePriceRequest' => {
|
30
|
-
:
|
31
|
-
:
|
32
|
-
:elements
|
36
|
+
'xsd1:TradePriceRequest' => {
|
37
|
+
:prefix => 'xsd1',
|
38
|
+
:name => 'TradePriceRequest',
|
39
|
+
:elements => {
|
33
40
|
'tickerSymbol' => {
|
34
|
-
:
|
35
|
-
:type => 'string',
|
41
|
+
:type => 'xs:string',
|
36
42
|
:singular => false
|
37
43
|
},
|
38
44
|
'specialTickerSymbol' => {
|
39
|
-
:name => 'specialTickerSymbol',
|
40
45
|
:type => 'xsd2:TickerSymbol',
|
41
46
|
:singular => false
|
42
47
|
}
|
43
|
-
}
|
48
|
+
},
|
49
|
+
:attributes => ['id']
|
44
50
|
},
|
45
|
-
'TradePrice' => {
|
46
|
-
:
|
47
|
-
:
|
48
|
-
:elements
|
51
|
+
'xsd1:TradePrice' => {
|
52
|
+
:prefix => 'xsd1',
|
53
|
+
:name => 'TradePrice',
|
54
|
+
:elements => {
|
49
55
|
'price' => {
|
50
|
-
:
|
51
|
-
:type => 'float',
|
56
|
+
:type => 'xs:float',
|
52
57
|
:singular => true
|
53
58
|
}
|
54
|
-
}
|
59
|
+
},
|
60
|
+
:attributes => []
|
55
61
|
},
|
56
|
-
'TickerSymbol' => {
|
57
|
-
:
|
58
|
-
:
|
59
|
-
:elements
|
62
|
+
'xsd2:TickerSymbol' => {
|
63
|
+
:prefix => 'xsd2',
|
64
|
+
:name => 'TickerSymbol',
|
65
|
+
:elements => {
|
60
66
|
'name' => {
|
61
|
-
:
|
62
|
-
:type => 'string',
|
67
|
+
:type => 'xs:string',
|
63
68
|
:singular => true
|
64
69
|
}
|
65
|
-
}
|
70
|
+
},
|
71
|
+
:attributes => []
|
66
72
|
}
|
67
73
|
})
|
68
74
|
end
|
@@ -71,8 +77,8 @@ module LolSoap
|
|
71
77
|
describe '#messages' do
|
72
78
|
it 'maps message names to types' do
|
73
79
|
subject.messages.must_equal({
|
74
|
-
'GetLastTradePriceInput' =>
|
75
|
-
'GetLastTradePriceOutput' =>
|
80
|
+
'GetLastTradePriceInput' => 'xsd1:TradePriceRequest',
|
81
|
+
'GetLastTradePriceOutput' => 'xsd1:TradePrice'
|
76
82
|
})
|
77
83
|
end
|
78
84
|
end
|
@@ -81,9 +87,8 @@ module LolSoap
|
|
81
87
|
it 'is a hash containing input and output types' do
|
82
88
|
subject.port_type_operations.must_equal({
|
83
89
|
'GetLastTradePrice' => {
|
84
|
-
:
|
85
|
-
:
|
86
|
-
:output => subject.types['TradePrice']
|
90
|
+
:input => 'xsd1:TradePriceRequest',
|
91
|
+
:output => 'xsd1:TradePrice'
|
87
92
|
}
|
88
93
|
})
|
89
94
|
end
|
@@ -93,13 +98,22 @@ module LolSoap
|
|
93
98
|
it 'is a hash of operations with their action and input type' do
|
94
99
|
subject.operations.must_equal({
|
95
100
|
'GetLastTradePrice' => {
|
96
|
-
:name => 'GetLastTradePrice',
|
97
101
|
:action => 'http://example.com/GetLastTradePrice',
|
98
|
-
:input =>
|
99
|
-
:output =>
|
102
|
+
:input => 'xsd1:TradePriceRequest',
|
103
|
+
:output => 'xsd1:TradePrice'
|
100
104
|
}
|
101
105
|
})
|
102
106
|
end
|
103
107
|
end
|
108
|
+
|
109
|
+
describe 'soap 1.1' do
|
110
|
+
def raw_doc
|
111
|
+
super.sub("http://schemas.xmlsoap.org/wsdl/soap12/", "http://schemas.xmlsoap.org/wsdl/soap/")
|
112
|
+
end
|
113
|
+
|
114
|
+
it 'is supported' do
|
115
|
+
subject.operations.empty?.must_equal false
|
116
|
+
end
|
117
|
+
end
|
104
118
|
end
|
105
119
|
end
|
data/test/unit/wsdl/test_type.rb
CHANGED
@@ -3,13 +3,13 @@ require 'lolsoap/wsdl'
|
|
3
3
|
|
4
4
|
class LolSoap::WSDL
|
5
5
|
describe Type do
|
6
|
-
let(:wsdl) { OpenStruct.new(:prefixes => { 'http://example.com/foo' => 'foo' }) }
|
7
6
|
let(:elements) { { 'soapColor' => OpenStruct.new(:type => Object.new) } }
|
8
|
-
|
7
|
+
|
8
|
+
subject { Type.new('WashHandsRequest', 'prfx', elements, {}) }
|
9
9
|
|
10
10
|
describe '#prefix' do
|
11
|
-
it 'returns the prefix
|
12
|
-
subject.prefix.must_equal '
|
11
|
+
it 'returns the prefix' do
|
12
|
+
subject.prefix.must_equal 'prfx'
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|