wsdl_validator 0.1.7 → 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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: a5721216e68fd329ead13d82fec5844311619ca1
4
- data.tar.gz: 664b2b8714a805638a1a007abfe4b99074017346
2
+ SHA256:
3
+ metadata.gz: '0397f50c93168cacf5bd628c661e8d3cfc5f8a2ce69eeb49b7e90fad6ff9b289'
4
+ data.tar.gz: c04b16e8863353ad60c93ad5a948e0fd53ae6b0feb054392b5ea2d0c5bf41194
5
5
  SHA512:
6
- metadata.gz: 99de3efea0b7c0eb1ab80ba1197dc478eee9aed2b2986ed16d7538d8a093867842637fdc45d03d128d10e990b50b461ffc6319b2baeb203bb84db669c6045f30
7
- data.tar.gz: 3dde01fa78cb78f157d245e2b2af649320cd45a30fd6c608e5e6b91950491864cfad3805e00d6fe0c1f7e799f4459d02e9112bdfcc43bc1784c483fe6bf6934d
6
+ metadata.gz: e821760df7f679d5e23e4a20cf9ea3d030f8e2e8fc3ca8a0bd66e2db1a8e8b14b98424ae700d08d77bf4664a37b78f72fbfc6723651fb34b0b9db3d840e93eaa
7
+ data.tar.gz: 86d5eb2709e464691b607a6ade9b7eabe7a2a2babfa259939bffe0abbea69af742de986a8620db41b774bcac3e38420951d355462cba433df9b31ea31d36ca6f
data/.gitignore CHANGED
@@ -10,3 +10,5 @@
10
10
  Gemfile.lock
11
11
  # rspec failure tracking
12
12
  .rspec_status
13
+
14
+ logs
data/.gitlab-ci.yml CHANGED
@@ -1,14 +1,10 @@
1
- before_script:
2
- - apt-get update -qq && apt-get install -y -qq sqlite3 libsqlite3-dev nodejs
3
- - ruby -v
4
- - which ruby
5
- - gem install bundler rake --no-ri --no-rdoc
6
- - bundle install --jobs $(nproc) "${FLAGS[@]}"
7
-
8
- rspec:
1
+ test:
2
+ image: ruby:3.3
9
3
  stage: test
10
4
  script:
11
- - bundle exec rake spec
5
+ - gem install bundler rake
6
+ - bundle install --jobs $(nproc) "${FLAGS[@]}"
7
+ - bundle exec rake
12
8
  artifacts:
13
9
  paths:
14
10
  - coverage/
@@ -16,7 +12,7 @@ rspec:
16
12
  pages:
17
13
  stage: deploy
18
14
  dependencies:
19
- - rspec
15
+ - test
20
16
  script:
21
17
  - mv coverage/ public/
22
18
  artifacts:
@@ -24,4 +20,4 @@ pages:
24
20
  - public
25
21
  expire_in: 30 days
26
22
  only:
