wsdl-reader 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/.idea/workspace.xml +0 -683
- data/lib/wsdl-reader.rb +1 -0
- data/lib/wsdl-reader/binding.rb +44 -21
- data/lib/wsdl-reader/error.rb +24 -0
- data/lib/wsdl-reader/message.rb +33 -3
- data/lib/wsdl-reader/operation.rb +85 -0
- data/lib/wsdl-reader/parser.rb +4 -2
- data/lib/wsdl-reader/port_type.rb +42 -10
- data/lib/wsdl-reader/version.rb +1 -1
- data/spec/binding_spec.rb +20 -20
- data/spec/fixtures/UserService.wsdl +24 -11
- data/spec/message_spec.rb +24 -5
- data/spec/operation_spec.rb +38 -0
- data/spec/parser_spec.rb +21 -16
- data/spec/port_type_spec.rb +34 -10
- metadata +11 -8
@@ -10,31 +10,31 @@
|
|
10
10
|
</xs:schema>
|
11
11
|
</types>
|
12
12
|
|
13
|
-
<message name="
|
13
|
+
<message name="getFirstNameRequest">
|
14
14
|
<part name="parameters" element="tns:GetFirstName"/>
|
15
15
|
</message>
|
16
|
-
<message name="
|
16
|
+
<message name="getLastNameRequest">
|
17
17
|
<part name="parameters" element="tns:GetLastName"/>
|
18
18
|
</message>
|
19
19
|
|
20
|
-
<message name="
|
20
|
+
<message name="userNameResponse">
|
21
21
|
<part name="parameters" element="xs:string"/>
|
22
22
|
</message>
|
23
23
|
|
24
24
|
<portType name="UserService">
|
25
|
-
<operation name="
|
26
|
-
<input message="tns:
|
27
|
-
<output message="tns:
|
25
|
+
<operation name="getFirstNameOperation">
|
26
|
+
<input message="tns:getFirstNameRequest"/>
|
27
|
+
<output message="tns:userNameResponse"/>
|
28
28
|
</operation>
|
29
|
-
<operation name="
|
30
|
-
<input message="tns:
|
31
|
-
<output message="tns:
|
29
|
+
<operation name="getLastNameOperation">
|
30
|
+
<input message="tns:getLastNameRequest"/>
|
31
|
+
<output message="tns:userNameResponse"/>
|
32
32
|
</operation>
|
33
33
|
</portType>
|
34
34
|
|
35
35
|
<binding name="UserServicePortBinding" type="tns:UserService">
|
36
36
|
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
|
37
|
-
<operation name="
|
37
|
+
<operation name="getFirstNameOperation">
|
38
38
|
<soap:operation soapAction=""/>
|
39
39
|
<input>
|
40
40
|
<soap:body use="literal"/>
|
@@ -43,7 +43,20 @@
|
|
43
43
|
<soap:body use="literal"/>
|
44
44
|
</output>
|
45
45
|
</operation>
|
46
|
-
<operation name="
|
46
|
+
<operation name="getLastNameOperation">
|
47
|
+
<soap:operation soapAction=""/>
|
48
|
+
<input>
|
49
|
+
<soap:body use="literal"/>
|
50
|
+
</input>
|
51
|
+
<output>
|
52
|
+
<soap:body use="literal"/>
|
53
|
+
</output>
|
54
|
+
</operation>
|
55
|
+
</binding>
|
56
|
+
|
57
|
+
<binding name="UserServicePortBinding2" type="tns:UserService">
|
58
|
+
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
|
59
|
+
<operation name="getLastNameOperation">
|
47
60
|
<soap:operation soapAction=""/>
|
48
61
|
<input>
|
49
62
|
<soap:body use="literal"/>
|
data/spec/message_spec.rb
CHANGED
@@ -3,20 +3,39 @@ require "spec_helper"
|
|
3
3
|
describe "WSDL Messages" do
|
4
4
|
|
5
5
|
context "WSDL::Reader::Messages" do
|
6
|
-
|
7
|
-
|
6
|
+
let(:parser) { WSDL::Reader::Parser.new('spec/fixtures/UserService.wsdl') }
|
7
|
+
subject { parser.messages }
|
8
|
+
|
9
|
+
it "should be kind of WSDL::Reader::Messages" do
|
10
|
+
subject.should be_kind_of WSDL::Reader::Messages
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should be kind of Hash" do
|
14
|
+
subject.should be_kind_of Hash
|
15
|
+
end
|
16
|
+
|
17
|
+
it "#lookup_messages_by_element should return operation name by given element name" do
|
18
|
+
messages = subject.lookup_messages_by_element("GetFirstName")
|
19
|
+
messages.count.should eq 1
|
20
|
+
messages.first.name.should eq "getFirstNameRequest"
|
21
|
+
end
|
22
|
+
|
23
|
+
it "#lookup_operations_by_element should return operation name by given element name" do
|
24
|
+
operations = subject.lookup_operations_by_element(:input, "GetFirstName", parser.port_types)
|
25
|
+
operations.count.should eq 1
|
26
|
+
operations.first.should eq "getFirstNameOperation"
|
8
27
|
end
|
28
|
+
|
9
29
|
end
|
10
30
|
|
11
31
|
context "WSDL::Reader::Message" do
|
12
32
|
subject do
|
13
33
|
parser = WSDL::Reader::Parser.new('spec/fixtures/UserService.wsdl')
|
14
|
-
|
15
|
-
WSDL::Reader::Message.new(element)
|
34
|
+
parser.messages.first.last
|
16
35
|
end
|
17
36
|
|
18
37
|
its(:parts) { should eq "parameters" => { name: "parameters", element: "tns:GetFirstName", mode: :element } }
|
19
|
-
its(:name) { should eq "
|
38
|
+
its(:name) { should eq "getFirstNameRequest" }
|
20
39
|
end
|
21
40
|
|
22
41
|
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe "WSDL Operation" do
|
4
|
+
let(:parser) { WSDL::Reader::Parser.new('spec/fixtures/UserService.wsdl') }
|
5
|
+
let(:binding) { parser.bindings['UserServicePortBinding'] }
|
6
|
+
let(:messages) { parser.messages }
|
7
|
+
subject { binding.operations['getFirstNameOperation'] }
|
8
|
+
|
9
|
+
it "should be WSDL::Reader::Operation instance" do
|
10
|
+
should be_a WSDL::Reader::Operation
|
11
|
+
end
|
12
|
+
|
13
|
+
its :name do
|
14
|
+
should eql "getFirstNameOperation"
|
15
|
+
end
|
16
|
+
|
17
|
+
its :method_name do
|
18
|
+
should eql "get_first_name_operation"
|
19
|
+
end
|
20
|
+
|
21
|
+
its :binding do
|
22
|
+
should be binding
|
23
|
+
end
|
24
|
+
|
25
|
+
its :soap_action do
|
26
|
+
should eq ""
|
27
|
+
end
|
28
|
+
|
29
|
+
its :style do
|
30
|
+
should eq nil
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should lookup message from given messages" do
|
34
|
+
element = subject.lookup_element(parser.port_types, parser.messages)
|
35
|
+
element.should eq "GetFirstName"
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
data/spec/parser_spec.rb
CHANGED
@@ -11,51 +11,56 @@ describe "WSDL Parser" do
|
|
11
11
|
subject { parser }
|
12
12
|
|
13
13
|
context "attributes types" do
|
14
|
-
it { should
|
14
|
+
it { should be_kind_of WSDL::Reader::Parser }
|
15
15
|
|
16
|
-
its(:document) { should
|
16
|
+
its(:document) { should be_kind_of REXML::Document }
|
17
17
|
|
18
|
-
its(:prefixes) { should
|
18
|
+
its(:prefixes) { should be_kind_of Hash }
|
19
19
|
|
20
|
-
its(:target_namespace) { should
|
20
|
+
its(:target_namespace) { should be_kind_of String }
|
21
21
|
|
22
|
-
its(:types) { should
|
22
|
+
its(:types) { should be_kind_of SOAP::XSD }
|
23
23
|
|
24
|
-
its(:messages) { should
|
24
|
+
its(:messages) { should be_kind_of WSDL::Reader::Messages }
|
25
25
|
|
26
|
-
its(:port_types) { should
|
26
|
+
its(:port_types) { should be_kind_of WSDL::Reader::PortTypes }
|
27
27
|
|
28
|
-
its(:bindings) { should
|
28
|
+
its(:bindings) { should be_kind_of WSDL::Reader::Bindings }
|
29
29
|
|
30
|
-
its(:services) { should
|
30
|
+
its(:services) { should be_kind_of SOAP::WSDL::Services }
|
31
31
|
end
|
32
32
|
|
33
33
|
context "attributes values" do
|
34
34
|
#its(:document) { clean_xml(subject.document.to_s).should eql clean_xml(File.read('spec/fixtures/UserService.wsdl')) }
|
35
35
|
|
36
36
|
its(:prefixes) do
|
37
|
-
should eq "soap"
|
38
|
-
|
39
|
-
|
40
|
-
|
37
|
+
should eq "soap" => "http://schemas.xmlsoap.org/wsdl/soap/",
|
38
|
+
"tns" => "http://example.com/UserService/",
|
39
|
+
"xs" => "http://www.w3.org/2001/XMLSchema",
|
40
|
+
"__default__" => "http://schemas.xmlsoap.org/wsdl/"
|
41
41
|
end
|
42
42
|
|
43
43
|
its(:target_namespace) { should eq "http://example.com/UserService/" }
|
44
44
|
|
45
45
|
its(:types) { should eq SOAP::XSD.new }
|
46
46
|
|
47
|
-
its('messages.keys') { should eq %w{
|
47
|
+
its('messages.keys') { should eq %w{getFirstNameRequest getLastNameRequest userNameResponse} }
|
48
48
|
|
49
49
|
its('port_types.keys') { should eq %w{UserService} }
|
50
50
|
|
51
|
-
its('bindings.keys') { should eq %w{UserServicePortBinding} }
|
51
|
+
its('bindings.keys') { should eq %w{UserServicePortBinding UserServicePortBinding2} }
|
52
52
|
|
53
53
|
its('services.keys') { should eq %w{UserService} }
|
54
54
|
end
|
55
55
|
|
56
56
|
context "methods" do
|
57
57
|
|
58
|
-
its(:
|
58
|
+
its(:operations) { should eql parser.bindings.operations }
|
59
|
+
|
60
|
+
it "should delegate lookup_operation_by_element! to messages" do
|
61
|
+
subject.messages.should_receive(:lookup_operation_by_element!).with(1,2,3)
|
62
|
+
subject.lookup_operation_by_element! 1,2,3
|
63
|
+
end
|
59
64
|
|
60
65
|
end
|
61
66
|
end
|
data/spec/port_type_spec.rb
CHANGED
@@ -3,30 +3,54 @@ require "spec_helper"
|
|
3
3
|
describe "WSDL PortType" do
|
4
4
|
|
5
5
|
def user_service_port_type
|
6
|
-
{"
|
7
|
-
|
8
|
-
|
6
|
+
{ "getFirstNameOperation" => { :name => "getFirstNameOperation",
|
7
|
+
:input => { :message => "tns:getFirstNameRequest" },
|
8
|
+
:output => { :message => "tns:userNameResponse" } },
|
9
9
|
|
10
|
-
|
11
|
-
|
12
|
-
|
10
|
+
"getLastNameOperation" => { :name => "getLastNameOperation",
|
11
|
+
:input => { :message => "tns:getLastNameRequest" },
|
12
|
+
:output => { :message => "tns:userNameResponse" } }
|
13
13
|
}
|
14
14
|
end
|
15
15
|
|
16
|
+
let(:parser) { WSDL::Reader::Parser.new('spec/fixtures/UserService.wsdl') }
|
17
|
+
let(:messages) { parser.messages }
|
18
|
+
let(:operation) { parser.bindings.operations['getFirstNameOperation'] }
|
19
|
+
|
16
20
|
context "WSDL::Reader::PortTypes" do
|
17
21
|
it "child of Hash" do
|
18
22
|
WSDL::Reader::PortTypes.superclass.should be Hash
|
19
23
|
end
|
24
|
+
|
25
|
+
it "should lookup operation message in all port types" do
|
26
|
+
message = parser.port_types.lookup_operation_message :input, operation, messages
|
27
|
+
message.should be_a WSDL::Reader::Message
|
28
|
+
message.name.should eq "getFirstNameRequest"
|
29
|
+
end
|
20
30
|
end
|
21
31
|
|
22
32
|
context "WSDL::Reader::PortType" do
|
33
|
+
|
23
34
|
subject do
|
24
|
-
parser
|
25
|
-
element = parser.document.root.children.find { |e| e.class == REXML::Element && e.name == 'portType' }
|
26
|
-
WSDL::Reader::PortType.new(element)
|
35
|
+
parser.port_types.values.first
|
27
36
|
end
|
28
37
|
|
29
38
|
its(:operations) { should eq user_service_port_type }
|
30
39
|
its(:name) { should eq "UserService" }
|
40
|
+
|
41
|
+
it "#operation_message? should check message in operation" do
|
42
|
+
operation = { input: { message: 'getFirstNameRequest' } }
|
43
|
+
subject.operation_message?(:input, operation, messages.values.first).should be_true
|
44
|
+
|
45
|
+
operation = { input: { message: 'getLastNameRequest' } }
|
46
|
+
subject.operation_message?(:input, operation, messages.values.first).should be_false
|
47
|
+
end
|
48
|
+
|
49
|
+
it "#lookup_operation_message should lookup message in messages for given type and operation" do
|
50
|
+
message = subject.lookup_operation_message :input, operation, messages
|
51
|
+
message.should be_a WSDL::Reader::Message
|
52
|
+
message.name.should eq "getFirstNameRequest"
|
53
|
+
end
|
54
|
+
|
31
55
|
end
|
32
|
-
end
|
56
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wsdl-reader
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-04-
|
12
|
+
date: 2012-04-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &14464320 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *14464320
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: guard-rspec
|
27
|
-
requirement: &
|
27
|
+
requirement: &14463020 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *14463020
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: activesupport
|
38
|
-
requirement: &
|
38
|
+
requirement: &14461860 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *14461860
|
47
47
|
description: Read WSDL file and parse messages, bindings, portTypes and services
|
48
48
|
email:
|
49
49
|
- a.sozontov@gmail.com
|
@@ -70,6 +70,7 @@ files:
|
|
70
70
|
- lib/wsdl-reader/core_ext.rb
|
71
71
|
- lib/wsdl-reader/error.rb
|
72
72
|
- lib/wsdl-reader/message.rb
|
73
|
+
- lib/wsdl-reader/operation.rb
|
73
74
|
- lib/wsdl-reader/parser.rb
|
74
75
|
- lib/wsdl-reader/port_type.rb
|
75
76
|
- lib/wsdl-reader/request.rb
|
@@ -90,6 +91,7 @@ files:
|
|
90
91
|
- spec/fixtures/UserService.wsdl
|
91
92
|
- spec/fixtures/UserService.xsd
|
92
93
|
- spec/message_spec.rb
|
94
|
+
- spec/operation_spec.rb
|
93
95
|
- spec/parser_spec.rb
|
94
96
|
- spec/port_type_spec.rb
|
95
97
|
- spec/request_spec.rb
|
@@ -120,3 +122,4 @@ signing_key:
|
|
120
122
|
specification_version: 3
|
121
123
|
summary: WSDL for ruby
|
122
124
|
test_files: []
|
125
|
+
has_rdoc:
|