Я использую rswag для тестирования довольно распространенного приложения RubyOnRails JSON Api , но я не могу понять довольно распространенный случай, когда я загружаю файл в конечная точка.
Конечная точка ожидает обычный атрибут data
в теле запроса с атрибутом file
, содержащим двоичный файл, и я не могу заставить rswag сгенерировать запрос с правильными параметрами.
path '/documents' do
post 'Creates a document' do
tags 'Documents'
consumes 'multipart/form-data'
produces 'application/vnd.api+json'
parameter name: 'data',
description: 'Whatever',
attributes: {
schema: {
type: :object,
properties: {
file: { type: :binary },
},
},
}
response '201', 'success' do
let(:data) do
{
attributes: {
file: Rack::Test::UploadedFile.new($REALARGS),
},
}
end
schema "$ref": '#/definitions/post_document_responses/201'
run_test! do |_example|
# ACTUAL TEST
end
end
end
end
Существуют и другие более простые параметры (например, Авторизация), которые генерируются правильно, я уверен, что rswag
подключен правильно. У запроса, который я вижу, нет параметров, я могу удалить параметр data
и ничего не меняется. Я пробовал миллион комбинаций, всегда один и тот же результат, и я не знаю, что происходит.
params
, которого ожидает контроллер, - data[attributes][file]
.
Может кто-нибудь помочь мне