committee 1.14.0 → 1.14.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 21f051249450debd2c219dc07399401ab15a4d65
4
- data.tar.gz: 91721da33a3abfec0f4a24fe4ec2555758465c37
3
+ metadata.gz: 6b93ed460e34afc046f016a0b28c53c221bb4eb5
4
+ data.tar.gz: 0670a4037229f06312799901ade0e94bf416a95e
5
5
  SHA512:
6
- metadata.gz: b45011a0c6bc3e36f2e05317ee7888692c621452234cead0c1d06fe522d700229af7b9541873b580794de71a8d1e616376ba05e6b3fe96759f27b3b3777e9cb3
7
- data.tar.gz: 15d57615ecfe1b5a53315269a8cc534b5bbbed99de2a12e6167263faf4abc84fb9c888f4bb5795da08a124ca2b41e53a738ccec44ff9c38328596d5b916c25e2
6
+ metadata.gz: c64af87f69eeeb24ba0b6dd0e9baa873c436d67e452dfde3c432e318d3cf583ec536dd1faed3c136ce1e4d0a2b90aac17083b861492ce0ed518d24ea2ede4f36
7
+ data.tar.gz: 9fcc322cc7e10fa8299fc0025dada82a5222c3546988737ed344f06d9e809ccf1c6a010a193d1e49378ba3c2767b0e340652793bcd8f22edf0d7c2590795a96e
@@ -1,6 +1,8 @@
1
1
  module Committee::Middleware
2
2
  class ResponseValidation < Base
3
- def initialize(app, options={})
3
+ attr_reader :validate_errors
4
+
5
+ def initialize(app, options = {})
4
6
  super
5
7
  @validate_errors = options[:validate_errors]
6
8
  end
@@ -14,7 +16,7 @@ module Committee::Middleware
14
16
  full_body << chunk
15
17
  end
16
18
  data = JSON.parse(full_body)
17
- Committee::ResponseValidator.new(link).call(status, headers, data)
19
+ Committee::ResponseValidator.new(link, validate_errors: validate_errors).call(status, headers, data)
18
20
  end
19
21
 
20
22
  [status, headers, response]
@@ -27,7 +29,7 @@ module Committee::Middleware
27
29
  end
28
30
 
29
31
  def validate?(status)
30
- Committee::ResponseValidator.validate?(status)
32
+ Committee::ResponseValidator.validate?(status, validate_errors: validate_errors)
31
33
  end
32
34
  end
33
35
  end
@@ -1,7 +1,10 @@
1
1
  module Committee
2
2
  class ResponseValidator
3
- def initialize(link)
3
+ attr_reader :validate_errors
4
+
5
+ def initialize(link, options = {})
4
6
  @link = link
7
+ @validate_errors = options[:validate_errors]
5
8
 
6
9
  # we should eventually move off of validating against parent schema too
7
10
  # ... this is a Herokuism and not in the specification
@@ -9,8 +12,10 @@ module Committee
9
12
  @validator = JsonSchema::Validator.new(schema)
10
13
  end
11
14
 
12
- def self.validate?(status)
13
- status != 204 and @validate_errors || (200...300).include?(status)
15
+ def self.validate?(status, options = {})
16
+ validate_errors = options[:validate_errors]
17
+
18
+ status != 204 and validate_errors || (200...300).include?(status)
14
19
  end
15
20
 
16
21
  def call(status, headers, data)
@@ -32,7 +37,7 @@ module Committee
32
37
  return if data == nil
33
38
  end
34
39
 
35
- if self.class.validate?(status) && !@validator.validate(data)
40
+ if self.class.validate?(status, validate_errors: validate_errors) && !@validator.validate(data)
36
41
  errors = JsonSchema::SchemaError.aggregate(@validator.errors).join("\n")
37
42
  raise InvalidResponse, "Invalid response.\n\n#{errors}"
38
43
  end
@@ -26,6 +26,14 @@ describe Committee::Middleware::ResponseValidation do
26
26
  assert_equal 404, last_response.status
27
27
  end
28
28
 
29
+ it "optionally validates non-2xx invalid responses" do
30
+ @app = new_rack_app("", {}, {app_status: 404, validate_errors: true})
31
+
32
+ get "/apps"
33
+ assert_equal 500, last_response.status
34
+ assert_match /valid JSON/i, last_response.body
35
+ end
36
+
29
37
  it "passes through a 204 (no content) response" do
30
38
  @app = new_rack_app("", {}, app_status: 204)
31
39
  get "/apps"
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: 1.14.0
4
+ version: 1.14.1
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: 2016-04-10 00:00:00.000000000 Z
12
+ date: 2016-05-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json_schema
@@ -156,7 +156,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
156
156
  version: '0'
157
157
  requirements: []
158
158
  rubyforge_project:
159
- rubygems_version: 2.4.5.1
159
+ rubygems_version: 2.5.1
160
160
  signing_key:
161
161
  specification_version: 4
162
162
  summary: A collection of Rack middleware to support JSON Schema.