27
- - master
23
+ - master
data/.rspec CHANGED
File without changes
data/CODE_OF_CONDUCT.md CHANGED
File without changes
data/Gemfile CHANGED
File without changes
data/LICENSE.txt CHANGED
File without changes
data/README.md CHANGED
@@ -30,6 +30,12 @@ wsdl.valid? xml_message
30
30
  ```
31
31
  => Returns true or raises an exception
32
32
 
33
+ ## Todo
34
+
35
+ Validate
36
+
37
+ * Including the SOAP header/body message structure.
38
+
33
39
  ## Development
34
40
 
35
41
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
data/Rakefile CHANGED
File without changes
File without changes
@@ -1,3 +1,4 @@
1
1
  class WsdlValidator
2
- VERSION = '0.1.7'.freeze
2
+ # Version of Gem
3
+ VERSION = '0.2.0'.freeze
3
4
  end
@@ -17,9 +17,12 @@ class WsdlValidator
17
17
  self.doc = Wasabi.document wsdl_url
18
18
  self.show_schemas = parse_wsdl_schemas
19
19
  self.schemas = Nokogiri::XML::Schema(show_schemas)
20
- rescue Wasabi::Resolver::HTTPError => e
21
- raise WsdlValidator::Error, "Unauthorized for basic auth #{basic_auth}" if e.response.code == 401
22
- raise e
20
+ rescue Wasabi::Resolver::HTTPError => resolver
21
+ raise WsdlValidator::Error, "Unauthorized for basic auth #{basic_auth}" if resolver.response.status == 401
22
+ raise resolver
23
+ rescue Nokogiri::XML::SyntaxError => syntax_error
24
+ puts "Error for #{show_schemas}"
25
+ raise syntax_error
23
26
  end
24
27
 
25
28
  # Gets the namespaces from the SOAP Envelope & Body element, adds them to the root element underneath the body
@@ -55,6 +58,11 @@ class WsdlValidator
55
58
 
56
59
  alias validate valid?
57
60
 
61
+ # @return [Hash] All namespaces defined throughout Wsdl
62
+ def namespaces
63
+ doc.parser.document.collect_namespaces
64
+ end
65
+
58
66
  private
59
67
 
60
68
  # Returns an Array with basic auth in it
@@ -70,18 +78,34 @@ class WsdlValidator
70
78
  end
71
79
 
72
80
  # Join all the schemas within the WSDL, importing schemas if necessary
73
- # @return [String] Schemas contained within WSDL
81
+ # @return [String] Schema XML contained within WSDL
74
82
  def parse_wsdl_schemas
75
83
  doc.parser.schemas.collect do |schema|
76
84
  imports = schema.children.select { |child| child.name == 'import' }
77
- imported_xsds = imports.collect do |import|
78
- extract_schema_for(import)
79
- end.join
80
- schema = Nokogiri::XML(imported_xsds).children unless imported_xsds.empty?
81
- schema.to_s
85
+ if imports.empty?
86
+ add_global_namespace_to schema
87
+ else
88
+ imported_xsds = imports.collect { |import| extract_schema_for(import) }.join
89
+ add_namespaces_to Nokogiri::XML(imported_xsds).children
90
+ end
82
91
  end.join
83
92
  end
84
93
 
94
+ # For each of the schemas add the namespaces defined in the WSDL
95
+ # @param [Nokogiri::XML::NodeSet] schemas Xsd schemas
96
+ # @return [String] Add namespaces from WSDL to each schema passed
97
+ def add_namespaces_to(schemas)
98
+ schemas.collect { |schema| add_global_namespace_to(schema) }.join
99
+ end
100
+
101
+ # Add namespaces from wsdl document to each schema
102
+ # Sometimes schemas are defined there and referenced within the types
103
+ # @return [String] String representing XML with global schemas added
104
+ def add_global_namespace_to(schema)
105
+ namespaces.each { |namespace, value| schema[namespace] = value }
106
+ schema.to_s
107
+ end
108
+
85
109
  # Makes a GET request returning the xsd from the defined location
86
110
  # @return [String] Schema from location defined in 'schemaLocation' attribute
87
111
  def extract_schema_for(import)
File without changes
@@ -1,4 +1,3 @@
1
-
2
1
  lib = File.expand_path('lib', __dir__)
3
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
3
  require 'wsdl_validator/version'
@@ -26,9 +25,11 @@ Gem::Specification.new do |spec|
26
25
  spec.add_dependency 'nokogiri'
27
26
  spec.add_dependency 'wasabi'
28
27
 
29
- spec.add_development_dependency 'bundler', '~> 1.16'
30
- spec.add_development_dependency 'rake', '~> 10.0'
28
+ spec.add_development_dependency 'bundler'
29
+ spec.add_development_dependency 'rake'
30
+ spec.add_development_dependency 'rackup'
31
31
  spec.add_development_dependency 'rspec', '~> 3.0'
32
+ spec.add_development_dependency 'savon'
32
33
  spec.add_development_dependency 'simplecov'
33
34
  spec.add_development_dependency 'sinatra'
34
35
  spec.add_development_dependency 'sinatra-basic-auth'
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.7
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Garratt
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-08-30 00:00:00.000000000 Z
11
+ date: 2024-07-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httpi
@@ -56,30 +56,44 @@ dependencies:
56
56
  name: bundler
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: '1.16'
61
+ version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: '1.16'
68
+ version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rake
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
- version: '10.0'
75
+ version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - "~>"
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rackup
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
81
95
  - !ruby/object:Gem::Version
82
- version: '10.0'
96
+ version: '0'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: rspec
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -94,6 +108,20 @@ dependencies:
94
108
  - - "~>"
95
109
  - !ruby/object:Gem::Version
96
110
  version: '3.0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: savon
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
97
125
  - !ruby/object:Gem::Dependency
98
126
  name: simplecov
99
127
  requirement: !ruby/object:Gem::Requirement
@@ -162,7 +190,7 @@ homepage: https://gitlab.com/samuel-garratt/wsdl_validator
162
190
  licenses:
163
191
  - MIT
164
192
  metadata: {}
165
- post_install_message:
193
+ post_install_message:
166
194
  rdoc_options: []
167
195
  require_paths:
168
196
  - lib
@@ -177,9 +205,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
177
205
  - !ruby/object:Gem::Version
178
206
  version: '0'
179
207
  requirements: []
180
- rubyforge_project:
181
- rubygems_version: 2.6.14
182
- signing_key:
208
+ rubygems_version: 3.2.3
209
+ signing_key:
183
210
  specification_version: 4
184
211
  summary: Makes verifying a SOAP message against a WSDL easy.
185
212
  test_files: []