openapi_contracts 0.10.0 → 0.12.0

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
  SHA256:
3
- metadata.gz: 5891083b3cb25419145aab30a963c61f28973c40b8a4a74ea080b63bc970670b
4
- data.tar.gz: 5febe1b938ba77edef2e6955e3b8cf8a161f40e5b5f828c6cc39f5105ed734d7
3
+ metadata.gz: 7fa5c81703e10335348cefdfdf14ada22c1a66a4017c71e0fd74e2499e95cd75
4
+ data.tar.gz: ef6ab8b10609f9e048f9ee61cdd017883a4a9c8b7a8f3166ac3891e5e6d51e52
5
5
  SHA512:
6
- metadata.gz: 87441e69b4caa9ac627e82c27e3d0b0e15162da1587c3bdb7ed4f5c2102fdda02f583df01652676d056b60af24fa9c67dedf38e38b1dfed346211f439de640c2
7
- data.tar.gz: a725d1696dc0e7a3ee19bc3c46c1248f0ada9185bb492f44ea5c571944d98dbb6eb0f69625f68169ed931717782438524bbdc337014ea83116ad60a2d565b545
6
+ metadata.gz: fb69135e230360714f93b9285efa0fa7cd1cc4b2ab524b5dac1a1bf925ef2cf98a92475b6c7d5528892f2208ba42ee0f71366280808914bb6976ec91db5d3df7
7
+ data.tar.gz: 71fc02b108dae2bdcf2bcbc40ef7faca01acee5c772a57ec155426ca4aec42b5317e89f828624b2126f658f276261762ccc8eb29b6be2c1cd6f5c9f90663996f
@@ -25,10 +25,10 @@ module OpenapiContracts
25
25
 
26
26
  def path_regexp
27
27
  @path_regexp ||= begin
28
- re = /\{(\S+)\}/
28
+ re = /\{([^\}]+)\}/
29
29
  @path.gsub(re) { |placeholder|
30
30
  placeholder.match(re) { |m| "(?<#{m[1]}>[^/]*)" }
31
- }.then { |str| Regexp.new(str) }
31
+ }.then { |str| Regexp.new("^#{str}$") }
32
32
  end
33
33
  end
34
34
 
@@ -35,20 +35,20 @@ module OpenapiContracts
35
35
  end
36
36
 
37
37
  # Returns an Enumerator over all Operations
38
- def operations(&block)
38
+ def operations(&block) # rubocop:disable Naming/BlockForwarding
39
39
  return enum_for(:operations) unless block_given?
40
40
 
41
41
  paths.each do |path|
42
- path.operations.each(&block)
42
+ path.operations.each(&block) # rubocop:disable Naming/BlockForwarding
43
43
  end
44
44
  end
45
45
 
46
46
  # Returns an Enumerator over all Responses
47
- def responses(&block)
47
+ def responses(&block) # rubocop:disable Naming/BlockForwarding
48
48
  return enum_for(:responses) unless block_given?
49
49
 
50
50
  operations.each do |operation|
51
- operation.responses.each(&block)
51
+ operation.responses.each(&block) # rubocop:disable Naming/BlockForwarding
52
52
  end
53
53
  end
54
54
 
@@ -36,7 +36,7 @@ module OpenapiContracts
36
36
  def matchers
37
37
  env = Env.new(
38
38
  options: @options,
39
- operation: operation,
39
+ operation:,
40
40
  request: @request,
41
41
  response: @response
42
42
  )
@@ -1,13 +1,25 @@
1
1
  module OpenapiContracts::Parser::Transformers
2
2
  class Pointer < Base
3
3
  def call(object)
4
+ transform_discriminator(object)
5
+ transform_refs(object)
6
+ end
7
+
8
+ private
9
+
10
+ def transform_discriminator(object)
11
+ mappings = object.dig('discriminator', 'mapping')
12
+ return unless mappings.present?
13
+
14
+ mappings.transform_values! { |p| transform_pointer(p) }
15
+ end
16
+
17
+ def transform_refs(object)
4
18
  return unless object['$ref'].present?
5
19
 
6
20
  object['$ref'] = transform_pointer(object['$ref'])
