committee 3.0.0.alpha → 3.0.0.beta
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/lib/committee/drivers/hyper_schema.rb +8 -2
- data/lib/committee/drivers/open_api_2.rb +7 -2
- data/lib/committee/drivers/open_api_3.rb +9 -4
- data/lib/committee/drivers.rb +46 -0
- data/lib/committee/middleware/base.rb +9 -11
- data/lib/committee/middleware/response_validation.rb +8 -5
- data/lib/committee/request_unpacker.rb +4 -1
- data/lib/committee/{parameter_coercer.rb → schema_validator/hyper_schema/parameter_coercer.rb} +1 -2
- data/lib/committee/schema_validator/hyper_schema/request_validator.rb +1 -5
- data/lib/committee/schema_validator/hyper_schema/response_validator.rb +3 -9
- data/lib/committee/schema_validator/hyper_schema/router.rb +1 -1
- data/lib/committee/schema_validator/hyper_schema.rb +5 -4
- data/lib/committee/schema_validator/open_api_3/operation_wrapper.rb +46 -19
- data/lib/committee/schema_validator/open_api_3/request_validator.rb +14 -4
- data/lib/committee/schema_validator/open_api_3/response_validator.rb +9 -20
- data/lib/committee/schema_validator/open_api_3/router.rb +15 -4
- data/lib/committee/schema_validator/open_api_3.rb +14 -5
- data/lib/committee/schema_validator/option.rb +2 -5
- data/lib/committee/schema_validator/schema_validator.rb +15 -0
- data/lib/committee/test/methods.rb +3 -5
- data/lib/committee.rb +3 -1
- data/test/drivers/open_api_3_test.rb +2 -1
- data/test/drivers_test.rb +69 -0
- data/test/middleware/base_test.rb +20 -5
- data/test/middleware/request_validation_open_api_3_test.rb +136 -259
- data/test/middleware/request_validation_test.rb +18 -3
- data/test/middleware/response_validation_open_api_3_test.rb +83 -16
- data/test/middleware/response_validation_test.rb +19 -7
- data/test/middleware/stub_test.rb +1 -1
- data/test/{parameter_coercer_test.rb → schema_validator/hyper_schema/parameter_coercer_test.rb} +3 -3
- data/test/schema_validator/hyper_schema/router_test.rb +6 -0
- data/test/schema_validator/open_api_3/operation_wrapper_test.rb +29 -13
- data/test/schema_validator/open_api_3/request_validator_test.rb +31 -132
- data/test/schema_validator/open_api_3/response_validator_test.rb +19 -5
- data/test/test/methods_new_version_test.rb +19 -3
- data/test/test/methods_test.rb +15 -8
- data/test/test_helper.rb +15 -16
- metadata +8 -7
data/test/test/methods_test.rb
CHANGED
@@ -27,7 +27,6 @@ describe Committee::Test::Methods do
|
|
27
27
|
@committee_router = nil
|
28
28
|
@committee_schema = nil
|
29
29
|
@committee_options = nil
|
30
|
-
@validate_errors = nil
|
31
30
|
end
|
32
31
|
|
33
32
|
describe "Hyper-Schema" do
|
@@ -58,7 +57,7 @@ describe Committee::Test::Methods do
|
|
58
57
|
|
59
58
|
describe "OpenAPI3" do
|
60
59
|
before do
|
61
|
-
@committee_options = {
|
60
|
+
@committee_options = {schema: open_api_3_schema}
|
62
61
|
|
63
62
|
@correct_response = { string_1: :honoka }
|
64
63
|
end
|
@@ -70,26 +69,34 @@ describe Committee::Test::Methods do
|
|
70
69
|
assert_schema_conform
|
71
70
|
end
|
72
71
|
|
73
|
-
# TODO: raise don't exist content-type error option
|
74
|
-
=begin
|
75
72
|
it "detects an invalid response Content-Type" do
|
76
73
|
@app = new_rack_app(JSON.generate([@correct_response]), {})
|
77
74
|
get "/characters"
|
78
75
|
e = assert_raises(Committee::InvalidResponse) do
|
79
76
|
assert_schema_conform
|
80
77
|
end
|
81
|
-
assert_match(/
|
78
|
+
assert_match(/don't exist response definition/i, e.message)
|
79
|
+
end
|
80
|
+
|
81
|
+
it "detects an invalid response status code" do
|
82
|
+
@app = new_rack_app(JSON.generate([@correct_response]), {}, 419)
|
83
|
+
|
84
|
+
get "/characters"
|
85
|
+
|
86
|
+
e = assert_raises(Committee::InvalidResponse) do
|
87
|
+
assert_schema_conform
|
88
|
+
end
|
89
|
+
assert_match(/don't exist status code definition/i, e.message)
|
82
90
|
end
|
83
|
-
=end
|
84
91
|
end
|
85
92
|
end
|
86
93
|
|
87
94
|
private
|
88
95
|
|
89
|
-
def new_rack_app(response, headers={ "Content-Type" => "application/json" })
|
96
|
+
def new_rack_app(response, headers={ "Content-Type" => "application/json" }, status_code = 200)
|
90
97
|
Rack::Builder.new {
|
91
98
|
run lambda { |_|
|
92
|
-
[
|
99
|
+
[status_code, headers, [response]]
|
93
100
|
}
|
94
101
|
}
|
95
102
|
end
|
data/test/test_helper.rb
CHANGED
@@ -48,40 +48,39 @@ ValidPet = {
|
|
48
48
|
}.freeze
|
49
49
|
|
50
50
|
def hyper_schema
|
51
|
-
@hyper_schema ||=
|
52
|
-
driver = Committee::Drivers::HyperSchema.new
|
53
|
-
driver.parse(hyper_schema_data)
|
54
|
-
end
|
51
|
+
@hyper_schema ||= Committee::Drivers.load_from_json(hyper_schema_filepath)
|
55
52
|
end
|
56
53
|
|
57
54
|
def open_api_2_schema
|
58
|
-
@open_api_2_schema ||=
|
59
|
-
driver = Committee::Drivers::OpenAPI2.new
|
60
|
-
driver.parse(open_api_2_data)
|
61
|
-
end
|
55
|
+
@open_api_2_schema ||= Committee::Drivers.load_from_file(open_api_2_filepath)
|
62
56
|
end
|
63
57
|
|
64
58
|
def open_api_3_schema
|
65
|
-
@open_api_3_schema ||=
|
66
|
-
driver = Committee::Drivers::OpenAPI3.new
|
67
|
-
driver.parse(open_api_3_data)
|
68
|
-
end
|
59
|
+
@open_api_3_schema ||= Committee::Drivers.load_from_data(open_api_3_data)
|
69
60
|
end
|
70
61
|
|
71
62
|
# Don't cache this because we'll often manipulate the created hash in tests.
|
72
63
|
def hyper_schema_data
|
73
|
-
JSON.parse(File.read(
|
64
|
+
JSON.parse(File.read(hyper_schema_filepath))
|
74
65
|
end
|
75
66
|
|
76
67
|
# Don't cache this because we'll often manipulate the created hash in tests.
|
77
68
|
def open_api_2_data
|
78
|
-
JSON.parse(File.read(
|
69
|
+
JSON.parse(File.read(open_api_2_filepath))
|
79
70
|
end
|
80
71
|
|
81
72
|
def open_api_3_data
|
82
|
-
|
73
|
+
YAML.load_file(open_api_3_filepath)
|
74
|
+
end
|
75
|
+
|
76
|
+
def hyper_schema_filepath
|
77
|
+
"./test/data/hyperschema/paas.json"
|
78
|
+
end
|
79
|
+
|
80
|
+
def open_api_2_filepath
|
81
|
+
"./test/data/openapi2/petstore-expanded.json"
|
83
82
|
end
|
84
83
|
|
85
|
-
def
|
84
|
+
def open_api_3_filepath
|
86
85
|
"./test/data/openapi3/normal.yml"
|
87
86
|
end
|
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: 3.0.0.
|
4
|
+
version: 3.0.0.beta
|
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:
|
12
|
+
date: 2019-01-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: json_schema
|
@@ -51,14 +51,14 @@ dependencies:
|
|
51
51
|
requirements:
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.
|
54
|
+
version: 0.2.2
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
57
|
version_requirements: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 0.
|
61
|
+
version: 0.2.2
|
62
62
|
- !ruby/object:Gem::Dependency
|
63
63
|
name: minitest
|
64
64
|
requirement: !ruby/object:Gem::Requirement
|
@@ -178,9 +178,9 @@ files:
|
|
178
178
|
- lib/committee/middleware/request_validation.rb
|
179
179
|
- lib/committee/middleware/response_validation.rb
|
180
180
|
- lib/committee/middleware/stub.rb
|
181
|
-
- lib/committee/parameter_coercer.rb
|
182
181
|
- lib/committee/request_unpacker.rb
|
183
182
|
- lib/committee/schema_validator/hyper_schema.rb
|
183
|
+
- lib/committee/schema_validator/hyper_schema/parameter_coercer.rb
|
184
184
|
- lib/committee/schema_validator/hyper_schema/request_validator.rb
|
185
185
|
- lib/committee/schema_validator/hyper_schema/response_generator.rb
|
186
186
|
- lib/committee/schema_validator/hyper_schema/response_validator.rb
|
@@ -192,6 +192,7 @@ files:
|
|
192
192
|
- lib/committee/schema_validator/open_api_3/response_validator.rb
|
193
193
|
- lib/committee/schema_validator/open_api_3/router.rb
|
194
194
|
- lib/committee/schema_validator/option.rb
|
195
|
+
- lib/committee/schema_validator/schema_validator.rb
|
195
196
|
- lib/committee/test/methods.rb
|
196
197
|
- lib/committee/validation_error.rb
|
197
198
|
- test/bin/committee_stub_test.rb
|
@@ -207,8 +208,8 @@ files:
|
|
207
208
|
- test/middleware/response_validation_open_api_3_test.rb
|
208
209
|
- test/middleware/response_validation_test.rb
|
209
210
|
- test/middleware/stub_test.rb
|
210
|
-
- test/parameter_coercer_test.rb
|
211
211
|
- test/request_unpacker_test.rb
|
212
|
+
- test/schema_validator/hyper_schema/parameter_coercer_test.rb
|
212
213
|
- test/schema_validator/hyper_schema/request_validator_test.rb
|
213
214
|
- test/schema_validator/hyper_schema/response_generator_test.rb
|
214
215
|
- test/schema_validator/hyper_schema/response_validator_test.rb
|
@@ -241,7 +242,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
241
242
|
version: 1.3.1
|
242
243
|
requirements: []
|
243
244
|
rubyforge_project:
|
244
|
-
rubygems_version: 2.
|
245
|
+
rubygems_version: 2.7.3
|
245
246
|
signing_key:
|
246
247
|
specification_version: 4
|
247
248
|
summary: A collection of Rack middleware to support JSON Schema.
|