Как выполнить POST с отсутствующей аутентичностью_token в запросе rspec rails request?

Я имитирую запрос, поступающий из внешней службы, у которой не будет токена аутентификации. Я хочу, чтобы тест потерпел неудачу, если skip_before_action :verify_authenticity_token отсутствует.

Как это сделать из спецификации запроса Rspec?

В настоящее время я использую post, как показано ниже, но он с радостью принят.

post endpoint, my_json_string, {'CONTENT_TYPE' => "application/json"}
+8
09 мар. '15 в 16:38
источник поделиться
2 ответа

Защита CSRF отключена в тестовой среде. Попробуйте включить его:

before do
  ActionController::Base.allow_forgery_protection = true
end

after do
  ActionController::Base.allow_forgery_protection = false
end
+22
09 мар. '15 в 16:44
источник

Отключение защиты CSRF не помогло мне. Поэтому я создал этот модуль, который использует тело ответа для извлечения токена аутентификации:

https://gist.github.com/Rodrigora/440220a2e24bd42b7b0c

Затем я могу тестировать запросы put/post без отключения защиты подделок:

before do
  @token = login(create(:user, password: 'password'))
end

it 'tests model creation' do
   expect {
     post_with_token 'path/to/model', model_params, @token
   }.to change(Model, :count).by(1)
end
+1
19 сент. '15 в 21:56
источник

Посмотрите другие вопросы по меткам или Задайте вопрос