swagger-diff 1.1.1 → 1.1.2

Sign up to get free protection for your applications and to get access to all the features.
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.