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.
Files changed (39) hide show
  1. checksums.yaml +5 -5
  2. data/lib/committee/drivers/hyper_schema.rb +8 -2
  3. data/lib/committee/drivers/open_api_2.rb +7 -2
  4. data/lib/committee/drivers/open_api_3.rb +9 -4
  5. data/lib/committee/drivers.rb +46 -0
  6. data/lib/committee/middleware/base.rb +9 -11
  7. data/lib/committee/middleware/response_validation.rb +8 -5
  8. data/lib/committee/request_unpacker.rb +4 -1
  9. data/lib/committee/{parameter_coercer.rb → schema_validator/hyper_schema/parameter_coercer.rb} +1 -2
  10. data/lib/committee/schema_validator/hyper_schema/request_validator.rb +1 -5
  11. data/lib/committee/schema_validator/hyper_schema/response_validator.rb +3 -9
  12. data/lib/committee/schema_validator/hyper_schema/router.rb +1 -1
  13. data/lib/committee/schema_validator/hyper_schema.rb +5 -4
  14. data/lib/committee/schema_validator/open_api_3/operation_wrapper.rb +46 -19
  15. data/lib/committee/schema_validator/open_api_3/request_validator.rb +14 -4
  16. data/lib/committee/schema_validator/open_api_3/response_validator.rb +9 -20
  17. data/lib/committee/schema_validator/open_api_3/router.rb +15 -4
  18. data/lib/committee/schema_validator/open_api_3.rb +14 -5
  19. data/lib/committee/schema_validator/option.rb +2 -5
  20. data/lib/committee/schema_validator/schema_validator.rb +15 -0
  21. data/lib/committee/test/methods.rb +3 -5
  22. data/lib/committee.rb +3 -1
  23. data/test/drivers/open_api_3_test.rb +2 -1
  24. data/test/drivers_test.rb +69 -0
  25. data/test/middleware/base_test.rb +20 -5
  26. data/test/middleware/request_validation_open_api_3_test.rb +136 -259
  27. data/test/middleware/request_validation_test.rb +18 -3
  28. data/test/middleware/response_validation_open_api_3_test.rb +83 -16
  29. data/test/middleware/response_validation_test.rb +19 -7
  30. data/test/middleware/stub_test.rb +1 -1
  31. data/test/{parameter_coercer_test.rb → schema_validator/hyper_schema/parameter_coercer_test.rb} +3 -3
  32. data/test/schema_validator/hyper_schema/router_test.rb +6 -0
  33. data/test/schema_validator/open_api_3/operation_wrapper_test.rb +29 -13
  34. data/test/schema_validator/open_api_3/request_validator_test.rb +31 -132
  35. data/test/schema_validator/open_api_3/response_validator_test.rb +19 -5
  36. data/test/test/methods_new_version_test.rb +19 -3
  37. data/test/test/methods_test.rb +15 -8
  38. data/test/test_helper.rb +15 -16
  39. metadata +8 -7
@@ -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 = {open_api_3: open_api_3_schema}
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(/response header must be set to/i, e.message)
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
- [200, headers, [response]]
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 ||= begin
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 ||= begin
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 ||= begin
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("./test/data/hyperschema/paas.json"))
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("./test/data/openapi2/petstore-expanded.json"))
69
+ JSON.parse(File.read(open_api_2_filepath))
79
70
  end
80
71
 
81
72
  def open_api_3_data
82
- OpenAPIParser.parse(YAML.load_file(open_api_3_data_path))
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 open_api_3_data_path
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.alpha
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: 2018-12-26 00:00:00.000000000 Z
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.1.5
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.1.5
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.4.5.1
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.