Тест RSpe c для контроллеров webhook с базой c auth - PullRequest
0 голосов
/ 18 июня 2020

В моем приложении Rails / Grape я создал контроллер веб-перехватчика, который получает JSON от веб-перехватчика CMS. Мне просто интересно, как протестировать его в RSpe c, если у меня нет никаких параметров (я думаю, мне это не нужно, потому что я получаю JSON только от веб-перехватчика).

Мой веб-перехватчик контроллер (работает хорошо):

module Cms
  class Webhook < Base
    desc 'Take the CMS webhook'

    http_basic do |user, password|
      user == ENV['USER'] && password == ENV['PASSWORD']
    end

    post :receive do
      params
    end
  end
end

Пробовал нравиться:

describe Cms::Webhooks, type: :request do
  subject(:call) { post endpoint, params: params, as: :json }

  let(:endpoint) { '/api/cms/webhooks/receive' }

  let(:params) do
    {
      some: 'some pass'
    }
  end

  it 'returns a successful response' do
    call
    expect(response).to be_successful
  end
end

Получаю ошибку:

 Failure/Error: expect(response).to be_successful
   expected `#<ActionDispatch::TestResponse:0x00007f9058e43e60 @mon_data=#<Monitor:0x00007f9058e43de8>, @mon_data_..., @method=nil, @request_method=nil, @remote_ip=nil, @original_fullpath=nil, @fullpath=nil, @ip=nil>>.successful?` to return true, got false

1 Ответ

0 голосов
/ 18 июня 2020

Можете ли вы попробовать этот код?

describe Cms::Webhooks, type: :request do
  subject(:call) { post endpoint, params: params, as: :son, headers: headers }

  let(:endpoint) { '/api/cms/webhooks/receive' }

  let(:params) do
    {
      some: 'some pass'
    }
  end

  let(:headers) do
    {
      'HTTP_AUTHORIZATION' => ActionController::HttpAuthentication::Basic.encode_credentials('your_username', 'your_password')
    }
  end  

  it 'returns a successful response' do
    call
    expect(response).to be_successful
  end
end

Ссылка https://api.rubyonrails.org/classes/ActionController/HttpAuthentication/Basic.html

...