Skip to content

Commit dab46d2

Browse files
authored
Raise error when loading OpenAPI 3.1 schema (#418)
1 parent 68ebcf4 commit dab46d2

File tree

4 files changed

+56
-0
lines changed

4 files changed

+56
-0
lines changed

lib/committee/drivers.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,10 @@ def self.load_from_data(hash, schema_path = nil, parser_options: {})
7070
return Committee::Drivers::OpenAPI3::Driver.new.parse(openapi)
7171
end
7272

73+
if hash['openapi']&.start_with?('3.1.')
74+
raise OpenAPI3Unsupported.new('Committee does not support OpenAPI 3.1 yet')
75+
end
76+
7377
driver = if hash['swagger'] == '2.0'
7478
Committee::Drivers::OpenAPI2::Driver.new
7579
else

test/data/openapi3/3_1.yaml

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
openapi: 3.1.0
2+
info:
3+
version: 1.0.0
4+
title: OpenAPI 3.1 Test
5+
description: A Sample file
6+
paths:
7+
/characters:
8+
get:
9+
description: get characters
10+
parameters:
11+
- name: school_name
12+
in: query
13+
description: school name to filter by
14+
required: false
15+
style: form
16+
schema:
17+
type: array
18+
items:
19+
type: string
20+
responses:
21+
'200':
22+
description: success
23+
content:
24+
application/json:
25+
schema:
26+
type: object

test/drivers_test.rb

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,13 @@
4848
assert_kind_of Committee::Drivers::OpenAPI3::Schema, s
4949
end
5050

51+
it 'fails to load OpenAPI 3.1' do
52+
e = assert_raises(Committee::OpenAPI3Unsupported) do
53+
Committee::Drivers.load_from_file(open_api_3_1_schema_path, parser_options:{strict_reference_validation: true})
54+
end
55+
assert_equal 'Committee does not support OpenAPI 3.1 yet', e.message
56+
end
57+
5158
it 'fails to load OpenAPI 3 with invalid reference' do
5259
parser_options = { strict_reference_validation: true }
5360
assert_raises(OpenAPIParser::MissingReferenceError) do
@@ -138,6 +145,13 @@
138145
assert_kind_of Committee::Drivers::Schema, s
139146
assert_kind_of Committee::Drivers::HyperSchema::Schema, s
140147
end
148+
149+
it 'fails to load OpenAPI 3.1' do
150+
e = assert_raises(Committee::OpenAPI3Unsupported) do
151+
Committee::Drivers.load_from_data(open_api_3_1_data)
152+
end
153+
assert_equal 'Committee does not support OpenAPI 3.1 yet', e.message
154+
end
141155
end
142156
end
143157

test/test_helper.rb

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,14 @@ def open_api_3_data
9090
end
9191
end
9292

93+
def open_api_3_1_data
94+
if YAML.respond_to?(:unsafe_load_file)
95+
YAML.unsafe_load_file(open_api_3_1_schema_path)
96+
else
97+
YAML.load_file(open_api_3_1_schema_path)
98+
end
99+
end
100+
93101
def hyper_schema_schema_path
94102
"./test/data/hyperschema/paas.json"
95103
end
@@ -114,6 +122,10 @@ def open_api_3_0_1_schema_path
114122
"./test/data/openapi3/3_0_1.yaml"
115123
end
116124

125+
def open_api_3_1_schema_path
126+
"./test/data/openapi3/3_1.yaml"
127+
end
128+
117129
def open_api_3_invalid_reference_path
118130
"./test/data/openapi3/invalid_reference.yaml"
119131
end

0 commit comments

Comments
 (0)