wsdl_validator 0.1.6 → 0.1.7
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.
- checksums.yaml +4 -4
- data/README.md +1 -5
- data/lib/wsdl_validator/version.rb +1 -1
- data/lib/wsdl_validator/wsdl_validator.rb +19 -6
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a5721216e68fd329ead13d82fec5844311619ca1
|
4
|
+
data.tar.gz: 664b2b8714a805638a1a007abfe4b99074017346
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 99de3efea0b7c0eb1ab80ba1197dc478eee9aed2b2986ed16d7538d8a093867842637fdc45d03d128d10e990b50b461ffc6319b2baeb203bb84db669c6045f30
|
7
|
+
data.tar.gz: 3dde01fa78cb78f157d245e2b2af649320cd45a30fd6c608e5e6b91950491864cfad3805e00d6fe0c1f7e799f4459d02e9112bdfcc43bc1784c483fe6bf6934d
|
data/README.md
CHANGED
@@ -28,11 +28,7 @@ Or install it yourself as:
|
|
28
28
|
wsdl = WsdlValidator.new('http://localhost:3333/single_schema?wsdl')
|
29
29
|
wsdl.valid? xml_message
|
30
30
|
```
|
31
|
-
=> Returns true or
|
32
|
-
|
33
|
-
# TODO
|
34
|
-
* Look up schemas that need to be imported
|
35
|
-
* Basic authentication for reading schemas
|
31
|
+
=> Returns true or raises an exception
|
36
32
|
|
37
33
|
## Development
|
38
34
|
|
@@ -3,6 +3,9 @@ require_relative 'error'
|
|
3
3
|
# Helps to validate xml against schemas contained in a WSDL
|
4
4
|
class WsdlValidator
|
5
5
|
|
6
|
+
# [String] Schemas found within WSDL
|
7
|
+
attr_accessor :show_schemas
|
8
|
+
# [Nokogiri::XML::Schema]
|
6
9
|
attr_accessor :schemas
|
7
10
|
attr_accessor :basic_auth
|
8
11
|
attr_accessor :doc
|
@@ -12,7 +15,8 @@ class WsdlValidator
|
|
12
15
|
def initialize(wsdl_url)
|
13
16
|
self.basic_auth = extract_auth(wsdl_url)
|
14
17
|
self.doc = Wasabi.document wsdl_url
|
15
|
-
self.
|
18
|
+
self.show_schemas = parse_wsdl_schemas
|
19
|
+
self.schemas = Nokogiri::XML::Schema(show_schemas)
|
16
20
|
rescue Wasabi::Resolver::HTTPError => e
|
17
21
|
raise WsdlValidator::Error, "Unauthorized for basic auth #{basic_auth}" if e.response.code == 401
|
18
22
|
raise e
|
@@ -30,22 +34,31 @@ class WsdlValidator
|
|
30
34
|
Nokogiri::XML root_element.to_s # Convert to Xml Document
|
31
35
|
end
|
32
36
|
|
37
|
+
# Returns a list of syntax errors. Empty list indicates valid xml
|
33
38
|
# @param [String, Nokogiri::XML::NodeSet] xml
|
34
|
-
# @return [
|
35
|
-
def
|
39
|
+
# @return [Array] List of Nokogiri::XML::SyntaxError objects
|
40
|
+
def errors_for(xml)
|
36
41
|
raise "Incorrect type #{xml.class}" unless [String, Nokogiri::XML::Document, Nokogiri::XML::NodeSet].include? xml.class
|
37
42
|
xml_under_test = Nokogiri::XML(xml.to_s)
|
38
43
|
soap_envelope = xml_under_test.children.find { |e| e.name == 'Envelope' }
|
39
44
|
xml_under_test = extract_root_from_soap(soap_envelope) if soap_envelope
|
40
|
-
|
45
|
+
schemas.validate(xml_under_test)
|
46
|
+
end
|
47
|
+
|
48
|
+
# @param [String, Nokogiri::XML::NodeSet] xml
|
49
|
+
# @return [Boolean, Exception] Whether xml is valid according to WSDL of class
|
50
|
+
def valid?(xml)
|
51
|
+
validator = errors_for xml
|
41
52
|
raise WsdlValidator::Error, validator.join unless validator.empty?
|
42
53
|
true
|
43
54
|
end
|
44
55
|
|
56
|
+
alias validate valid?
|
57
|
+
|
45
58
|
private
|
46
59
|
|
47
|
-
# Returns
|
48
|
-
# @return [Array] Format is
|
60
|
+
# Returns an Array with basic auth in it
|
61
|
+
# @return [Array] Format is [user_name, password] or []
|
49
62
|
def extract_auth(wsdl_location)
|
50
63
|
return [] unless wsdl_location.to_s =~ /^http|socks/
|
51
64
|
url = wsdl_location.is_a?(URI) ? wsdl_location : URI(wsdl_location)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wsdl_validator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Samuel Garratt
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-08-
|
11
|
+
date: 2018-08-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httpi
|