Я пытаюсь протестировать конечную точку, которая отвечает за проверку использования устройства reset_password_token
.
class PasswordsController < Devise::PasswordsController
respond_to :json
def valid_token?
if account.nil?
render json: { error: 'Token expired' }, status: :unprocessable_entity
else
render json: {}, status: :ok
end
end
private
def account
@account ||= ::Account.with_password_reset_token(params[:reset_password_token])
end
end
со спецификациями интеграции:
path '/api/v1/account/password/valid_token' do
get 'Reset password token validation check' do
tags 'Account'
description 'Check if reset password token is expired'
produces 'application/json'
consumes 'application/json'
parameter name: 'reset_password_token', in: :params, schema: {}, type: :string, required: true, description: 'Token sended with instructions how to reset password.'
before { @reset_password_token = existing_account.send_reset_password_instructions }
response '200', 'valid token' do
let('reset_password_token') { @reset_password_token }
run_test!
end
end
end
Я получаю ошибка:
1) Account authentication to API V1 /api/v1/account/password/valid_token get valid token returns a 200 response
Failure/Error:
raise UnexpectedResponse,
"Expected response code '#{response.code}' to match '#{expected}'\n" \
"Response body: #{response.body}"
Rswag::Specs::UnexpectedResponse:
Expected response code '422' to match '200'
Response body: {"error":"Token expired"}