rswag-specs 1.0.2 → 1.0.3

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: 6ad505db2b445cd38fdcdd4c78aadefe9b996b63
4
- data.tar.gz: 822fc014d46cb7c1b70e98caa330d41020b2a909
3
+ metadata.gz: 2643849549d65f9a5854dad6d177588db4390bd9
4
+ data.tar.gz: c164db99213ff0543cb2359a629bba5c9e162a64
5
5
  SHA512:
6
- metadata.gz: 5001a2a51c3bbd6693466d5f6674ffa7a2662c5e9017814df96e2461a20aa854df6e8ffd63ff483f4e17f9ca62da6ee3ff35f37f23eff35b6d632530d7de095d
7
- data.tar.gz: 6d939b5b8bdb64cb2542e4012bad4c4bc14166bc2a92f3ed6da1a0eb4d8af0632c3257ee94fddd4bdc9c9938db5b01fbba2967c8c50222346b5af50d85e6e2c0
6
+ metadata.gz: 8f96616d29280adf887600c0c33cf31cac2899de178101ec27641e5f32a3f685ec02108016925fac17899b2663f155c197852d3c8932db8da7f6932300ce8bba
7
+ data.tar.gz: b85ec04810dfb22c059f61a1519ffeb4c7dcdc28ed675b98bbe7ec314680eb31dd70476d9fe03e0c04eda2634cc117027692280c2de2c1c4999360d08f5f2f1a
@@ -0,0 +1,25 @@
1
+ require 'json-schema'
2
+
3
+ module Rswag
4
+ module Specs
5
+ class ExtendedSchema < JSON::Schema::Validator
6
+
7
+ def initialize
8
+ super
9
+ extend_schema_definition("http://json-schema.org/draft-04/schema#")
10
+ @attributes['type'] = ExtendedTypeAttribute
11
+ @uri = URI.parse('http://tempuri.org/rswag/specs/extended_schema')
12
+ end
13
+ end
14
+
15
+ class ExtendedTypeAttribute < JSON::Schema::TypeV4Attribute
16
+
17
+ def self.validate(current_schema, data, fragments, processor, validator, options={})
18
+ return if data.nil? && current_schema.schema['x-nullable'] == true
19
+ super
20
+ end
21
+ end
22
+
23
+ JSON::Validator.register_validator(ExtendedSchema.new)
24
+ end
25
+ end
@@ -1,4 +1,6 @@
1
+ require 'active_support/core_ext/hash/slice'
1
2
  require 'json-schema'
3
+ require 'rswag/specs/extended_schema'
2
4
 
3
5
  module Rswag
4
6
  module Specs
@@ -23,10 +25,14 @@ module Rswag
23
25
  end
24
26
 
25
27
  def validate_body!(body)
26
- schema = @api_metadata[:response][:schema]
27
- return if schema.nil?
28
+ response_schema = @api_metadata[:response][:schema]
29
+ return if response_schema.nil?
30
+
28
31
  begin
29
- JSON::Validator.validate!(schema.merge(@global_metadata), body)
32
+ validation_schema = response_schema
33
+ .merge('$schema' => 'http://tempuri.org/rswag/specs/extended_schema')
34
+ .merge(@global_metadata.slice(:definitions))
35
+ JSON::Validator.validate!(validation_schema, body)
30
36
  rescue JSON::Schema::ValidationError => ex
31
37
  raise UnexpectedResponse, "Expected response body to match schema: #{ex.message}"
32
38
  end
@@ -1,5 +1,5 @@
1
1
  module Rswag
2
2
  module Specs
3
- VERSION = '1.0.2'
3
+ VERSION = '1.0.3'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rswag-specs
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richie Morris
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-15 00:00:00.000000000 Z
11
+ date: 2016-10-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -81,6 +81,7 @@ files:
81
81
  - lib/rswag/specs/configuration.rb
82
82
  - lib/rswag/specs/example_group_helpers.rb
83
83
  - lib/rswag/specs/example_helpers.rb
84
+ - lib/rswag/specs/extended_schema.rb
84
85
  - lib/rswag/specs/railtie.rb
85
86
  - lib/rswag/specs/request_factory.rb
86
87
  - lib/rswag/specs/response_validator.rb