spaceborne 0.1.21 → 0.1.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 +5 -5
- data/.ruby-version +1 -1
- data/lib/spaceborne.rb +67 -35
- data/lib/spaceborne/version.rb +1 -1
- data/spaceborne.gemspec +4 -4
- metadata +20 -35
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 2c343c5f42e85c4baf10f9f22b530e7e9e1474226d7b5d0d7491eacd31046a72
|
4
|
+
data.tar.gz: dafa9fb460a2b631d9245eaa4b0dbfdd5476c0cf4f58ead485d668a27482fe13
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e3fa2aa4790c0e737205c089676186f3ebec3dde0bffde2c7d473677020e6e85f20995a2f047afc28d42985b02aa1ac990ab527becc7e9f88c8699c6d43f3d1a
|
7
|
+
data.tar.gz: 2de0cdcb90b4784582c51b4ad1e26e1accc59f01f0ea8f90ea197686d9a76a5b0bb1bf12648bf34e112a6f311359166089320c49143f538473a53895ecc6efe1
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
ruby-2.
|
1
|
+
ruby-2.5.5
|
data/lib/spaceborne.rb
CHANGED
@@ -33,6 +33,7 @@ module Spaceborne
|
|
33
33
|
|
34
34
|
def response_body
|
35
35
|
return '' if response.request.method.casecmp('head').zero?
|
36
|
+
|
36
37
|
str = if json?(response.headers)
|
37
38
|
" JSON_BODY\n#{JSON.pretty_generate(json_body)}\n"
|
38
39
|
else
|
@@ -50,6 +51,7 @@ module Spaceborne
|
|
50
51
|
yield
|
51
52
|
rescue Exception => e
|
52
53
|
raise e unless response
|
54
|
+
|
53
55
|
e.message << request_info
|
54
56
|
raise e
|
55
57
|
end
|
@@ -87,17 +89,20 @@ module Airborne
|
|
87
89
|
headers = base_headers.merge(options[:headers] || {})
|
88
90
|
headers[:no_restclient_headers] = true
|
89
91
|
return headers unless local[:is_hash]
|
92
|
+
|
90
93
|
headers.delete('Content-Type') if options[:nonjson_data]
|
91
94
|
headers
|
92
95
|
end
|
93
96
|
|
94
97
|
def handle_proxy(_options, local)
|
95
98
|
return unless local[:proxy]
|
99
|
+
|
96
100
|
RestClient.proxy = local[:proxy]
|
97
101
|
end
|
98
102
|
|
99
103
|
def calc_body(options, local)
|
100
104
|
return '' unless options[:body]
|
105
|
+
|
101
106
|
if local[:nonjson_data] || !local[:is_hash]
|
102
107
|
options[:body]
|
103
108
|
else
|
@@ -113,21 +118,32 @@ module Airborne
|
|
113
118
|
end
|
114
119
|
end
|
115
120
|
|
116
|
-
def
|
121
|
+
def pre_request(options)
|
117
122
|
@json_body = nil
|
118
123
|
local_options = split_options(options)
|
119
124
|
handle_proxy(options, local_options)
|
120
125
|
hdrs = calc_headers(options, local_options)
|
121
126
|
@request_body = calc_body(options, local_options)
|
122
|
-
|
127
|
+
[hdrs, @request_body]
|
128
|
+
end
|
129
|
+
|
130
|
+
def make_request(method, url, options = {})
|
131
|
+
hdrs, body = pre_request(options)
|
132
|
+
send_restclient(method, get_url(url), body, hdrs)
|
133
|
+
rescue RestClient::ServerBrokeConnection => e
|
134
|
+
raise e
|
123
135
|
rescue RestClient::Exception => e
|
124
|
-
e.response
|
136
|
+
if [301, 302].include?(e.response.code)
|
137
|
+
e.response.follow_redirection
|
138
|
+
else
|
139
|
+
e.response
|
140
|
+
end
|
125
141
|
end
|
126
142
|
|
127
143
|
private
|
128
144
|
|
129
145
|
def base_headers
|
130
|
-
{
|
146
|
+
{ 'Content-Type' => 'application/json' }
|
131
147
|
.merge(Airborne.configuration.headers || {})
|
132
148
|
end
|
133
149
|
end
|
@@ -144,16 +160,16 @@ module Airborne
|
|
144
160
|
end
|
145
161
|
end
|
146
162
|
|
147
|
-
def exception_path_adder(
|
163
|
+
def exception_path_adder(args)
|
148
164
|
yield
|
149
165
|
rescue Airborne::ExpectationError => e
|
150
|
-
e.message << "
|
166
|
+
e.message << "expect arguments: #{args}"
|
151
167
|
raise e
|
152
168
|
end
|
153
169
|
|
154
170
|
def expect_json_types(*args)
|
155
171
|
call_with_relative_path(json_body, args) do |param, body|
|
156
|
-
exception_path_adder(args
|
172
|
+
exception_path_adder(args) do
|
157
173
|
expect_json_types_impl(param, body)
|
158
174
|
end
|
159
175
|
end
|
@@ -161,7 +177,7 @@ module Airborne
|
|
161
177
|
|
162
178
|
def expect_json(*args)
|
163
179
|
call_with_relative_path(json_body, args) do |param, body|
|
164
|
-
exception_path_adder(args
|
180
|
+
exception_path_adder(args) do
|
165
181
|
expect_json_impl(param, body)
|
166
182
|
end
|
167
183
|
end
|
@@ -169,7 +185,7 @@ module Airborne
|
|
169
185
|
|
170
186
|
def expect_header_types(*args)
|
171
187
|
call_with_relative_path(response.headers, args) do |param, body|
|
172
|
-
exception_path_adder(args
|
188
|
+
exception_path_adder(args) do
|
173
189
|
expect_json_types_impl(param, body)
|
174
190
|
end
|
175
191
|
end
|
@@ -177,7 +193,7 @@ module Airborne
|
|
177
193
|
|
178
194
|
def expect_header(*args)
|
179
195
|
call_with_relative_path(response.headers, args) do |param, body|
|
180
|
-
exception_path_adder(args
|
196
|
+
exception_path_adder(args) do
|
181
197
|
expect_json_impl(param, body)
|
182
198
|
end
|
183
199
|
end
|
@@ -186,44 +202,60 @@ module Airborne
|
|
186
202
|
|
187
203
|
# extension to handle hash value checking
|
188
204
|
module PathMatcher
|
189
|
-
def
|
205
|
+
def do_process_json(part, json)
|
206
|
+
json = process_json(part, json)
|
207
|
+
rescue StandardError
|
208
|
+
raise PathError,
|
209
|
+
"Expected #{json.class}\nto be an object with property #{part}"
|
210
|
+
end
|
211
|
+
|
212
|
+
def handle_container(json, &block)
|
213
|
+
case json.class.name
|
214
|
+
when 'Array'
|
215
|
+
expect_all(json, &block)
|
216
|
+
when 'Hash'
|
217
|
+
json.each do |k, _v|
|
218
|
+
yield json[k]
|
219
|
+
end
|
220
|
+
end
|
221
|
+
end
|
222
|
+
|
223
|
+
def handle_type(type, path, json, &block)
|
224
|
+
if type == '*'
|
225
|
+
handle_container(json, &block)
|
226
|
+
elsif type == '?'
|
227
|
+
expect_one(path, json, &block)
|
228
|
+
else
|
229
|
+
yield json
|
230
|
+
end
|
231
|
+
end
|
232
|
+
|
233
|
+
def iterate_path(path)
|
190
234
|
raise PathError, "Invalid Path, contains '..'" if /\.\./ =~ path
|
191
|
-
|
235
|
+
|
192
236
|
parts = path.to_s.split('.')
|
193
237
|
parts.each_with_index do |part, index|
|
238
|
+
yield(parts, part, index)
|
239
|
+
end
|
240
|
+
end
|
241
|
+
|
242
|
+
def get_by_path(path, json, type = false, &block)
|
243
|
+
iterate_path(path) do |parts, part, index|
|
194
244
|
if %w[* ?].include?(part)
|
195
245
|
ensure_array_or_hash(path, json)
|
196
246
|
type = part
|
197
|
-
if index < parts.length.pred
|
198
|
-
|
199
|
-
end
|
247
|
+
walk_with_path(type, index, path, parts, json, &block) && return if index < parts.length.pred
|
248
|
+
|
200
249
|
next
|
201
250
|
end
|
202
|
-
|
203
|
-
json = process_json(part, json)
|
204
|
-
rescue StandardError
|
205
|
-
raise PathError,
|
206
|
-
"Expected #{json.class}\nto be an object with property #{part}"
|
207
|
-
end
|
208
|
-
end
|
209
|
-
if type == '*'
|
210
|
-
case json.class.name
|
211
|
-
when 'Array'
|
212
|
-
expect_all(json, &block)
|
213
|
-
when 'Hash'
|
214
|
-
json.each do |k, _v|
|
215
|
-
yield json[k]
|
216
|
-
end
|
217
|
-
end
|
218
|
-
elsif type == '?'
|
219
|
-
expect_one(path, json, &block)
|
220
|
-
else
|
221
|
-
yield json
|
251
|
+
json = do_process_json(part, json)
|
222
252
|
end
|
253
|
+
handle_type(type, path, json, &block)
|
223
254
|
end
|
224
255
|
|
225
256
|
def ensure_array_or_hash(path, json)
|
226
257
|
return if json.class == Array || json.class == Hash
|
258
|
+
|
227
259
|
raise RSpec::Expectations::ExpectationNotMetError,
|
228
260
|
"Expected #{path} to be array or hash, got #{json.class}"\
|
229
261
|
' from JSON response'
|
data/lib/spaceborne/version.rb
CHANGED
data/spaceborne.gemspec
CHANGED
@@ -3,6 +3,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
3
3
|
require 'spaceborne/version'
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
|
+
spec.required_ruby_version = '2.5'
|
6
7
|
spec.name = 'spaceborne'
|
7
8
|
spec.version = Spaceborne::VERSION
|
8
9
|
spec.authors = ['Keith Williams']
|
@@ -22,14 +23,13 @@ Gem::Specification.new do |spec|
|
|
22
23
|
|
23
24
|
spec.add_runtime_dependency 'activesupport'
|
24
25
|
spec.add_runtime_dependency 'airborne', '~> 0.2.13'
|
25
|
-
spec.add_runtime_dependency 'curlyrest', '~> 0.1.
|
26
|
+
spec.add_runtime_dependency 'curlyrest', '~> 0.1.30'
|
26
27
|
spec.add_runtime_dependency 'rack'
|
27
28
|
spec.add_runtime_dependency 'rack-test', '~> 0.6', '>= 0.6.2'
|
28
29
|
spec.add_runtime_dependency 'rest-client', '< 3.0', '>= 1.7.3'
|
29
30
|
spec.add_runtime_dependency 'rspec', '~> 3.1'
|
30
31
|
spec.add_development_dependency 'webmock', '~> 0'
|
31
32
|
|
32
|
-
spec.add_development_dependency '
|
33
|
-
spec.add_development_dependency '
|
34
|
-
spec.add_development_dependency 'rake', '~> 10.0'
|
33
|
+
spec.add_development_dependency 'byebug', '~> 10.0.2'
|
34
|
+
spec.add_development_dependency 'rake', '~> 12.3.3'
|
35
35
|
end
|
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.26
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Keith Williams
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-09-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.1.
|
47
|
+
version: 0.1.30
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.1.
|
54
|
+
version: 0.1.30
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rack
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -90,22 +90,22 @@ dependencies:
|
|
90
90
|
name: rest-client
|
91
91
|
requirement: !ruby/object:Gem::Requirement
|
92
92
|
requirements:
|
93
|
-
- - "<"
|
94
|
-
- !ruby/object:Gem::Version
|
95
|
-
version: '3.0'
|
96
93
|
- - ">="
|
97
94
|
- !ruby/object:Gem::Version
|
98
95
|
version: 1.7.3
|
96
|
+
- - "<"
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '3.0'
|
99
99
|
type: :runtime
|
100
100
|
prerelease: false
|
101
101
|
version_requirements: !ruby/object:Gem::Requirement
|
102
102
|
requirements:
|
103
|
-
- - "<"
|
104
|
-
- !ruby/object:Gem::Version
|
105
|
-
version: '3.0'
|
106
103
|
- - ">="
|
107
104
|
- !ruby/object:Gem::Version
|
108
105
|
version: 1.7.3
|
106
|
+
- - "<"
|
107
|
+
- !ruby/object:Gem::Version
|
108
|
+
version: '3.0'
|
109
109
|
- !ruby/object:Gem::Dependency
|
110
110
|
name: rspec
|
111
111
|
requirement: !ruby/object:Gem::Requirement
|
@@ -134,48 +134,34 @@ dependencies:
|
|
134
134
|
- - "~>"
|
135
135
|
- !ruby/object:Gem::Version
|
136
136
|
version: '0'
|
137
|
-
- !ruby/object:Gem::Dependency
|
138
|
-
name: bundler
|
139
|
-
requirement: !ruby/object:Gem::Requirement
|
140
|
-
requirements:
|
141
|
-
- - "~>"
|
142
|
-
- !ruby/object:Gem::Version
|
143
|
-
version: '1.11'
|
144
|
-
type: :development
|
145
|
-
prerelease: false
|
146
|
-
version_requirements: !ruby/object:Gem::Requirement
|
147
|
-
requirements:
|
148
|
-
- - "~>"
|
149
|
-
- !ruby/object:Gem::Version
|
150
|
-
version: '1.11'
|
151
137
|
- !ruby/object:Gem::Dependency
|
152
138
|
name: byebug
|
153
139
|
requirement: !ruby/object:Gem::Requirement
|
154
140
|
requirements:
|
155
141
|
- - "~>"
|
156
142
|
- !ruby/object:Gem::Version
|
157
|
-
version:
|
143
|
+
version: 10.0.2
|
158
144
|
type: :development
|
159
145
|
prerelease: false
|
160
146
|
version_requirements: !ruby/object:Gem::Requirement
|
161
147
|
requirements:
|
162
148
|
- - "~>"
|
163
149
|
- !ruby/object:Gem::Version
|
164
|
-
version:
|
150
|
+
version: 10.0.2
|
165
151
|
- !ruby/object:Gem::Dependency
|
166
152
|
name: rake
|
167
153
|
requirement: !ruby/object:Gem::Requirement
|
168
154
|
requirements:
|
169
155
|
- - "~>"
|
170
156
|
- !ruby/object:Gem::Version
|
171
|
-
version:
|
157
|
+
version: 12.3.3
|
172
158
|
type: :development
|
173
159
|
prerelease: false
|
174
160
|
version_requirements: !ruby/object:Gem::Requirement
|
175
161
|
requirements:
|
176
162
|
- - "~>"
|
177
163
|
- !ruby/object:Gem::Version
|
178
|
-
version:
|
164
|
+
version: 12.3.3
|
179
165
|
description: Extends brooklynDev/airborne
|
180
166
|
email:
|
181
167
|
- keithrw@comcast.net
|
@@ -199,24 +185,23 @@ homepage: https://github.com/keithrw54/spaceborne.git
|
|
199
185
|
licenses:
|
200
186
|
- MIT
|
201
187
|
metadata: {}
|
202
|
-
post_install_message:
|
188
|
+
post_install_message:
|
203
189
|
rdoc_options: []
|
204
190
|
require_paths:
|
205
191
|
- lib
|
206
192
|
required_ruby_version: !ruby/object:Gem::Requirement
|
207
193
|
requirements:
|
208
|
-
- -
|
194
|
+
- - '='
|
209
195
|
- !ruby/object:Gem::Version
|
210
|
-
version: '
|
196
|
+
version: '2.5'
|
211
197
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
212
198
|
requirements:
|
213
199
|
- - ">="
|
214
200
|
- !ruby/object:Gem::Version
|
215
201
|
version: '0'
|
216
202
|
requirements: []
|
217
|
-
|
218
|
-
|
219
|
-
signing_key:
|
203
|
+
rubygems_version: 3.0.8
|
204
|
+
signing_key:
|
220
205
|
specification_version: 4
|
221
206
|
summary: Gem supporting API testing
|
222
207
|
test_files: []
|