wasabi 3.0.0 → 3.1.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/CHANGELOG.md +12 -1
- data/lib/wasabi/document.rb +7 -0
- data/lib/wasabi/parser.rb +13 -1
- data/lib/wasabi/resolver.rb +9 -2
- data/lib/wasabi/version.rb +1 -1
- data/spec/fixtures/juniper.wsdl +215 -0
- data/spec/wasabi/parser/get_servicename_spec.rb +19 -0
- data/spec/wasabi/parser/juniper_spec.rb +23 -0
- data/spec/wasabi/resolver_spec.rb +17 -0
- metadata +10 -4
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,14 @@
|
|
1
|
+
## 3.1.0 (2013-04-21)
|
2
|
+
|
3
|
+
* Feature: [#22](https://github.com/savonrb/wasabi/issues/22) added `Wasabi::Document#service_name`
|
4
|
+
to return the name of the SOAP service. Original issue: [savonrb/savon#408](https://github.com/savonrb/savon/pull/408).
|
5
|
+
|
6
|
+
* Fix: [#21](https://github.com/savonrb/wasabi/issues/21) when the Resolver gets an
|
7
|
+
erroneous response (such as a 404), we now raise a more useful HTTPError.
|
8
|
+
|
9
|
+
* Fix: [#23](https://github.com/savonrb/wasabi/issues/23) ignore extension base elements
|
10
|
+
defined in imports.
|
11
|
+
|
1
12
|
## 3.0.0 (2012-12-17)
|
2
13
|
|
3
14
|
* Updated to HTTPI 2.0 to play nicely with Savon 2.0.
|
@@ -8,7 +19,7 @@
|
|
8
19
|
finding the correct SOAP input tag and namespace identifier fails when portTypes
|
9
20
|
are imported, since imports are currently not supported.
|
10
21
|
|
11
|
-
The bug was introduced in v2.2.0 by [583cf6](https://github.com/rubiii/wasabi/commit/583cf658f1953411a7a7a4c22923fa0a046c8d6d)
|
22
|
+
The bug was introduced in v2.2.0 by [583cf6](https://github.com/rubiii/wasabi/commit/583cf658f1953411a7a7a4c22923fa0a046c8d6d)
|
12
23
|
|
13
24
|
* Refactoring: Removed `Object#blank?` core extension.
|
14
25
|
|
data/lib/wasabi/document.rb
CHANGED
@@ -76,6 +76,13 @@ module Wasabi
|
|
76
76
|
@operations ||= parser.operations
|
77
77
|
end
|
78
78
|
|
79
|
+
# Returns the service name.
|
80
|
+
def service_name
|
81
|
+
@service_name ||= parser.service_name
|
82
|
+
end
|
83
|
+
|
84
|
+
attr_writer :service_name
|
85
|
+
|
79
86
|
def type_namespaces
|
80
87
|
@type_namespaces ||= begin
|
81
88
|
namespaces = []
|
data/lib/wasabi/parser.rb
CHANGED
@@ -14,6 +14,7 @@ module Wasabi
|
|
14
14
|
self.document = document
|
15
15
|
self.operations = {}
|
16
16
|
self.namespaces = {}
|
17
|
+
self.service_name = ''
|
17
18
|
self.types = {}
|
18
19
|
self.deferred_types = []
|
19
20
|
self.element_form_default = :unqualified
|
@@ -40,12 +41,16 @@ module Wasabi
|
|
40
41
|
# Returns the SOAP endpoint.
|
41
42
|
attr_accessor :endpoint
|
42
43
|
|
44
|
+
# Returns the SOAP Service Name
|
45
|
+
attr_accessor :service_name
|
46
|
+
|
43
47
|
# Returns the elementFormDefault value.
|
44
48
|
attr_accessor :element_form_default
|
45
49
|
|
46
50
|
def parse
|
47
51
|
parse_namespaces
|
48
52
|
parse_endpoint
|
53
|
+
parse_service_name
|
49
54
|
parse_operations
|
50
55
|
parse_types
|
51
56
|
parse_deferred_types
|
@@ -75,6 +80,11 @@ module Wasabi
|
|
75
80
|
end
|
76
81
|
end
|
77
82
|
|
83
|
+
def parse_service_name
|
84
|
+
service_name = at_xpath("wsdl:definitions/@name")
|
85
|
+
@service_name = service_name.to_s if service_name
|
86
|
+
end
|
87
|
+
|
78
88
|
def parse_operations
|
79
89
|
operations = xpath("wsdl:definitions/wsdl:binding/wsdl:operation")
|
80
90
|
operations.each do |operation|
|
@@ -128,7 +138,9 @@ module Wasabi
|
|
128
138
|
if @types[base]
|
129
139
|
@types[name].merge! @types[base]
|
130
140
|
else
|
131
|
-
deferred_types << Proc.new {
|
141
|
+
deferred_types << Proc.new {
|
142
|
+
@types[name].merge! @types[base] if @types[base]
|
143
|
+
}
|
132
144
|
end
|
133
145
|
end
|
134
146
|
end
|
data/lib/wasabi/resolver.rb
CHANGED
@@ -7,7 +7,13 @@ module Wasabi
|
|
7
7
|
# Resolves local and remote WSDL documents.
|
8
8
|
class Resolver
|
9
9
|
|
10
|
-
class HTTPError < StandardError
|
10
|
+
class HTTPError < StandardError
|
11
|
+
def initialize(message, response=nil)
|
12
|
+
super(message)
|
13
|
+
@response = response
|
14
|
+
end
|
15
|
+
attr_reader :response
|
16
|
+
end
|
11
17
|
|
12
18
|
URL = /^http[s]?:/
|
13
19
|
XML = /^</
|
@@ -35,7 +41,8 @@ module Wasabi
|
|
35
41
|
request.url = document
|
36
42
|
response = HTTPI.get(request)
|
37
43
|
|
38
|
-
raise HTTPError, response if response.error?
|
44
|
+
raise HTTPError.new("Error: #{response.code}", response) if response.error?
|
45
|
+
|
39
46
|
response.body
|
40
47
|
end
|
41
48
|
|
data/lib/wasabi/version.rb
CHANGED
@@ -0,0 +1,215 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<definitions name="SystemService" targetNamespace="http://juniper.net/webproxy/systemservice" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:ns="http://schemas.xmlsoap.org/soap/encoding/" xmlns:impl="http://juniper.net/webproxy/systemservice" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:core="http://juniper.net/core" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
|
3
|
+
<types>
|
4
|
+
<xs:schema elementFormDefault="qualified" targetNamespace="http://juniper.net/webproxy/systemservice" version="1.0" xmlns="http://juniper.net/webproxy/systemservice" xmlns:core="http://juniper.net/core" xmlns:impl="http://juniper.net/webproxy/systemservice">
|
5
|
+
<xs:import namespace="http://juniper.net/core" schemaLocation="SystemService?xsd=xsd0.xsd"/>
|
6
|
+
<xs:simpleType name="LoginStatusCodeType">
|
7
|
+
<xs:restriction base="xs:token">
|
8
|
+
<xs:enumeration value="Success"/>
|
9
|
+
<xs:enumeration value="Failure"/>
|
10
|
+
<xs:enumeration value="Challenge"/>
|
11
|
+
</xs:restriction>
|
12
|
+
</xs:simpleType>
|
13
|
+
<xs:complexType name="LoginStatus">
|
14
|
+
<xs:sequence>
|
15
|
+
<xs:element name="status" type="impl:LoginStatusCodeType"/>
|
16
|
+
<xs:element minOccurs="0" name="challenge" type="xs:string"/>
|
17
|
+
</xs:sequence>
|
18
|
+
</xs:complexType>
|
19
|
+
<xs:element name="LoginRequest">
|
20
|
+
<xs:annotation>
|
21
|
+
<xs:documentation>Login into the system
|
22
|
+
|
23
|
+
domainName: the domain to login
|
24
|
+
userName: the user name
|
25
|
+
password: the password
|
26
|
+
</xs:documentation>
|
27
|
+
</xs:annotation>
|
28
|
+
<xs:complexType>
|
29
|
+
<xs:complexContent>
|
30
|
+
<xs:extension base="core:SimpleRequestType">
|
31
|
+
<xs:sequence>
|
32
|
+
<xs:element name="domainName" type="xs:string"/>
|
33
|
+
<xs:element name="userName" type="xs:string"/>
|
34
|
+
<xs:element name="password" type="xs:string"/>
|
35
|
+
</xs:sequence>
|
36
|
+
</xs:extension>
|
37
|
+
</xs:complexContent>
|
38
|
+
</xs:complexType>
|
39
|
+
</xs:element>
|
40
|
+
<xs:complexType name="LoginResponseType">
|
41
|
+
<xs:annotation>
|
42
|
+
<xs:documentation>The response of the login request
|
43
|
+
|
44
|
+
loginStatus: if the status is Success, a valid token is returned for requests followed, if the status is Challenge, the response to the challenge shall be sent
|
45
|
+
authToken: the token used by the further requests
|
46
|
+
</xs:documentation>
|
47
|
+
</xs:annotation>
|
48
|
+
<xs:complexContent>
|
49
|
+
<xs:extension base="core:SimpleResponseType">
|
50
|
+
<xs:sequence>
|
51
|
+
<xs:element name="loginStatus" type="impl:LoginStatus"/>
|
52
|
+
<xs:element minOccurs="0" name="authToken" type="core:AuthTokenType"/>
|
53
|
+
</xs:sequence>
|
54
|
+
</xs:extension>
|
55
|
+
</xs:complexContent>
|
56
|
+
</xs:complexType>
|
57
|
+
<xs:element name="LoginResponse" type="impl:LoginResponseType"/>
|
58
|
+
<xs:element name="RespondToChallengeRequest">
|
59
|
+
<xs:annotation>
|
60
|
+
<xs:documentation>Send the response to the challenge
|
61
|
+
</xs:documentation>
|
62
|
+
</xs:annotation>
|
63
|
+
<xs:complexType>
|
64
|
+
<xs:complexContent>
|
65
|
+
<xs:extension base="core:SimpleRequestType">
|
66
|
+
<xs:sequence>
|
67
|
+
<xs:element name="challengeResponse" type="xs:string"/>
|
68
|
+
</xs:sequence>
|
69
|
+
</xs:extension>
|
70
|
+
</xs:complexContent>
|
71
|
+
</xs:complexType>
|
72
|
+
</xs:element>
|
73
|
+
<xs:element name="RespondToChallengeResponse" type="impl:LoginResponseType"/>
|
74
|
+
<xs:element name="LogoutRequest">
|
75
|
+
<xs:complexType>
|
76
|
+
<xs:complexContent>
|
77
|
+
<xs:extension base="core:SimpleRequestType"/>
|
78
|
+
</xs:complexContent>
|
79
|
+
</xs:complexType>
|
80
|
+
</xs:element>
|
81
|
+
<xs:complexType name="ServiceDescType">
|
82
|
+
<xs:sequence>
|
83
|
+
<xs:element name="name" type="xs:string"/>
|
84
|
+
<xs:element name="version" type="xs:string"/>
|
85
|
+
<xs:element name="definition" type="xs:string"/>
|
86
|
+
</xs:sequence>
|
87
|
+
</xs:complexType>
|
88
|
+
<xs:element name="GetSystemInfoRequest">
|
89
|
+
<xs:complexType>
|
90
|
+
<xs:annotation>
|
91
|
+
<xs:documentation>Get the system informations: the service description and all the accessible domain ids and names. If no service name is specified, return the service description of all services
|
92
|
+
</xs:documentation>
|
93
|
+
</xs:annotation>
|
94
|
+
<xs:complexContent>
|
95
|
+
<xs:extension base="core:SimpleRequestType">
|
96
|
+
<xs:sequence>
|
97
|
+
<xs:element maxOccurs="unbounded" minOccurs="0" name="serviceName" type="xs:string"/>
|
98
|
+
</xs:sequence>
|
99
|
+
</xs:extension>
|
100
|
+
</xs:complexContent>
|
101
|
+
</xs:complexType>
|
102
|
+
</xs:element>
|
103
|
+
<xs:element name="GetSystemInfoResponse">
|
104
|
+
<xs:complexType>
|
105
|
+
<xs:annotation>
|
106
|
+
<xs:documentation>Return the service list and all the accessible domain ids and names
|
107
|
+
</xs:documentation>
|
108
|
+
</xs:annotation>
|
109
|
+
<xs:complexContent>
|
110
|
+
<xs:extension base="core:SimpleResponseType">
|
111
|
+
<xs:sequence>
|
112
|
+
<xs:element maxOccurs="unbounded" minOccurs="0" name="serviceDesc" type="impl:ServiceDescType"/>
|
113
|
+
<xs:element maxOccurs="unbounded" name="domainName" type="xs:string"/>
|
114
|
+
<xs:element maxOccurs="unbounded" name="domainId" type="xs:unsignedInt"/>
|
115
|
+
</xs:sequence>
|
116
|
+
</xs:extension>
|
117
|
+
</xs:complexContent>
|
118
|
+
</xs:complexType>
|
119
|
+
</xs:element>
|
120
|
+
</xs:schema>
|
121
|
+
</types>
|
122
|
+
<message name="LoginRequest">
|
123
|
+
<part name="LoginRequest" element="impl:LoginRequest">
|
124
|
+
</part>
|
125
|
+
</message>
|
126
|
+
<message name="RespondToChallengeRequest">
|
127
|
+
<part name="RespondToChallengeRequest" element="impl:RespondToChallengeRequest">
|
128
|
+
</part>
|
129
|
+
</message>
|
130
|
+
<message name="LoginResponse">
|
131
|
+
<part name="LoginRequest" element="impl:LoginResponse">
|
132
|
+
</part>
|
133
|
+
</message>
|
134
|
+
<message name="LogoutRequest">
|
135
|
+
<part name="LogoutRequest" element="impl:LogoutRequest">
|
136
|
+
</part>
|
137
|
+
</message>
|
138
|
+
<message name="RespondToChallengeResponse">
|
139
|
+
<part name="RespondToChallengeResponse" element="impl:RespondToChallengeResponse">
|
140
|
+
</part>
|
141
|
+
</message>
|
142
|
+
<message name="GetSystemInfoResponse">
|
143
|
+
<part name="GetSystemInfoResponse" element="impl:GetSystemInfoResponse">
|
144
|
+
</part>
|
145
|
+
</message>
|
146
|
+
<message name="GetSystemInfoRequest">
|
147
|
+
<part name="GetSystemInfoRequest" element="impl:GetSystemInfoRequest">
|
148
|
+
</part>
|
149
|
+
</message>
|
150
|
+
<portType name="SystemPortType">
|
151
|
+
<operation name="LoginRequest">
|
152
|
+
<input message="impl:LoginRequest">
|
153
|
+
</input>
|
154
|
+
<output message="impl:LoginResponse">
|
155
|
+
</output>
|
156
|
+
</operation>
|
157
|
+
<operation name="RespondToChallengeRequest">
|
158
|
+
<input message="impl:RespondToChallengeRequest">
|
159
|
+
</input>
|
160
|
+
<output message="impl:RespondToChallengeResponse">
|
161
|
+
</output>
|
162
|
+
</operation>
|
163
|
+
<operation name="LogoutRequest">
|
164
|
+
<input message="impl:LogoutRequest">
|
165
|
+
</input>
|
166
|
+
</operation>
|
167
|
+
<operation name="GetSystemInfoRequest">
|
168
|
+
<input message="impl:GetSystemInfoRequest">
|
169
|
+
</input>
|
170
|
+
<output message="impl:GetSystemInfoResponse">
|
171
|
+
</output>
|
172
|
+
</operation>
|
173
|
+
</portType>
|
174
|
+
<binding name="SystemSoapBinding" type="impl:SystemPortType">
|
175
|
+
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
|
176
|
+
<operation name="LoginRequest">
|
177
|
+
<soap:operation soapAction="urn:#LoginRequest"/>
|
178
|
+
<input>
|
179
|
+
<soap:body use="literal"/>
|
180
|
+
</input>
|
181
|
+
<output>
|
182
|
+
<soap:body use="literal"/>
|
183
|
+
</output>
|
184
|
+
</operation>
|
185
|
+
<operation name="RespondToChallengeRequest">
|
186
|
+
<soap:operation soapAction="urn:#RespondToChallengeRequest"/>
|
187
|
+
<input>
|
188
|
+
<soap:body use="literal"/>
|
189
|
+
</input>
|
190
|
+
<output>
|
191
|
+
<soap:body use="literal"/>
|
192
|
+
</output>
|
193
|
+
</operation>
|
194
|
+
<operation name="LogoutRequest">
|
195
|
+
<soap:operation soapAction="urn:#LogoutRequest"/>
|
196
|
+
<input>
|
197
|
+
<soap:body use="literal"/>
|
198
|
+
</input>
|
199
|
+
</operation>
|
200
|
+
<operation name="GetSystemInfoRequest">
|
201
|
+
<soap:operation soapAction="urn:#GetSystemInfoRequest"/>
|
202
|
+
<input>
|
203
|
+
<soap:body use="literal"/>
|
204
|
+
</input>
|
205
|
+
<output>
|
206
|
+
<soap:body use="literal"/>
|
207
|
+
</output>
|
208
|
+
</operation>
|
209
|
+
</binding>
|
210
|
+
<service name="SystemService">
|
211
|
+
<port name="System" binding="impl:SystemSoapBinding">
|
212
|
+
<soap:address location="https://10.1.1.1:8443/axis2/services/SystemService"/>
|
213
|
+
</port>
|
214
|
+
</service>
|
215
|
+
</definitions>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Wasabi::Parser do
|
4
|
+
context "with: geotrust.wsdl" do
|
5
|
+
|
6
|
+
subject do
|
7
|
+
parser = Wasabi::Parser.new Nokogiri::XML(xml)
|
8
|
+
parser.parse
|
9
|
+
parser
|
10
|
+
end
|
11
|
+
|
12
|
+
let(:xml) { fixture(:geotrust).read }
|
13
|
+
|
14
|
+
it "returns the #service_name attribute" do
|
15
|
+
subject.service_name.should == "queryDefinitions"
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Wasabi::Parser do
|
4
|
+
context 'with: juniper.wsdl' do
|
5
|
+
|
6
|
+
subject do
|
7
|
+
parser = Wasabi::Parser.new Nokogiri::XML(xml)
|
8
|
+
parser.parse
|
9
|
+
parser
|
10
|
+
end
|
11
|
+
|
12
|
+
let(:xml) { fixture(:juniper).read }
|
13
|
+
|
14
|
+
it 'does not blow up when an extension base element is defined in an import' do
|
15
|
+
request = subject.operations[:get_system_info_request]
|
16
|
+
|
17
|
+
request[:input].should == 'GetSystemInfoRequest'
|
18
|
+
request[:action].should == 'urn:#GetSystemInfoRequest'
|
19
|
+
request[:namespace_identifier].should == 'impl'
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
@@ -18,6 +18,23 @@ describe Wasabi::Resolver do
|
|
18
18
|
xml = Wasabi::Resolver.new("<xml/>").resolve
|
19
19
|
xml.should == "<xml/>"
|
20
20
|
end
|
21
|
+
|
22
|
+
it "raises HTTPError when #load_from_remote gets a response error" do
|
23
|
+
code = 404
|
24
|
+
headers = {
|
25
|
+
"content-type" => "text/html"
|
26
|
+
}
|
27
|
+
body = "<html><head><title>404 Not Found</title></head><body>Oops!</body></html>"
|
28
|
+
failed_response = HTTPI::Response.new(code, headers, body)
|
29
|
+
HTTPI.stub(:get => failed_response)
|
30
|
+
lambda do
|
31
|
+
Wasabi::Resolver.new("http://example.com?wsdl").resolve
|
32
|
+
end.should raise_error { |ex|
|
33
|
+
ex.should be_a(Wasabi::Resolver::HTTPError)
|
34
|
+
ex.message.should == "Error: #{code}"
|
35
|
+
ex.response.should == failed_response
|
36
|
+
}
|
37
|
+
end
|
21
38
|
end
|
22
39
|
|
23
40
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wasabi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-04-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: httpi
|
@@ -101,6 +101,7 @@ files:
|
|
101
101
|
- spec/fixtures/geotrust.wsdl
|
102
102
|
- spec/fixtures/import_port_types.wsdl
|
103
103
|
- spec/fixtures/inherited.wsdl
|
104
|
+
- spec/fixtures/juniper.wsdl
|
104
105
|
- spec/fixtures/lower_camel.wsdl
|
105
106
|
- spec/fixtures/multiple_namespaces.wsdl
|
106
107
|
- spec/fixtures/multiple_types.wsdl
|
@@ -124,7 +125,9 @@ files:
|
|
124
125
|
- spec/wasabi/document/soap12_spec.rb
|
125
126
|
- spec/wasabi/document/two_bindings_spec.rb
|
126
127
|
- spec/wasabi/document_spec.rb
|
128
|
+
- spec/wasabi/parser/get_servicename_spec.rb
|
127
129
|
- spec/wasabi/parser/import_port_types_spec.rb
|
130
|
+
- spec/wasabi/parser/juniper_spec.rb
|
128
131
|
- spec/wasabi/parser/multiple_namespaces_spec.rb
|
129
132
|
- spec/wasabi/parser/no_message_parts_spec.rb
|
130
133
|
- spec/wasabi/parser/no_namespace_spec.rb
|
@@ -147,7 +150,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
147
150
|
version: '0'
|
148
151
|
segments:
|
149
152
|
- 0
|
150
|
-
hash:
|
153
|
+
hash: 1638093846469018042
|
151
154
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
152
155
|
none: false
|
153
156
|
requirements:
|
@@ -156,7 +159,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
156
159
|
version: '0'
|
157
160
|
segments:
|
158
161
|
- 0
|
159
|
-
hash:
|
162
|
+
hash: 1638093846469018042
|
160
163
|
requirements: []
|
161
164
|
rubyforge_project: wasabi
|
162
165
|
rubygems_version: 1.8.24
|
@@ -168,6 +171,7 @@ test_files:
|
|
168
171
|
- spec/fixtures/geotrust.wsdl
|
169
172
|
- spec/fixtures/import_port_types.wsdl
|
170
173
|
- spec/fixtures/inherited.wsdl
|
174
|
+
- spec/fixtures/juniper.wsdl
|
171
175
|
- spec/fixtures/lower_camel.wsdl
|
172
176
|
- spec/fixtures/multiple_namespaces.wsdl
|
173
177
|
- spec/fixtures/multiple_types.wsdl
|
@@ -191,7 +195,9 @@ test_files:
|
|
191
195
|
- spec/wasabi/document/soap12_spec.rb
|
192
196
|
- spec/wasabi/document/two_bindings_spec.rb
|
193
197
|
- spec/wasabi/document_spec.rb
|
198
|
+
- spec/wasabi/parser/get_servicename_spec.rb
|
194
199
|
- spec/wasabi/parser/import_port_types_spec.rb
|
200
|
+
- spec/wasabi/parser/juniper_spec.rb
|
195
201
|
- spec/wasabi/parser/multiple_namespaces_spec.rb
|
196
202
|
- spec/wasabi/parser/no_message_parts_spec.rb
|
197
203
|
- spec/wasabi/parser/no_namespace_spec.rb
|