mirror of
https://github.com/ditkrg/rswag.git
synced 2026-01-25 15:22:56 +00:00
Compare commits
20 Commits
revert-300
...
dependabot
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ee89511c91 | ||
|
|
16e40bfcf3 | ||
|
|
8c6aed4a9e | ||
|
|
8e59d2b2f2 | ||
|
|
a813b63bcc | ||
|
|
076f71388c | ||
|
|
9cfb5bc557 | ||
|
|
6cafc0c0e5 | ||
|
|
86c512f639 | ||
|
|
32638062d7 | ||
|
|
dd6530b718 | ||
|
|
095906da58 | ||
|
|
a40a06646f | ||
|
|
42c8e123a8 | ||
|
|
c85fa3b37a | ||
|
|
985f444834 | ||
|
|
1d2a25e231 | ||
|
|
a0680506e2 | ||
|
|
4a32108f78 | ||
|
|
05e22c3bd7 |
1
.github/workflows/ruby.yml
vendored
1
.github/workflows/ruby.yml
vendored
@@ -31,6 +31,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: |
|
run: |
|
||||||
|
gem update --system
|
||||||
bundle install
|
bundle install
|
||||||
cd rswag-ui && npm install
|
cd rswag-ui && npm install
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- Update swagger-ui to 3.52.5
|
||||||
|
|
||||||
## [2.4.0] - 2021-02-09
|
## [2.4.0] - 2021-02-09
|
||||||
### Added
|
### Added
|
||||||
- Added `SWAGGER_DRY_RUN` env variable [#274](https://github.com/rswag/rswag/pull/274)
|
- Added `SWAGGER_DRY_RUN` env variable [#274](https://github.com/rswag/rswag/pull/274)
|
||||||
|
|||||||
@@ -57,11 +57,11 @@ Push to your fork and [submit a Pull Request][pr].
|
|||||||
|
|
||||||
## Updating Swagger UI
|
## Updating Swagger UI
|
||||||
|
|
||||||
Find the latest versions of swagger-ui here:
|
Find the latest versions of swagger-ui here:
|
||||||
https://github.com/swagger-api/swagger-ui/releases
|
https://github.com/swagger-api/swagger-ui/releases
|
||||||
|
|
||||||
Update the swagger-ui-dist version in the rswag-ui dependencies
|
Update the swagger-ui-dist version in the rswag-ui dependencies
|
||||||
```
|
```
|
||||||
./rswag-ui/package.json
|
./rswag-ui/package.json
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
2
Gemfile
2
Gemfile
@@ -43,7 +43,7 @@ group :development do
|
|||||||
end
|
end
|
||||||
|
|
||||||
group :assets do
|
group :assets do
|
||||||
gem 'therubyracer'
|
gem 'mini_racer'
|
||||||
gem 'uglifier'
|
gem 'uglifier'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ rswag
|
|||||||
|
|
||||||
OpenApi 3.0 and Swagger 2.0 compatible!
|
OpenApi 3.0 and Swagger 2.0 compatible!
|
||||||
|
|
||||||
|
Seeking maintainers! Got a pet-bug that needs fixing? Just let us know in your issue/pr that you'd like to step up to help.
|
||||||
|
|
||||||
Rswag extends rspec-rails "request specs" with a Swagger-based DSL for describing and testing API operations. You describe your API operations with a succinct, intuitive syntax, and it automaticaly runs the tests. Once you have green tests, run a rake task to auto-generate corresponding Swagger files and expose them as YAML or JSON endpoints. Rswag also provides an embedded version of the awesome [swagger-ui](https://github.com/swagger-api/swagger-ui) that's powered by the exposed file. This toolchain makes it seamless to go from integration specs, which youre probably doing in some form already, to living documentation for your API consumers.
|
Rswag extends rspec-rails "request specs" with a Swagger-based DSL for describing and testing API operations. You describe your API operations with a succinct, intuitive syntax, and it automaticaly runs the tests. Once you have green tests, run a rake task to auto-generate corresponding Swagger files and expose them as YAML or JSON endpoints. Rswag also provides an embedded version of the awesome [swagger-ui](https://github.com/swagger-api/swagger-ui) that's powered by the exposed file. This toolchain makes it seamless to go from integration specs, which youre probably doing in some form already, to living documentation for your API consumers.
|
||||||
|
|
||||||
Api Rswag creates [Swagger](http://swagger.io) tooling for Rails API's. Generate beautiful API documentation, including a UI to explore and test operations, directly from your rspec integration tests.
|
Api Rswag creates [Swagger](http://swagger.io) tooling for Rails API's. Generate beautiful API documentation, including a UI to explore and test operations, directly from your rspec integration tests.
|
||||||
@@ -18,7 +20,7 @@ Once you have an API that can describe itself in Swagger, you've opened the trea
|
|||||||
|
|
||||||
|Rswag Version|Swagger (OpenAPI) Spec.|swagger-ui|
|
|Rswag Version|Swagger (OpenAPI) Spec.|swagger-ui|
|
||||||
|----------|----------|----------|
|
|----------|----------|----------|
|
||||||
|[master](https://github.com/rswag/rswag/tree/master)|3.0.3|3.42.0|
|
|[master](https://github.com/rswag/rswag/tree/master)|3.0.3|3.52.5|
|
||||||
|[2.3.0](https://github.com/rswag/rswag/tree/2.3.0)|3.0.3|3.23.11|
|
|[2.3.0](https://github.com/rswag/rswag/tree/2.3.0)|3.0.3|3.23.11|
|
||||||
|[2.2.0](https://github.com/rswag/rswag/tree/2.2.0)|2.0|3.18.2|
|
|[2.2.0](https://github.com/rswag/rswag/tree/2.2.0)|2.0|3.18.2|
|
||||||
|[1.6.0](https://github.com/rswag/rswag/tree/1.6.0)|2.0|2.2.5|
|
|[1.6.0](https://github.com/rswag/rswag/tree/1.6.0)|2.0|2.2.5|
|
||||||
@@ -136,7 +138,7 @@ There is also a generator which can help get you started `rails generate rspec:s
|
|||||||
path '/blogs/{id}' do
|
path '/blogs/{id}' do
|
||||||
|
|
||||||
get 'Retrieves a blog' do
|
get 'Retrieves a blog' do
|
||||||
tags 'Blogs'
|
tags 'Blogs', 'Another Tag'
|
||||||
produces 'application/json', 'application/xml'
|
produces 'application/json', 'application/xml'
|
||||||
parameter name: :id, in: :path, type: :string
|
parameter name: :id, in: :path, type: :string
|
||||||
|
|
||||||
|
|||||||
@@ -15,5 +15,5 @@ Gem::Specification.new do |s|
|
|||||||
|
|
||||||
s.files = Dir['{lib}/**/*'] + ['MIT-LICENSE', 'Rakefile']
|
s.files = Dir['{lib}/**/*'] + ['MIT-LICENSE', 'Rakefile']
|
||||||
|
|
||||||
s.add_dependency 'railties', '>= 3.1', '< 7.0'
|
s.add_dependency 'railties', '>= 3.1', '< 7.1'
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -194,12 +194,36 @@ module Rswag
|
|||||||
|
|
||||||
def build_json_payload(parameters, example)
|
def build_json_payload(parameters, example)
|
||||||
body_param = parameters.select { |p| p[:in] == :body }.first
|
body_param = parameters.select { |p| p[:in] == :body }.first
|
||||||
body_param ? example.send(body_param[:name]).to_json : nil
|
|
||||||
|
return nil unless body_param
|
||||||
|
|
||||||
|
raise(MissingParameterError, body_param[:name]) unless example.respond_to?(body_param[:name])
|
||||||
|
|
||||||
|
example.send(body_param[:name]).to_json
|
||||||
end
|
end
|
||||||
|
|
||||||
def doc_version(doc)
|
def doc_version(doc)
|
||||||
doc[:openapi] || doc[:swagger] || '3'
|
doc[:openapi] || doc[:swagger] || '3'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
class MissingParameterError < StandardError
|
||||||
|
attr_reader :body_param
|
||||||
|
|
||||||
|
def initialize(body_param)
|
||||||
|
@body_param = body_param
|
||||||
|
end
|
||||||
|
|
||||||
|
def message
|
||||||
|
<<~MSG
|
||||||
|
Missing parameter '#{body_param}'
|
||||||
|
|
||||||
|
Please check your spec. It looks like you defined a body parameter,
|
||||||
|
but did not declare usage via let. Try adding:
|
||||||
|
|
||||||
|
let(:#{body_param}) {}
|
||||||
|
MSG
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ Gem::Specification.new do |s|
|
|||||||
|
|
||||||
s.files = Dir['{lib}/**/*'] + ['MIT-LICENSE', 'Rakefile']
|
s.files = Dir['{lib}/**/*'] + ['MIT-LICENSE', 'Rakefile']
|
||||||
|
|
||||||
s.add_dependency 'activesupport', '>= 3.1', '< 7.0'
|
s.add_dependency 'activesupport', '>= 3.1', '< 7.1'
|
||||||
s.add_dependency 'railties', '>= 3.1', '< 7.0'
|
s.add_dependency 'railties', '>= 3.1', '< 7.1'
|
||||||
s.add_dependency 'json-schema', '~> 2.2'
|
s.add_dependency 'json-schema', '~> 2.2'
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -160,6 +160,21 @@ module Rswag
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'missing body parameter' do
|
||||||
|
before do
|
||||||
|
metadata[:operation][:parameters] = [{ name: 'comment', in: :body, schema: { type: 'object' } }]
|
||||||
|
allow(example).to receive(:comment).and_raise(NoMethodError, "undefined method 'comment'")
|
||||||
|
allow(example).to receive(:respond_to?).with(:'Content-Type')
|
||||||
|
allow(example).to receive(:respond_to?).with('comment').and_return(false)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'uses the referenced metadata to build the request' do
|
||||||
|
expect do
|
||||||
|
request[:payload]
|
||||||
|
end.to raise_error(Rswag::Specs::MissingParameterError, /Missing parameter 'comment'/)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
context 'form payload' do
|
context 'form payload' do
|
||||||
before do
|
before do
|
||||||
metadata[:operation][:consumes] = ['multipart/form-data']
|
metadata[:operation][:consumes] = ['multipart/form-data']
|
||||||
|
|||||||
6
rswag-ui/package-lock.json
generated
6
rswag-ui/package-lock.json
generated
@@ -5,9 +5,9 @@
|
|||||||
"requires": true,
|
"requires": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"swagger-ui-dist": {
|
"swagger-ui-dist": {
|
||||||
"version": "3.42.0",
|
"version": "4.1.3",
|
||||||
"resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-3.42.0.tgz",
|
"resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-4.1.3.tgz",
|
||||||
"integrity": "sha512-hTNX6cX7KWtBZgk6ZQSOzsBJhqdCmD5NOIjb6dBPKSnYZidSkIXOcaPMR3+kwxLrj8bDC881bSDlNbLsHikacg=="
|
"integrity": "sha512-WvfPSfAAMlE/sKS6YkW47nX/hA7StmhYnAHc6wWCXNL0oclwLj6UXv0hQCkLnDgvebi0MEV40SJJpVjKUgH1IQ=="
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,6 @@
|
|||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"swagger-ui-dist": "3.42.0"
|
"swagger-ui-dist": "4.1.3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,6 +15,6 @@ Gem::Specification.new do |s|
|
|||||||
|
|
||||||
s.files = Dir.glob('{lib,node_modules}/**/*') + ['MIT-LICENSE', 'Rakefile' ]
|
s.files = Dir.glob('{lib,node_modules}/**/*') + ['MIT-LICENSE', 'Rakefile' ]
|
||||||
|
|
||||||
s.add_dependency 'actionpack', '>=3.1', '< 7.0'
|
s.add_dependency 'actionpack', '>=3.1', '< 7.1'
|
||||||
s.add_dependency 'railties', '>= 3.1', '< 7.0'
|
s.add_dependency 'railties', '>= 3.1', '< 7.1'
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user