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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 5efd85c470ba6cc01806761449631cf025c8c292
4
- data.tar.gz: bd6a6120ed5496efc901d2d0e9adb23682bc49b6
2
+ SHA256:
3
+ metadata.gz: 2c343c5f42e85c4baf10f9f22b530e7e9e1474226d7b5d0d7491eacd31046a72
4
+ data.tar.gz: dafa9fb460a2b631d9245eaa4b0dbfdd5476c0cf4f58ead485d668a27482fe13
5
5
  SHA512:
6
- metadata.gz: a99e989c2bb0620be367e6c02e4d70301c97f6480343a78ae5703f20d4e8bf2da47f5176db333ac3c9b2bf07153d569a7eba406b0175b5c793276d069b28fe69
7
- data.tar.gz: 67b291bcb88be8c825f3e4d452e23ed572a86c8b617ad94ab90c4a153d103e3084fb363c43f017c9d0e5d263f612ecd2c2f1be130f641ce82019d706d656f4f2
6
+ metadata.gz: e3fa2aa4790c0e737205c089676186f3ebec3dde0bffde2c7d473677020e6e85f20995a2f047afc28d42985b02aa1ac990ab527becc7e9f88c8699c6d43f3d1a
7
+ data.tar.gz: 2de0cdcb90b4784582c51b4ad1e26e1accc59f01f0ea8f90ea197686d9a76a5b0bb1bf12648bf34e112a6f311359166089320c49143f538473a53895ecc6efe1
@@ -1 +1 @@
1
- ruby-2.4.1
1
+ ruby-2.5.5
@@ -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 make_request(method, url, options = {})
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
- send_restclient(method, get_url(url), @request_body, hdrs)
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
- { "Content-Type" => 'application/json' }
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(path)
163
+ def exception_path_adder(args)
148
164
  yield
149
165
  rescue Airborne::ExpectationError => e
150
- e.message << " at location #{path}"
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[0]) do
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[0]) do
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[0]) do
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[0]) do
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 get_by_path(path, json, &block)
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
- type = false
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
- walk_with_path(type, index, path, parts, json, &block) && return
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
- begin
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'
@@ -1,3 +1,3 @@
1
1
  module Spaceborne
2
- VERSION = '0.1.21'.freeze
2
+ VERSION = '0.1.26'.freeze
3
3
  end
@@ -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.0'
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 'bundler', '~> 1.11'
33
- spec.add_development_dependency 'byebug', '~> 2.0'
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.21
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: 2019-02-14 00:00:00.000000000 Z
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.0
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.0
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: '2.0'
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: '2.0'
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: '10.0'
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: '10.0'
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: '0'
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
- rubyforge_project:
218
- rubygems_version: 2.6.14
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: []