spaceborne 0.1.28 → 0.1.33
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 -0
- data/README.md +2 -1
- data/lib/spaceborne.rb +26 -19
- data/lib/spaceborne/version.rb +1 -1
- data/spaceborne.gemspec +4 -4
- metadata +13 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f58273cad226d88a4d39c7065f1c1628990f779024ca7e4c4a5456b8381c033d
|
4
|
+
data.tar.gz: 19eae317b4a2cd4a69a14b5e2afe8f721c08728ead59ff6a6cba732c4722afbd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 41c07d21fdd9bad257bff28db8c911e3339846e1691cf72ebeedb26d0ab1afd3253a731d7d847af00f9b32a15b7cf4f8e6bda9eab5271c8a32388858e9858333
|
7
|
+
data.tar.gz: e60a31d5d9ad75915c4ef6d31615b96e8ca45c22b40dd0eb3ad77c7f91fcf4163a6f95c1ce4abff8c98b35b717d978c6d968223a7200368849b84cef28a2e2a8
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -205,8 +205,9 @@ Validation for headers follows the same pattern as above, although nesting of mu
|
|
205
205
|
* `expect_header_types same arguments/handling as expect_json_types`
|
206
206
|
5. It is possible to use non-json data in a request
|
207
207
|
6. Expectations on a response with an array of hashes with keys that are unknown, but that have a defined structure are supported (using the '*' in a path)
|
208
|
+
7. Responses that have header with Content-Encoding of gzip are gunzip'd in json_body
|
208
209
|
|
209
|
-
The following example shows how
|
210
|
+
The following example shows how extension # 6 works
|
210
211
|
|
211
212
|
```ruby
|
212
213
|
{ "array_of_hashes": [
|
data/lib/spaceborne.rb
CHANGED
@@ -34,12 +34,11 @@ module Spaceborne
|
|
34
34
|
def response_body
|
35
35
|
return '' if response.request.method.casecmp('head').zero?
|
36
36
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
str
|
37
|
+
if json?(response.headers)
|
38
|
+
" JSON_BODY\n#{JSON.pretty_generate(json_body)}\n"
|
39
|
+
else
|
40
|
+
" BODY\n#{response.body}\n"
|
41
|
+
end
|
43
42
|
end
|
44
43
|
|
45
44
|
def request_info(str = "\n")
|
@@ -59,8 +58,16 @@ end
|
|
59
58
|
|
60
59
|
# monkeypatch Airborne
|
61
60
|
module Airborne
|
61
|
+
def decode_body
|
62
|
+
if response.headers[:content_encoding]&.include?('gzip')
|
63
|
+
Zlib::Inflate.new(32 + Zlib::MAX_WBITS).inflate(response.body)
|
64
|
+
else
|
65
|
+
response.body
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
62
69
|
def json_body
|
63
|
-
@json_body ||= JSON.parse(
|
70
|
+
@json_body ||= JSON.parse(decode_body, symbolize_names: true)
|
64
71
|
rescue StandardError
|
65
72
|
raise InvalidJsonError, 'Api request returned invalid json'
|
66
73
|
end
|
@@ -133,8 +140,8 @@ module Airborne
|
|
133
140
|
rescue RestClient::ServerBrokeConnection => e
|
134
141
|
raise e
|
135
142
|
rescue RestClient::Exception => e
|
136
|
-
if [301, 302].include?(e.response
|
137
|
-
e.response
|
143
|
+
if [301, 302].include?(e.response&.code)
|
144
|
+
e.response.&follow_redirection
|
138
145
|
else
|
139
146
|
e.response
|
140
147
|
end
|
@@ -160,16 +167,16 @@ module Airborne
|
|
160
167
|
end
|
161
168
|
end
|
162
169
|
|
163
|
-
def exception_path_adder(args)
|
170
|
+
def exception_path_adder(args, body)
|
164
171
|
yield
|
165
|
-
rescue Airborne::ExpectationError => e
|
166
|
-
e.message << "\nexpect arguments: #{args}"
|
172
|
+
rescue RSpec::Expectations::ExpectationNotMetError, Airborne::ExpectationError => e
|
173
|
+
e.message << "\nexpect arguments: #{args}\ndata element: #{body}"
|
167
174
|
raise e
|
168
175
|
end
|
169
176
|
|
170
177
|
def expect_json_types(*args)
|
171
178
|
call_with_relative_path(json_body, args) do |param, body|
|
172
|
-
exception_path_adder(args) do
|
179
|
+
exception_path_adder(args, body) do
|
173
180
|
expect_json_types_impl(param, body)
|
174
181
|
end
|
175
182
|
end
|
@@ -177,7 +184,7 @@ module Airborne
|
|
177
184
|
|
178
185
|
def expect_json(*args)
|
179
186
|
call_with_relative_path(json_body, args) do |param, body|
|
180
|
-
exception_path_adder(args) do
|
187
|
+
exception_path_adder(args, body) do
|
181
188
|
expect_json_impl(param, body)
|
182
189
|
end
|
183
190
|
end
|
@@ -185,7 +192,7 @@ module Airborne
|
|
185
192
|
|
186
193
|
def expect_header_types(*args)
|
187
194
|
call_with_relative_path(response.headers, args) do |param, body|
|
188
|
-
exception_path_adder(args) do
|
195
|
+
exception_path_adder(args, body) do
|
189
196
|
expect_json_types_impl(param, body)
|
190
197
|
end
|
191
198
|
end
|
@@ -193,7 +200,7 @@ module Airborne
|
|
193
200
|
|
194
201
|
def expect_header(*args)
|
195
202
|
call_with_relative_path(response.headers, args) do |param, body|
|
196
|
-
exception_path_adder(args) do
|
203
|
+
exception_path_adder(args, body) do
|
197
204
|
expect_json_impl(param, body)
|
198
205
|
end
|
199
206
|
end
|
@@ -214,9 +221,9 @@ module Airborne
|
|
214
221
|
when 'Array'
|
215
222
|
expect_all(json, &block)
|
216
223
|
when 'Hash'
|
217
|
-
json.each
|
218
|
-
|
219
|
-
|
224
|
+
json.each { |k, _v| yield json[k] }
|
225
|
+
else
|
226
|
+
raise ExpectationError, "expected array or hash, got #{json.class.name}"
|
220
227
|
end
|
221
228
|
end
|
222
229
|
|
data/lib/spaceborne/version.rb
CHANGED
data/spaceborne.gemspec
CHANGED
@@ -12,7 +12,7 @@ Gem::Specification.new do |spec|
|
|
12
12
|
spec.description = 'Extends brooklynDev/airborne'
|
13
13
|
spec.homepage = 'https://github.com/keithrw54/spaceborne.git'
|
14
14
|
spec.license = 'MIT'
|
15
|
-
spec.required_ruby_version = '2.5.5'
|
15
|
+
spec.required_ruby_version = '~> 2.5.5'
|
16
16
|
|
17
17
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
18
18
|
f.match(%r{^(test|spec|features)/})
|
@@ -22,12 +22,12 @@ Gem::Specification.new do |spec|
|
|
22
22
|
spec.require_paths = ['lib']
|
23
23
|
|
24
24
|
spec.add_runtime_dependency 'activesupport'
|
25
|
-
spec.add_runtime_dependency 'airborne', '~> 0.
|
25
|
+
spec.add_runtime_dependency 'airborne', '~> 0.3'
|
26
26
|
spec.add_runtime_dependency 'curlyrest', '~> 0.1.30'
|
27
27
|
spec.add_runtime_dependency 'rack'
|
28
|
-
spec.add_runtime_dependency 'rack-test', '~>
|
28
|
+
spec.add_runtime_dependency 'rack-test', '~> 1.1', '<= 2.0'
|
29
29
|
spec.add_runtime_dependency 'rest-client', '< 3.0', '>= 1.7.3'
|
30
|
-
spec.add_runtime_dependency 'rspec', '~> 3.
|
30
|
+
spec.add_runtime_dependency 'rspec', '~> 3.8'
|
31
31
|
spec.add_development_dependency 'webmock', '~> 0'
|
32
32
|
|
33
33
|
spec.add_development_dependency 'byebug', '~> 10.0.2'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spaceborne
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.33
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Keith Williams
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-07-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.
|
33
|
+
version: '0.3'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.
|
40
|
+
version: '0.3'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: curlyrest
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -72,20 +72,20 @@ dependencies:
|
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
76
|
-
- - "
|
75
|
+
version: '1.1'
|
76
|
+
- - "<="
|
77
77
|
- !ruby/object:Gem::Version
|
78
|
-
version: 0
|
78
|
+
version: '2.0'
|
79
79
|
type: :runtime
|
80
80
|
prerelease: false
|
81
81
|
version_requirements: !ruby/object:Gem::Requirement
|
82
82
|
requirements:
|
83
83
|
- - "~>"
|
84
84
|
- !ruby/object:Gem::Version
|
85
|
-
version: '
|
86
|
-
- - "
|
85
|
+
version: '1.1'
|
86
|
+
- - "<="
|
87
87
|
- !ruby/object:Gem::Version
|
88
|
-
version: 0
|
88
|
+
version: '2.0'
|
89
89
|
- !ruby/object:Gem::Dependency
|
90
90
|
name: rest-client
|
91
91
|
requirement: !ruby/object:Gem::Requirement
|
@@ -112,14 +112,14 @@ dependencies:
|
|
112
112
|
requirements:
|
113
113
|
- - "~>"
|
114
114
|
- !ruby/object:Gem::Version
|
115
|
-
version: '3.
|
115
|
+
version: '3.8'
|
116
116
|
type: :runtime
|
117
117
|
prerelease: false
|
118
118
|
version_requirements: !ruby/object:Gem::Requirement
|
119
119
|
requirements:
|
120
120
|
- - "~>"
|
121
121
|
- !ruby/object:Gem::Version
|
122
|
-
version: '3.
|
122
|
+
version: '3.8'
|
123
123
|
- !ruby/object:Gem::Dependency
|
124
124
|
name: webmock
|
125
125
|
requirement: !ruby/object:Gem::Requirement
|
@@ -191,7 +191,7 @@ require_paths:
|
|
191
191
|
- lib
|
192
192
|
required_ruby_version: !ruby/object:Gem::Requirement
|
193
193
|
requirements:
|
194
|
-
- -
|
194
|
+
- - "~>"
|
195
195
|
- !ruby/object:Gem::Version
|
196
196
|
version: 2.5.5
|
197
197
|
required_rubygems_version: !ruby/object:Gem::Requirement
|