RSpec / rails не устанавливают заголовки запроса - PullRequest
0 голосов
/ 16 января 2019

Задача

Я настраиваю тесты, используя RSpec , для API, сделанного с rails . В одном из тестов я пытаюсь добавить некоторые заголовки аутентификации, однако кажется, что заголовки не добавляются к моему запросу. Как правильно передать эти заголовки?

Мне нужно передать 3 заголовка ( client , access-token и uid ), чтобы система распознала пользователя как зарегистрированного. Если я не прошел, я получаю систему не зарегистрировано сообщение об ошибке

Если я вручную пытаюсь получить доступ к той же конечной точке, для которой я делаю тест, на почтальоне и просто передаю заголовки, она работает

код

RSpec.describe Api::V1::Profiles::CreditCardsController, type: :api do
  describe 'POST /api/v1/profiles/credit_cards' do
    let!(:profiles) {FactoryGirl.create_list(:profile, 1)}
    it 'Usuário cadastrando cartão no sistema' do
      number = Faker::Stripe.valid_card
      params = {
          :number => number,
          :expiration_date => Faker::Stripe.year + '/' + Faker::Stripe.month,
          :brand => 'Visa',
          :proper_name => Faker::Name.name,
          :cvv => Faker::Stripe.ccv,
      }
      headers = auth_headers(profiles[0])
      requisicao = post '/api/v1/profiles/credit_cards', params, headers  
      # byebug
      expect(last_response.status).to eq(200)
    end
  end

Результаты

Во время моего byebug , если я получаю доступ к своей переменной headers , которую я пытаюсь добавить, у меня установлены правильные вещи:

{"access-token"=>"eQV4yjzKU7cfCgD2kLcMPQ", "client"=>"FWJQNb-aRFD6lmYW1MU8Sw", "uid"=>"ericrice@feeney.com"}

Примечание: приведенные выше значения не являются реальными значениями, они были сгенерированы factory girl library

Однако, когда я получаю доступ к моим заголовкам запроса , они не отображаются:

{"X-Frame-Options"=>"SAMEORIGIN", "X-XSS-Protection"=>"1; mode=block", "X-Content-Type-Options"=>"nosniff", "Content-Type"=>"application/json; charset=utf-8", "Cache-Control"=>"no-cache", "X-Request-Id"=>"0ed4657c-507d-4033-bc20-81d452de0d1b", "X-Runtime"=>"0.004898", "Date"=>"Wed, 16 Jan 2019 16:43:03 GMT", "X-Rack-Cache"=>"pass", "Vary"=>"Origin", "Content-Length"=>"59"}

Обновление

Первое обновление

Я попытался переключиться с тип: API на тип: запрос . Тип : api включал Rack :: Test :: Methods , что приводило к ошибкам в моей переменной ответа, как указано @januszm в комментарии здесь . Однако, поначалу это никак не сказалось на моей ситуации. Но их я настоял на тестировании и понял, что это решило мою проблему.

1 Ответ

0 голосов
/ 21 января 2019

Переключение с типа : api на тип : запрос дал мне доступ к переменным request и response , которые до этого Я должен был сам создать переменные, чтобы попытаться получить к ним доступ.

При использовании type: api у меня был доступ к last_response вместо response , потому что мой type: api включал Rack :: Test :: Methods , который испортил эти переменные (ответ и запрос), согласно этому посту .

Когда я переключился на тип: запрос и больше не импортировал Rack :: Test :: Methods , я смог получить доступ к переменной request и увидел, что нужные заголовки были добавлены правильно.

...