RSpe c получить тест с помощью reset_password_token - PullRequest
0 голосов
/ 08 мая 2020

Я пытаюсь протестировать конечную точку, которая отвечает за проверку использования устройства 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"}
...