soaspec 0.0.51 → 0.0.52
Sign up to get free protection for your applications and to get access to all the features.
- 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
|