Как вы заполняете или пропускаете HTTP Basic Auth в системных тестах Rails 5.2? - PullRequest
0 голосов
/ 31 октября 2018

Я пишу несколько тестов для сайта, который защищен http-аутентификацией на всех страницах.

Мне удалось найти способ обойти его для тестирования контроллера, выполнив следующее

get exams_url, headers: {'HTTP_AUTHORIZATION' => ActionController::HttpAuthentication::Basic.encode_credentials('admin','admin') }

Но как мне пройти это для системного теста? Я искал несколько часов, чтобы попытаться найти решение для этого, но все предложения, которые я нашел, относятся к более старым версиям Rails / Capybara и не работают. Похоже, в документации по тестированию Rails тоже ничего нет.

1 Ответ

0 голосов
/ 31 октября 2018

Хорошо, мне кажется, это помогает мне

def visit_with_http_auth(path)
  username = 'admin'
  password = 'admin'
  visit "http://#{username}:#{password}@#{Capybara.current_session.server.host}:# 
  {Capybara.current_session.server.port}#{path}"
end

А потом в моих тестовых методах я просто делаю

test "visiting the index" do
  visit_with_http_auth questions_path
  assert_selector "h1", text: "Questions"
end
...