openapi_rspec 0.4 → 0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +15 -1
- data/lib/openapi_rspec.rb +8 -8
- data/lib/openapi_rspec/documentation_validator.rb +1 -1
- data/lib/openapi_rspec/helpers.rb +8 -2
- data/lib/openapi_rspec/matchers.rb +2 -2
- data/lib/openapi_rspec/module_helpers.rb +2 -2
- data/lib/openapi_rspec/request_validator.rb +4 -4
- data/lib/openapi_rspec/schema_loader.rb +3 -3
- data/lib/openapi_rspec/version.rb +1 -1
- metadata +10 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 748ba53aceac0ac02c274be192c1fadb895df66212e38da8bf9f88f80943f504
|
4
|
+
data.tar.gz: d2ab4b53ae116da4daf0bdaec48e2c8ff4d54b8ff98e1e4dc05bfd2d0d4c6dfc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1a89fcf6b169fddf3ade6b8032354460046e5be264b38ba4b6fd164a2c5caaa1fc10a5369599701aa9b03bd347a6dbff313a3b7ca36e48e12ac2557fde4ca6e4
|
7
|
+
data.tar.gz: 15d575f392ac9ba39e2e5e11aa1732596f8ca9eaf43cbba72cf76ef036901d5bdd06ed40f8e5c7f5ff45afcd1038b2552c266e1bd420b0703642322c08ce2bde
|
data/README.md
CHANGED
@@ -7,6 +7,7 @@
|
|
7
7
|
[![Build Status](https://travis-ci.org/medsolutions/openapi_rspec.svg?branch=master)][travis]
|
8
8
|
[![Code Climate](https://codeclimate.com/github/medsolutions/openapi_rspec/badges/gpa.svg)][codeclimate]
|
9
9
|
[![Test Coverage](https://codeclimate.com/github/medsolutions/openapi_rspec/badges/coverage.svg)][codeclimate]
|
10
|
+
[![Ruby Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://github.com/testdouble/standard)
|
10
11
|
|
11
12
|
Test your API against OpenApi v3 documentation
|
12
13
|
|
@@ -147,7 +148,7 @@ To validate response use:
|
|
147
148
|
# ...
|
148
149
|
```
|
149
150
|
|
150
|
-
To set **request body** use `params` helper method
|
151
|
+
To set **request body** (as form data) use `params` helper method and provide a `Hash`:
|
151
152
|
|
152
153
|
```ruby
|
153
154
|
# ...
|
@@ -159,6 +160,19 @@ To set **request body** use `params` helper method:
|
|
159
160
|
# ...
|
160
161
|
```
|
161
162
|
|
163
|
+
To set **raw request body** use the `params` helper method and provide a `String`:
|
164
|
+
|
165
|
+
```ruby
|
166
|
+
# ...
|
167
|
+
post "/pets" do
|
168
|
+
params { JSON.dump(name: "Lucky") }
|
169
|
+
|
170
|
+
validate_code(201)
|
171
|
+
end
|
172
|
+
# ...
|
173
|
+
```
|
174
|
+
|
175
|
+
|
162
176
|
To set **path parameter** use `let` helper method:
|
163
177
|
|
164
178
|
```ruby
|
data/lib/openapi_rspec.rb
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
3
|
+
require "dry-configurable"
|
4
|
+
require "openapi_validator"
|
5
|
+
require "rspec"
|
6
6
|
|
7
|
-
require
|
8
|
-
require
|
9
|
-
require
|
10
|
-
require
|
11
|
-
require
|
7
|
+
require "openapi_rspec/helpers"
|
8
|
+
require "openapi_rspec/matchers"
|
9
|
+
require "openapi_rspec/module_helpers"
|
10
|
+
require "openapi_rspec/schema_loader"
|
11
|
+
require "openapi_rspec/version"
|
12
12
|
|
13
13
|
module OpenapiRspec
|
14
14
|
extend Dry::Configurable
|
@@ -5,13 +5,19 @@ module OpenapiRspec
|
|
5
5
|
def request_params(metadata)
|
6
6
|
path = defined?(uri) ? uri : metadata[:uri]
|
7
7
|
method = defined?(http_method) ? http_method : metadata[:method]
|
8
|
+
params = if openapi_rspec_params.is_a?(Hash)
|
9
|
+
path_params(path).merge!(openapi_rspec_params)
|
10
|
+
else
|
11
|
+
openapi_rspec_params
|
12
|
+
end
|
13
|
+
|
8
14
|
{
|
9
15
|
method: method,
|
10
16
|
path: path,
|
11
|
-
params:
|
17
|
+
params: params,
|
12
18
|
headers: openapi_rspec_headers,
|
13
19
|
query: openapi_rspec_query,
|
14
|
-
media_type: openapi_rspec_media_type
|
20
|
+
media_type: openapi_rspec_media_type,
|
15
21
|
}
|
16
22
|
end
|
17
23
|
|
@@ -52,8 +52,8 @@ module OpenapiRspec
|
|
52
52
|
end
|
53
53
|
|
54
54
|
def process(method, uri)
|
55
|
-
metadata[:openapi_rspec] = {
|
56
|
-
let(:openapi_rspec_media_type) {
|
55
|
+
metadata[:openapi_rspec] = {uri: uri, method: method}
|
56
|
+
let(:openapi_rspec_media_type) { "application/json" }
|
57
57
|
let(:openapi_rspec_params) { {} }
|
58
58
|
let(:openapi_rspec_headers) { {} }
|
59
59
|
let(:openapi_rspec_query) { {} }
|
@@ -1,8 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
3
|
+
require "dry-initializer"
|
4
|
+
require "rack/test"
|
5
|
+
require "uri"
|
6
6
|
|
7
7
|
module OpenapiRspec
|
8
8
|
class RequestValidator
|
@@ -70,7 +70,7 @@ module OpenapiRspec
|
|
70
70
|
def request_params
|
71
71
|
{
|
72
72
|
headers: headers,
|
73
|
-
params: params
|
73
|
+
params: params,
|
74
74
|
}
|
75
75
|
end
|
76
76
|
end
|
@@ -13,7 +13,7 @@ module OpenapiRspec
|
|
13
13
|
rescue JSON::ParserError
|
14
14
|
YAML.safe_load(schema)
|
15
15
|
end
|
16
|
-
rescue
|
16
|
+
rescue => e
|
17
17
|
raise "Unable to parse OpenAPI schema. #{e}"
|
18
18
|
end
|
19
19
|
|
@@ -22,10 +22,10 @@ module OpenapiRspec
|
|
22
22
|
response = session.get(path)
|
23
23
|
|
24
24
|
raise "Response code: #{response.status}" unless response.successful?
|
25
|
-
raise
|
25
|
+
raise "Empty body" if response.body.empty?
|
26
26
|
|
27
27
|
response.body
|
28
|
-
rescue
|
28
|
+
rescue => e
|
29
29
|
raise "Unable to perform GET request for the OpenAPI schema '#{path}'. #{e}"
|
30
30
|
end
|
31
31
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: openapi_rspec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.5'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Svyatoslav Kryukov
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-08-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dry-configurable
|
@@ -98,17 +98,17 @@ dependencies:
|
|
98
98
|
name: rake
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- - "
|
101
|
+
- - ">="
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
103
|
+
version: 12.3.3
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- - "
|
108
|
+
- - ">="
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
111
|
-
description:
|
110
|
+
version: 12.3.3
|
111
|
+
description:
|
112
112
|
email:
|
113
113
|
- s.g.kryukov@yandex.ru
|
114
114
|
executables: []
|
@@ -129,7 +129,7 @@ homepage: https://github.com/medsolutions/openapi_rspec
|
|
129
129
|
licenses:
|
130
130
|
- MIT
|
131
131
|
metadata: {}
|
132
|
-
post_install_message:
|
132
|
+
post_install_message:
|
133
133
|
rdoc_options: []
|
134
134
|
require_paths:
|
135
135
|
- lib
|
@@ -145,7 +145,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
145
145
|
version: '0'
|
146
146
|
requirements: []
|
147
147
|
rubygems_version: 3.0.3
|
148
|
-
signing_key:
|
148
|
+
signing_key:
|
149
149
|
specification_version: 4
|
150
150
|
summary: Test your API against OpenApi v3 documentation
|
151
151
|
test_files: []
|