soaspec 0.2.25 → 0.2.26
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/.gitignore +1 -1
- data/.gitlab-ci.yml +15 -4
- data/ChangeLog +5 -0
- data/Dockerfile +5 -0
- data/Todo.md +1 -0
- data/lib/soaspec/exchange/exchange_extractor.rb +5 -0
- data/lib/soaspec/exchange/exchange_repeater.rb +1 -1
- data/lib/soaspec/exchange_handlers/response_extractor.rb +1 -1
- data/lib/soaspec/interpreter.rb +31 -2
- data/lib/soaspec/matchers.rb +1 -1
- data/lib/soaspec/o_auth2.rb +10 -1
- data/lib/soaspec/soaspec_shared_examples.rb +1 -1
- data/lib/soaspec/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4bd3c881794d21629f39071352bc0e9c49eba252
|
4
|
+
data.tar.gz: 919b6649e0b29f590f388bb78af1b9f34d6d8613
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0c95b0a30c4efbc31b369cb3735d4676ff7c5cabe1577f065b66dc9b427010d2c4b5c4b2370e7db2f67574bb907feb6d03109275c33b5a9ade6158f7ec51c2a3
|
7
|
+
data.tar.gz: ef8f3c18d7e64ecc1953c73463373ca26ce22f2b8fcf7ca70a4f3d51f08606cd5cfb82f235dd578d7d30e5971f5e3c1816d0bed96654bc089408a70c3c581e9b
|
data/.gitignore
CHANGED
data/.gitlab-ci.yml
CHANGED
@@ -4,29 +4,40 @@ before_script:
|
|
4
4
|
- ruby -v
|
5
5
|
- which ruby
|
6
6
|
- gem install bundler rake
|
7
|
-
- bundle install --jobs $(nproc)
|
7
|
+
- bundle install --jobs $(nproc) --path vendor # Install dependencies into ./vendor/ruby
|
8
|
+
|
9
|
+
cache:
|
10
|
+
key: ${CI_COMMIT_REF_SLUG}
|
11
|
+
paths:
|
12
|
+
- vendor/ruby
|
8
13
|
|
9
14
|
ruby_2.3:
|
10
15
|
stage: test
|
11
16
|
image: ruby:2.3
|
12
17
|
script:
|
13
|
-
- bundle exec rake
|
18
|
+
- bundle exec rake
|
14
19
|
|
15
20
|
ruby_2.4:
|
16
21
|
stage: test
|
17
22
|
image: ruby:2.4
|
18
23
|
script:
|
19
|
-
- bundle exec rake
|
24
|
+
- bundle exec rake
|
20
25
|
|
21
26
|
ruby_2.5:
|
22
27
|
stage: test
|
23
28
|
image: ruby:2.5
|
24
29
|
script:
|
25
|
-
- bundle exec rake
|
30
|
+
- bundle exec rake
|
26
31
|
artifacts:
|
27
32
|
paths:
|
28
33
|
- coverage/
|
29
34
|
|
35
|
+
ruby_2.6:
|
36
|
+
stage: test
|
37
|
+
image: ruby:2.6
|
38
|
+
script:
|
39
|
+
- bundle exec rake
|
40
|
+
|
30
41
|
cucumber:
|
31
42
|
stage: test
|
32
43
|
script:
|
data/ChangeLog
CHANGED
data/Dockerfile
ADDED
data/Todo.md
CHANGED
@@ -14,6 +14,11 @@ module Soaspec
|
|
14
14
|
exchange_handler.status_code_for(response)
|
15
15
|
end
|
16
16
|
|
17
|
+
# @return [Boolean] Whether Api success code is successful
|
18
|
+
def successful_status_code?
|
19
|
+
(200..299).cover? status_code
|
20
|
+
end
|
21
|
+
|
17
22
|
# Extract value from path api class
|
18
23
|
# @example Extract unique value
|
19
24
|
# @exchange['unique_value_name']
|
@@ -7,7 +7,7 @@ module Soaspec
|
|
7
7
|
# @option opts [Numeric] :interval (0.2) Seconds to sleep between polls.
|
8
8
|
# @option opts [String] :message Exception message if timed out.
|
9
9
|
# @option opts [Array, Exception] :ignore Exceptions to ignore while polling (default: Error::NoSuchElementError)
|
10
|
-
# @return [
|
10
|
+
# @return [Exchange] Returns itself so operations can be done on the exchange after it's done waiting
|
11
11
|
def until(opts = {}, &script)
|
12
12
|
Soaspec::Wait.until(opts) do
|
13
13
|
@response = nil # Reset response so it can be made repeatedly
|
@@ -28,7 +28,7 @@ module Soaspec
|
|
28
28
|
when :json
|
29
29
|
IndifferentHash.new(JSON.parse(response.body.to_s))
|
30
30
|
else
|
31
|
-
raise "Unable to interpret type of #{response.body}"
|
31
|
+
raise "Unable to interpret type of '#{response.body}'. Could be because of: #{Interpreter.diagnose_error}"
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
data/lib/soaspec/interpreter.rb
CHANGED
@@ -1,9 +1,17 @@
|
|
1
1
|
# Help interpret the general type of a particular object
|
2
2
|
class Interpreter
|
3
3
|
class << self
|
4
|
+
# @return [Error] XML Errors found in interpreting response
|
5
|
+
attr_accessor :xml_errors
|
6
|
+
|
7
|
+
# @return [Error] JSON Errors found in interpreting response
|
8
|
+
attr_accessor :json_errors
|
9
|
+
|
4
10
|
# @param [Object] response API response
|
5
11
|
# @return [Symbol] Type of provided response
|
6
12
|
def response_type_for(response)
|
13
|
+
@xml_errors = nil
|
14
|
+
@json_errors = nil
|
7
15
|
@response = response
|
8
16
|
if @response.is_a? String
|
9
17
|
if xml?
|
@@ -22,17 +30,38 @@ class Interpreter
|
|
22
30
|
end
|
23
31
|
end
|
24
32
|
|
33
|
+
# @return [Boolean] Whether response has tag like syntax similar to XML. Could be a syntax error occurred
|
34
|
+
def looks_like_xml?
|
35
|
+
@response[0] == '<' && @response[-1] == '>'
|
36
|
+
end
|
37
|
+
|
38
|
+
# @return [Boolean] Whether response has bracket like syntax similar to JSON. Could be a syntax error occurred
|
39
|
+
def looks_like_json?
|
40
|
+
@response[0] == '{' && @response[-1] == '}'
|
41
|
+
end
|
42
|
+
|
43
|
+
# @return [String] Description of error
|
44
|
+
def diagnose_error
|
45
|
+
return xml_errors if looks_like_xml?
|
46
|
+
|
47
|
+
return json_errors if looks_like_json?
|
48
|
+
|
49
|
+
''
|
50
|
+
end
|
51
|
+
|
25
52
|
# @return [Boolean] Whether valid XML
|
26
53
|
def xml?
|
27
54
|
Nokogiri::XML(@response) { |config| config.options = Nokogiri::XML::ParseOptions::STRICT }
|
28
|
-
rescue Nokogiri::XML::SyntaxError
|
55
|
+
rescue Nokogiri::XML::SyntaxError => xml_error
|
56
|
+
self.xml_errors = xml_error
|
29
57
|
false
|
30
58
|
end
|
31
59
|
|
32
60
|
# @return [Boolean] Whether valid JSON
|
33
61
|
def json?
|
34
62
|
JSON.parse(@response)
|
35
|
-
rescue JSON::ParserError
|
63
|
+
rescue JSON::ParserError=> json_error
|
64
|
+
self.json_errors = json_error
|
36
65
|
false
|
37
66
|
end
|
38
67
|
end
|
data/lib/soaspec/matchers.rb
CHANGED
@@ -81,7 +81,7 @@ RSpec::Matchers.define :be_successful do
|
|
81
81
|
# @return [Array] List of errors when checking Exchange response is successful
|
82
82
|
def collect_errors(exchange)
|
83
83
|
failure_list = []
|
84
|
-
failure_list << "#{exchange.status_code} not valid status code" unless
|
84
|
+
failure_list << "#{exchange.status_code} not valid status code" unless exchange.successful_status_code?
|
85
85
|
exchange.exchange_handler.expected_mandatory_elements.each do |mandatory_element_path|
|
86
86
|
begin
|
87
87
|
exchange[mandatory_element_path]
|
data/lib/soaspec/o_auth2.rb
CHANGED
@@ -9,6 +9,8 @@ module Soaspec
|
|
9
9
|
@access_tokens = {}
|
10
10
|
# List of instance URLs. They are mapped according to the OAuth parameters used
|
11
11
|
@instance_urls = {}
|
12
|
+
# Whether to see params sent to & received from oauth URL
|
13
|
+
@request_message = true
|
12
14
|
class << self
|
13
15
|
# Default token url used across entire suite
|
14
16
|
attr_accessor :token_url
|
@@ -23,11 +25,18 @@ module Soaspec
|
|
23
25
|
attr_accessor :instance_urls
|
24
26
|
# Specify whether to see params sent to and retrieved from oauth. This will put password in log file, only recommended for debugging
|
25
27
|
attr_writer :debug_oauth
|
28
|
+
# @return [Boolean] Whether to include request message describing OAuth (either full or simplified)
|
29
|
+
attr_writer :request_message
|
26
30
|
|
27
31
|
# @return [Boolean] Whether to see params sent to & received from oauth URL
|
28
32
|
def debug_oauth?
|
29
33
|
@debug_oauth || false
|
30
34
|
end
|
35
|
+
|
36
|
+
# @return [Boolean] Whether to include request message describing OAuth (either full or simplified)
|
37
|
+
def request_message?
|
38
|
+
@request_message
|
39
|
+
end
|
31
40
|
end
|
32
41
|
|
33
42
|
# @attr [Hash] OAuth parameters
|
@@ -73,7 +82,7 @@ module Soaspec
|
|
73
82
|
|
74
83
|
# @return [String] Existing or new access token, dependent on refresh_token attribute
|
75
84
|
def access_token
|
76
|
-
Soaspec::SpecLogger.info request_message
|
85
|
+
Soaspec::SpecLogger.info request_message if self.class.request_message?
|
77
86
|
case Soaspec::OAuth2.refresh_token
|
78
87
|
when :once
|
79
88
|
Soaspec::OAuth2.access_tokens[params] ||= response['access_token']
|
@@ -2,7 +2,7 @@ require 'rspec'
|
|
2
2
|
|
3
3
|
RSpec.shared_examples_for 'success scenario' do
|
4
4
|
it 'has successful status code' do
|
5
|
-
expect(
|
5
|
+
expect(described_class.successful_status_code?).to be true
|
6
6
|
end
|
7
7
|
context 'has expected mandatory elements' do
|
8
8
|
described_class.exchange_handler.expected_mandatory_elements.each do |mandatory_element|
|
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.2.
|
4
|
+
version: 0.2.26
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- SamuelGarrattIQA
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-07-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -461,6 +461,7 @@ files:
|
|
461
461
|
- ".rubocop.yml"
|
462
462
|
- CODE_OF_CONDUCT.md
|
463
463
|
- ChangeLog
|
464
|
+
- Dockerfile
|
464
465
|
- Gemfile
|
465
466
|
- LICENSE.txt
|
466
467
|
- README.md
|