swagger-diff 1.1.1 → 1.1.2

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
2
  SHA1:
3
- metadata.gz: ddac5fb36158431f343142208ecd61a858bd66cf
4
- data.tar.gz: 74fab6bd47f4cf4c52865451bb25dc0fa082591b
3
+ metadata.gz: 114437451eebd07149d24f784a5f40685bc66db6
4
+ data.tar.gz: ca0e1c64220b868549c378aa9114c56053d602c9
5
5
  SHA512:
6
- metadata.gz: b23daecdda524a3181d6c321a73ddabcd6a1431320caccebd1fee8a17ff33c4cd5bc74385e1a97b268f7d2c02faecc87573ed1d8c60310076b707722b9db466b
7
- data.tar.gz: 2213e486e794349ea51a0dc38fcd4d3f03748285a40050b0e1c4a070b75e22ffc65ad842742c44b1ce31576d2e3a558399dfe05238108167ec05e2887fc4aae4
6
+ metadata.gz: 70588382bc65dc6e55de998a3c8097f928784a80adb263b55dabcefb8cc9d932c1adf1ca0a83e924c0fd58fd6d1d1685bdf9befadcc425e50a1bb6e7ad959ecc
7
+ data.tar.gz: 5dde2c6cbdcec5b07febb27d290cb312318ce2ece012087a3a78a820d14500d0741b953f942fa0d56b1a0aafe8d1d278d3b979b6c5117fbb3a0a2a4ac59b091b
@@ -5,6 +5,13 @@ This project adheres to [Semantic Versioning](http://semver.org/).
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [1.1.2] - 2017-09-13
9
+
10
+ ### Fixed
11
+
12
+ * [#56](https://github.com/civisanalytics/swagger-diff/pull/56)
13
+ recursively parse non-ref response schemas (`properties` and `items`)
14
+
8
15
  ## [1.1.1] - 2017-08-23
9
16
 
10
17
  ### Added
@@ -97,7 +104,8 @@ This project adheres to [Semantic Versioning](http://semver.org/).
97
104
 
98
105
  * Initial Release
99
106
 
100
- [Unreleased]: https://github.com/civisanalytics/swagger-diff/compare/v1.1.1...HEAD
107
+ [Unreleased]: https://github.com/civisanalytics/swagger-diff/compare/v1.1.2...HEAD
108
+ [1.1.2]: https://github.com/civisanalytics/swagger-diff/compare/v1.1.1...v1.1.2
101
109
  [1.1.1]: https://github.com/civisanalytics/swagger-diff/compare/v1.1.0...v1.1.1
102
110
  [1.1.0]: https://github.com/civisanalytics/swagger-diff/compare/v1.0.5...v1.1.0
103
111
  [1.0.5]: https://github.com/civisanalytics/swagger-diff/compare/v1.0.4...v1.0.5
@@ -172,19 +172,28 @@ module Swagger
172
172
  properties_for_ref(prefix, definition['name'], definition, required)
173
173
  end
174
174
 
175
- def properties_for_ref(prefix, name, schema, required, list = false)
175
+ # rubocop:disable Metrics/ParameterLists
176
+ def add_property(ret, prefix, name, schema, required, list)
176
177
  key = "#{prefix}#{name}"
178
+ ret[:required].add(key) if required && required.include?(name)
179
+ loc = if schema['in']
180
+ schema['in']
181
+ else
182
+ 'body'
183
+ end
184
+ ret[:all].add("#{key} (in: #{loc}, type: #{schema['type']}#{'[]' if list})")
185
+ end
186
+ # rubocop:enable Metrics/ParameterLists
187
+
188
+ def properties_for_ref(prefix, name, schema, required, list = false)
177
189
  ret = { required: Set.new, all: Set.new }
178
- if schema.key?('$ref')
190
+ if schema['$ref']
179
191
  merge_refs!(ret, nested(schema['$ref'], prefix, name, list))
192
+ elsif schema['properties']
193
+ prefix = "#{name}#{'[]' if list}/"
194
+ merge_refs!(ret, properties(schema['properties'], schema['required'], prefix))
180
195
  else
181
- ret[:required].add(key) if required && required.include?(name)
182
- loc = if schema['in']
183
- schema['in']
184
- else
185
- 'body'
186
- end
187
- ret[:all].add("#{key} (in: #{loc}, type: #{schema['type']}#{'[]' if list})")
196
+ add_property(ret, prefix, name, schema, required, list)
188
197
  end
189
198
  ret
190
199
  end
@@ -211,16 +220,15 @@ module Swagger
211
220
  "#{key} (in: body, type: Hash[string, #{type}])"
212
221
  end
213
222
 
214
- # rubocop:disable Metrics/CyclomaticComplexity
215
223
  def properties(properties, required, prefix = '')
216
224
  ret = { required: Set.new, all: Set.new }
217
225
  properties.each do |name, schema|
218
226
  if schema['type'] == 'array'
219
227
  merge_refs!(ret, properties_for_ref(prefix, name, schema['items'], required, true))
220
- elsif schema['type'] == 'object'
228
+ elsif schema['type'] == 'object' || schema['properties']
221
229
  if schema['allOf']
222
230
  # TODO: handle nested allOfs.
223
- elsif schema['type'] && schema['type'] == 'object' && schema['properties']
231
+ elsif schema['properties']
224
232
  merge_refs!(ret, properties(schema['properties'], required, "#{prefix}#{name}/"))
225
233
  else
226
234
  ret[:all].add(hash_property(schema, prefix, name))
@@ -231,7 +239,6 @@ module Swagger
231
239
  end
232
240
  ret
233
241
  end
234
- # rubocop:enable Metrics/CyclomaticComplexity
235
242
 
236
243
  def request_params_inner(params)
237
244
  ret = { required: Set.new, all: Set.new }
@@ -1,5 +1,5 @@
1
1
  module Swagger
2
2
  module Diff
3
- VERSION = '1.1.1'.freeze
3
+ VERSION = '1.1.2'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: swagger-diff
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeff Cousens
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-08-23 00:00:00.000000000 Z
11
+ date: 2017-09-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json-schema
@@ -193,7 +193,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
193
193
  version: '0'
194
194
  requirements: []
195
195
  rubyforge_project:
196
- rubygems_version: 2.6.11
196
+ rubygems_version: 2.6.13
197
197
  signing_key:
198
198
  specification_version: 4
199
199
  summary: Utility for comparing two OAI (fka Swagger) specifications.