committee 2.4.0 → 2.5.0
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/lib/committee/drivers/open_api_2.rb +20 -0
- data/test/drivers/open_api_2_test.rb +81 -0
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 80e547ab72368f1c052c9ca8617977a0291855b598465baf2021a2e6724ba27e
|
|
4
|
+
data.tar.gz: cf618eb555e631ef4a6dc51b0b8bcc856b58102193eaffb84d5cd6e68f2852da
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2db3579f4329429aac202ff34c111b0f92609de39ab6f1d1e4264910d42612d1b8c20fcdf464881f148012086e57bd0fedd3730dec76d500235764a599e0676d
|
|
7
|
+
data.tar.gz: d680e5a57f7393a64336e17a593a862bab689992d032b8ef5fabfa735d80815ee6739801602c277b851d930f296b511b19bda412555e1a8c96b4150a9f92f783
|
|
@@ -173,6 +173,26 @@ module Committee::Drivers
|
|
|
173
173
|
# therefore this should map over quite well.
|
|
174
174
|
param_schema.type = [param_data["type"]]
|
|
175
175
|
|
|
176
|
+
param_schema.enum = param_data["enum"] unless param_data["enum"].nil?
|
|
177
|
+
|
|
178
|
+
# validation: string
|
|
179
|
+
param_schema.format = param_data["format"] unless param_data["format"].nil?
|
|
180
|
+
param_schema.pattern = param_data["pattern"] unless param_data["pattern"].nil?
|
|
181
|
+
param_schema.min_length = param_data["minLength"] unless param_data["minLength"].nil?
|
|
182
|
+
param_schema.max_length = param_data["maxLength"] unless param_data["maxLength"].nil?
|
|
183
|
+
|
|
184
|
+
# validation: array
|
|
185
|
+
param_schema.min_items = param_data["minItems"] unless param_data["minItems"].nil?
|
|
186
|
+
param_schema.max_items = param_data["maxItems"] unless param_data["maxItems"].nil?
|
|
187
|
+
param_schema.unique_items = param_data["uniqueItems"] unless param_data["uniqueItems"].nil?
|
|
188
|
+
|
|
189
|
+
# validation: number/integer
|
|
190
|
+
param_schema.min = param_data["minimum"] unless param_data["minimum"].nil?
|
|
191
|
+
param_schema.min_exclusive = param_data["exclusiveMinimum"] unless param_data["exclusiveMinimum"].nil?
|
|
192
|
+
param_schema.max = param_data["maximum"] unless param_data["maximum"].nil?
|
|
193
|
+
param_schema.max_exclusive = param_data["exclusiveMaximum"] unless param_data["exclusiveMaximum"].nil?
|
|
194
|
+
param_schema.multiple_of = param_data["multipleOf"] unless param_data["multipleOf"].nil?
|
|
195
|
+
|
|
176
196
|
# And same idea: despite parameters not being schemas, the items
|
|
177
197
|
# key (if preset) is actually a schema that defines each item of an
|
|
178
198
|
# array type, so we can just reflect that directly onto our
|
|
@@ -219,6 +219,19 @@ describe Committee::Drivers::OpenAPI2::ParameterSchemaBuilder do
|
|
|
219
219
|
assert_equal ["limit"], schema.properties.keys
|
|
220
220
|
assert_equal [], schema.required
|
|
221
221
|
assert_equal ["integer"], schema.properties["limit"].type
|
|
222
|
+
assert_nil schema.properties["limit"].enum
|
|
223
|
+
assert_nil schema.properties["limit"].format
|
|
224
|
+
assert_nil schema.properties["limit"].pattern
|
|
225
|
+
assert_nil schema.properties["limit"].min_length
|
|
226
|
+
assert_nil schema.properties["limit"].max_length
|
|
227
|
+
assert_nil schema.properties["limit"].min_items
|
|
228
|
+
assert_nil schema.properties["limit"].max_items
|
|
229
|
+
assert_nil schema.properties["limit"].unique_items
|
|
230
|
+
assert_nil schema.properties["limit"].min
|
|
231
|
+
assert_nil schema.properties["limit"].min_exclusive
|
|
232
|
+
assert_nil schema.properties["limit"].max
|
|
233
|
+
assert_nil schema.properties["limit"].max_exclusive
|
|
234
|
+
assert_nil schema.properties["limit"].multiple_of
|
|
222
235
|
end
|
|
223
236
|
|
|
224
237
|
it "reflects a required property into a schema" do
|
|
@@ -242,6 +255,9 @@ describe Committee::Drivers::OpenAPI2::ParameterSchemaBuilder do
|
|
|
242
255
|
{
|
|
243
256
|
"name" => "tags",
|
|
244
257
|
"type" => "array",
|
|
258
|
+
"minItems" => 1,
|
|
259
|
+
"maxItems" => 10,
|
|
260
|
+
"uniqueItems" => true,
|
|
245
261
|
"items" => {
|
|
246
262
|
"type" => "string"
|
|
247
263
|
}
|
|
@@ -252,9 +268,74 @@ describe Committee::Drivers::OpenAPI2::ParameterSchemaBuilder do
|
|
|
252
268
|
|
|
253
269
|
assert_nil schema_data
|
|
254
270
|
assert_equal ["array"], schema.properties["tags"].type
|
|
271
|
+
assert_equal 1, schema.properties["tags"].min_items
|
|
272
|
+
assert_equal 10, schema.properties["tags"].max_items
|
|
273
|
+
assert_equal true, schema.properties["tags"].unique_items
|
|
255
274
|
assert_equal({ "type" => "string" }, schema.properties["tags"].items)
|
|
256
275
|
end
|
|
257
276
|
|
|
277
|
+
it "reflects a enum property into a schema" do
|
|
278
|
+
data = {
|
|
279
|
+
"parameters" => [
|
|
280
|
+
{
|
|
281
|
+
"name" => "type",
|
|
282
|
+
"type" => "string",
|
|
283
|
+
"enum" => ["hoge", "fuga"]
|
|
284
|
+
}
|
|
285
|
+
]
|
|
286
|
+
}
|
|
287
|
+
schema, schema_data = call(data)
|
|
288
|
+
|
|
289
|
+
assert_nil schema_data
|
|
290
|
+
assert_equal ["hoge", "fuga"], schema.properties["type"].enum
|
|
291
|
+
end
|
|
292
|
+
|
|
293
|
+
it "reflects string properties into a schema" do
|
|
294
|
+
data = {
|
|
295
|
+
"parameters" => [
|
|
296
|
+
{
|
|
297
|
+
"name" => "password",
|
|
298
|
+
"type" => "string",
|
|
299
|
+
"format" => "password",
|
|
300
|
+
"pattern" => "[a-zA-Z0-9]+",
|
|
301
|
+
"minLength" => 6,
|
|
302
|
+
"maxLength" => 30
|
|
303
|
+
}
|
|
304
|
+
]
|
|
305
|
+
}
|
|
306
|
+
schema, schema_data = call(data)
|
|
307
|
+
|
|
308
|
+
assert_nil schema_data
|
|
309
|
+
assert_equal "password", schema.properties["password"].format
|
|
310
|
+
assert_equal "[a-zA-Z0-9]+", schema.properties["password"].pattern
|
|
311
|
+
assert_equal 6, schema.properties["password"].min_length
|
|
312
|
+
assert_equal 30, schema.properties["password"].max_length
|
|
313
|
+
end
|
|
314
|
+
|
|
315
|
+
it "reflects number properties into a schema" do
|
|
316
|
+
data = {
|
|
317
|
+
"parameters" => [
|
|
318
|
+
{
|
|
319
|
+
"name" => "limit",
|
|
320
|
+
"type" => "integer",
|
|
321
|
+
"minimum" => 20,
|
|
322
|
+
"exclusiveMinimum" => true,
|
|
323
|
+
"maximum" => 100,
|
|
324
|
+
"exclusiveMaximum" => false,
|
|
325
|
+
"multipleOf" => 10
|
|
326
|
+
}
|
|
327
|
+
]
|
|
328
|
+
}
|
|
329
|
+
schema, schema_data = call(data)
|
|
330
|
+
|
|
331
|
+
assert_nil schema_data
|
|
332
|
+
assert_equal 20, schema.properties["limit"].min
|
|
333
|
+
assert_equal true, schema.properties["limit"].min_exclusive
|
|
334
|
+
assert_equal 100, schema.properties["limit"].max
|
|
335
|
+
assert_equal false, schema.properties["limit"].max_exclusive
|
|
336
|
+
assert_equal 10, schema.properties["limit"].multiple_of
|
|
337
|
+
end
|
|
338
|
+
|
|
258
339
|
it "returns schema data for a body parameter" do
|
|
259
340
|
data = {
|
|
260
341
|
"parameters" => [
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: committee
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.5.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Brandur
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2019-01-
|
|
12
|
+
date: 2019-01-22 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: json_schema
|
|
@@ -213,7 +213,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
213
213
|
version: '0'
|
|
214
214
|
requirements: []
|
|
215
215
|
rubyforge_project:
|
|
216
|
-
rubygems_version: 2.7.
|
|
216
|
+
rubygems_version: 2.7.7
|
|
217
217
|
signing_key:
|
|
218
218
|
specification_version: 4
|
|
219
219
|
summary: A collection of Rack middleware to support JSON Schema.
|