committee 3.0.0.alpha → 3.0.0.beta

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.
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.