Rswag 没有像我预期的那样工作?
Rswag does not work as I expect?
我正在尝试使用 rswag 来测试我的用户邀请系统:
describe 'Invitation API' do
path '/api/users/invitation' do
put 'Accept a token' do
tags 'Invitation'
produces 'application/json'
consumes 'application/json'
parameter name: :invitation_token,
in: :body,
type: :string,
description: 'invitation token',
required: true
parameter name: :password,
in: :body,
type: :string,
description: 'user password',
required: true
response '201', 'valid invitation token' do
let(:invited_user) { create :user }
let(:password) { 'password' }
run_test!
end
response '406', 'invalid invitation token' do
let(:invited_user) { create :user }
let(:invitation_token) { 'faketoken' }
let(:password) { 'password' }
run_test!
end
end
end
end
为了测试我的接受邀请代码,我编写了帮助程序:
def invitation_token
p 'invitation_token'
raw, enc = Devise.token_generator.generate(invited_user.class, :invitation_token)
invited_user.update(invitation_token: enc)
raw
end
我预计服务器会收到以下参数:
<ActionController::Parameters {"password"=>"password", "invitation_token"=>"_48eEztTbeRzttErfuWh", "format"=>"json", "controller"=>"invitations", "action"=>"update"} permitted: false>
(此请求是使用 Postman 发出的)
但是当我使用 rswag 测试时我得到:
<ActionController::Parameters {"_json"=>"_48eEztTbeRzttErfuWh", "format"=>"json", "controller"=>"invitations", "action"=>"update", "invitation"=>{"_json"=>"_48eEztTbeRzttErfuWh"}} permitted: false>
但是当我类似地使用查询中的参数执行 GET 请求时一切正常
我该如何修复 PUT?
我在这个问题上找到了答案issue
我正在尝试使用 rswag 来测试我的用户邀请系统:
describe 'Invitation API' do
path '/api/users/invitation' do
put 'Accept a token' do
tags 'Invitation'
produces 'application/json'
consumes 'application/json'
parameter name: :invitation_token,
in: :body,
type: :string,
description: 'invitation token',
required: true
parameter name: :password,
in: :body,
type: :string,
description: 'user password',
required: true
response '201', 'valid invitation token' do
let(:invited_user) { create :user }
let(:password) { 'password' }
run_test!
end
response '406', 'invalid invitation token' do
let(:invited_user) { create :user }
let(:invitation_token) { 'faketoken' }
let(:password) { 'password' }
run_test!
end
end
end
end
为了测试我的接受邀请代码,我编写了帮助程序:
def invitation_token
p 'invitation_token'
raw, enc = Devise.token_generator.generate(invited_user.class, :invitation_token)
invited_user.update(invitation_token: enc)
raw
end
我预计服务器会收到以下参数:
<ActionController::Parameters {"password"=>"password", "invitation_token"=>"_48eEztTbeRzttErfuWh", "format"=>"json", "controller"=>"invitations", "action"=>"update"} permitted: false>
(此请求是使用 Postman 发出的)
但是当我使用 rswag 测试时我得到:
<ActionController::Parameters {"_json"=>"_48eEztTbeRzttErfuWh", "format"=>"json", "controller"=>"invitations", "action"=>"update", "invitation"=>{"_json"=>"_48eEztTbeRzttErfuWh"}} permitted: false>
但是当我类似地使用查询中的参数执行 GET 请求时一切正常
我该如何修复 PUT?
我在这个问题上找到了答案issue