7
21
  end
8
22
 
9
- private
10
-
11
23
  def transform_pointer(target)
12
24
  if %r{^#/(?<pointer>.*)} =~ target
13
25
  # A JSON Pointer
@@ -1,5 +1,4 @@
1
1
  module OpenapiContracts::Parser::Transformers
2
2
  autoload :Base, 'openapi_contracts/parser/transformers/base'
3
- autoload :Nullable, 'openapi_contracts/parser/transformers/nullable'
4
3
  autoload :Pointer, 'openapi_contracts/parser/transformers/pointer'
5
4
  end
@@ -29,6 +29,9 @@ module OpenapiContracts::Validators
29
29
  validation_schemer(schema).validate(data).map do |err|
30
30
  error_to_message(err)
31
31
  end
32
+ rescue JSONSchemer::UnknownRef => e
33
+ # This usually happens when discriminators encounter unknown types
34
+ ["Could not resolve pointer #{e.message.inspect}"]
32
35
  end
33
36
  end
34
37
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openapi_contracts
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0
4
+ version: 0.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - mkon
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-09-22 00:00:00.000000000 Z
11
+ date: 2024-01-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -34,16 +34,22 @@ dependencies:
34
34
  name: json_schemer
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
- - - "~>"
37
+ - - ">="
38
38
  - !ruby/object:Gem::Version
39
- version: 2.0.0
39
+ version: '2'
40
+ - - "<"
41
+ - !ruby/object:Gem::Version
42
+ version: '2.2'
40
43
  type: :runtime
41
44
  prerelease: false
42
45
  version_requirements: !ruby/object:Gem::Requirement
43
46
  requirements:
44
- - - "~>"
47
+ - - ">="
45
48
  - !ruby/object:Gem::Version
46
- version: 2.0.0
49
+ version: '2'
50
+ - - "<"
51
+ - !ruby/object:Gem::Version
52
+ version: '2.2'
47
53
  - !ruby/object:Gem::Dependency
48
54
  name: rack
49
55
  requirement: !ruby/object:Gem::Requirement
@@ -92,28 +98,28 @@ dependencies:
92
98
  requirements:
93
99
  - - '='
94
100
  - !ruby/object:Gem::Version
95
- version: 1.56.1
101
+ version: 1.57.2
96
102
  type: :development
97
103
  prerelease: false
98
104
  version_requirements: !ruby/object:Gem::Requirement
99
105
  requirements:
100
106
  - - '='
101
107
  - !ruby/object:Gem::Version
102
- version: 1.56.1
108
+ version: 1.57.2
103
109
  - !ruby/object:Gem::Dependency
104
110
  name: rubocop-rspec
105
111
  requirement: !ruby/object:Gem::Requirement
106
112
  requirements:
107
113
  - - '='
108
114
  - !ruby/object:Gem::Version
109
- version: 2.23.2
115
+ version: 2.25.0
110
116
  type: :development
111
117
  prerelease: false
112
118
  version_requirements: !ruby/object:Gem::Requirement
113
119
  requirements:
114
120
  - - '='
115
121
  - !ruby/object:Gem::Version
116
- version: 2.23.2
122
+ version: 2.25.0
117
123
  - !ruby/object:Gem::Dependency
118
124
  name: simplecov
119
125
  requirement: !ruby/object:Gem::Requirement
@@ -180,17 +186,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
180
186
  requirements:
181
187
  - - ">="
182
188
  - !ruby/object:Gem::Version
183
- version: '3.0'
189
+ version: '3.1'
184
190
  - - "<"
185
191
  - !ruby/object:Gem::Version
186
- version: '3.3'
192
+ version: '3.4'
187
193
  required_rubygems_version: !ruby/object:Gem::Requirement
188
194
  requirements:
189
195
  - - ">="
190
196
  - !ruby/object:Gem::Version
191
197
  version: '0'
192
198
  requirements: []
193
- rubygems_version: 3.4.18
199
+ rubygems_version: 3.4.22
194
200
  signing_key:
195
201
  specification_version: 4
196
202
  summary: Openapi schemas as API contracts