soaspec 0.0.51 → 0.0.52
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/ChangeLog +5 -1
- data/Gemfile.lock +1 -1
- data/lib/soaspec.rb +1 -1
- data/lib/soaspec/{hash_methods.rb → core_ext/hash.rb} +0 -0
- data/lib/soaspec/exchange_handlers/exchange_handler.rb +1 -1
- data/lib/soaspec/exchange_handlers/handler_accessors.rb +14 -1
- data/lib/soaspec/exchange_handlers/rest_handler.rb +1 -1
- data/lib/soaspec/exchange_handlers/soap_handler.rb +12 -8
- data/lib/soaspec/matchers.rb +1 -3
- data/lib/soaspec/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4911806fb7e9d447b98f407491c2de192f458440
|
4
|
+
data.tar.gz: 4674407c680162fb21d61e0c9d2d61e27fca641f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 179745c8a33ec800887bc6d0ee6e30616a4ba348fa6f461e7e94b58a211a060cd52dfeefe7dbf0833c5270ee642b370a954af8e793467b684323e820f1855ae0
|
7
|
+
data.tar.gz: 9bfbe31e1b78028e9a51470be0d43c7b5c0c31e897484bdf9ace7adac1a381f9d5964f20b08e72c6e88df101f212e649b9bd8a1c393cfb17b8cad31cc96fc39e
|
data/ChangeLog
CHANGED
@@ -1,7 +1,11 @@
|
|
1
|
+
Version 0.0.52
|
2
|
+
* Enhancements
|
3
|
+
* Now have 'attribute' accessor making it easy to access an attribute from a response
|
4
|
+
|
1
5
|
Version 0.0.51
|
2
6
|
* Enhancements
|
3
7
|
* Allow for 'default_hash=' method to be used in RestHandler. See 'many_calls_one_method_spec' for example
|
4
|
-
* Got element accessor working correctly (See soap/hash_spec.rb + 'blz_service' for example)
|
8
|
+
* Got 'element' accessor working correctly (See soap/hash_spec.rb + 'blz_service' for example)
|
5
9
|
|
6
10
|
Version 0.0.50
|
7
11
|
* Enhancements
|
data/Gemfile.lock
CHANGED
data/lib/soaspec.rb
CHANGED
@@ -15,7 +15,7 @@ require 'soaspec/exchange_handlers/rest_methods'
|
|
15
15
|
require 'soaspec/exchange'
|
16
16
|
require 'soaspec/matchers'
|
17
17
|
require 'soaspec/soaspec_shared_examples'
|
18
|
-
require 'soaspec/
|
18
|
+
require 'soaspec/core_ext/hash'
|
19
19
|
require 'soaspec/spec_logger'
|
20
20
|
require 'soaspec/exe_helpers'
|
21
21
|
require 'soaspec/exchange_handlers/rest_handler'
|
File without changes
|
@@ -69,7 +69,7 @@ module Soaspec
|
|
69
69
|
|
70
70
|
# Change this through 'mandatory_json_values' method to specify json results that must be present in the response
|
71
71
|
# Will be used in 'success_scenarios' shared examples
|
72
|
-
# @return [Hash] Hash of '
|
72
|
+
# @return [Hash] Hash of 'json/path' => 'expected value' pairs
|
73
73
|
def expected_mandatory_json_values
|
74
74
|
{}
|
75
75
|
end
|
@@ -60,7 +60,8 @@ module Soaspec
|
|
60
60
|
end
|
61
61
|
end
|
62
62
|
|
63
|
-
# Links a particular path to a meaningful
|
63
|
+
# Links a particular path to a meaningful method that can be accessed from Exchange class.
|
64
|
+
# This will use the 'value_from_path' method which
|
64
65
|
# should be implemented by each ExchangeHandler
|
65
66
|
# @param [String, Symbol] name Method name used to access element
|
66
67
|
# @param [String, Symbol] path Path to find object (e.g, XPath, JSONPath)
|
@@ -70,5 +71,17 @@ module Soaspec
|
|
70
71
|
end
|
71
72
|
end
|
72
73
|
|
74
|
+
# Links an attribute to a meaningful method that can be accessed from Exchange class.
|
75
|
+
# This will use the 'value_from_path' method which
|
76
|
+
# should be implemented by each ExchangeHandler
|
77
|
+
# @param [String, Symbol] name Method name used to access attribute
|
78
|
+
# @param [String, nil, Hash] attribute Attribute name. If not set, this will default to @name
|
79
|
+
def attribute(name, attribute = nil)
|
80
|
+
attribute_used = attribute ? attribute : name.to_s
|
81
|
+
define_method("__custom_path_#{name}") do |response|
|
82
|
+
value_from_path(response, 'implicit', attribute: attribute_used)
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
73
86
|
end
|
74
87
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
|
2
2
|
require_relative 'exchange_handler'
|
3
|
-
require_relative '../
|
3
|
+
require_relative '../core_ext/hash'
|
4
4
|
require_relative '../not_found_errors'
|
5
5
|
require_relative 'handler_accessors'
|
6
6
|
require_relative '../interpreter'
|
@@ -141,29 +141,33 @@ module Soaspec
|
|
141
141
|
# Returns the value at the provided xpath
|
142
142
|
# @param [Savon::Response] response
|
143
143
|
# @param [String] xpath
|
144
|
+
# @param [String] attribute Generic attribute to find
|
144
145
|
# @return [String] Value inside element found through Xpath
|
145
|
-
def xpath_value_for(response: nil, xpath: nil)
|
146
|
-
raise ArgumentError unless response && xpath
|
146
|
+
def xpath_value_for(response: nil, xpath: nil, attribute: nil)
|
147
|
+
raise ArgumentError('response and xpath must be passed to method') unless response && xpath
|
147
148
|
result =
|
148
149
|
if Soaspec.strip_namespaces? && !xpath.include?(':')
|
149
150
|
temp_doc = response.doc.dup
|
150
151
|
temp_doc.remove_namespaces!
|
151
|
-
temp_doc.
|
152
|
+
temp_doc.at_xpath(xpath)
|
152
153
|
else
|
153
|
-
response.xpath(xpath).first
|
154
|
+
response.xpath(xpath).first # Note this is Savon's xpath method. Hence Nokogiri 'at_xpath' not used
|
154
155
|
end
|
155
156
|
raise NoElementAtPath, "No value at Xpath '#{xpath}' in XML #{response.doc}" unless result
|
156
|
-
result.inner_text
|
157
|
+
return result.inner_text if attribute.nil?
|
158
|
+
result.attributes[attribute].inner_text
|
157
159
|
end
|
158
160
|
|
159
161
|
# Based on a exchange, return the value at the provided xpath
|
160
162
|
# If the path does not begin with a '/', a '//' is added to it
|
161
163
|
# @param [Savon::Response] response
|
162
164
|
# @param [String] path Xpath
|
165
|
+
# @param [String] attribute Generic attribute to find. Will override path
|
163
166
|
# @return [String] Value at Xpath
|
164
|
-
def value_from_path(response, path)
|
167
|
+
def value_from_path(response, path, attribute: nil)
|
168
|
+
path = "//*[@#{attribute}]" unless attribute.nil?
|
165
169
|
path = '//' + path if path[0] != '/'
|
166
|
-
xpath_value_for(response: response, xpath: path)
|
170
|
+
xpath_value_for(response: response, xpath: path, attribute: attribute)
|
167
171
|
end
|
168
172
|
|
169
173
|
# Whether any of the keys of the Body Hash include value
|
data/lib/soaspec/matchers.rb
CHANGED
@@ -1,9 +1,7 @@
|
|
1
1
|
|
2
|
-
require_relative '
|
2
|
+
require_relative 'core_ext/hash'
|
3
3
|
require_relative 'not_found_errors'
|
4
4
|
|
5
|
-
# TODO: Mathcers are specific to SOAP. Make generic for REST and others by using actual.api_class
|
6
|
-
|
7
5
|
# Whether response has any element with the provided value
|
8
6
|
RSpec::Matchers.define :contain_value do |expected|
|
9
7
|
match do |actual|
|
data/lib/soaspec/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: soaspec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.52
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- SamuelGarrattIQA
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-05-
|
11
|
+
date: 2018-05-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -167,6 +167,7 @@ files:
|
|
167
167
|
- exe/soaspec-init
|
168
168
|
- exe/xml_to_yaml_file
|
169
169
|
- lib/soaspec.rb
|
170
|
+
- lib/soaspec/core_ext/hash.rb
|
170
171
|
- lib/soaspec/exchange.rb
|
171
172
|
- lib/soaspec/exchange_handlers/exchange_handler.rb
|
172
173
|
- lib/soaspec/exchange_handlers/handler_accessors.rb
|
@@ -174,7 +175,6 @@ files:
|
|
174
175
|
- lib/soaspec/exchange_handlers/rest_methods.rb
|
175
176
|
- lib/soaspec/exchange_handlers/soap_handler.rb
|
176
177
|
- lib/soaspec/exe_helpers.rb
|
177
|
-
- lib/soaspec/hash_methods.rb
|
178
178
|
- lib/soaspec/interpreter.rb
|
179
179
|
- lib/soaspec/matchers.rb
|
180
180
|
- lib/soaspec/not_found_errors.rb
|