Я создаю Rails JSON API и пытаюсь написать тесты, чтобы гарантировать, что запросы без действительного auth_token будут встречаться со статусом 401.
Я включил тестовые хелперы Devise как в свой spec_helper.rb (config.include Devise::TestHelpers, type: :controller
), так и в спецификацию моего контроллера (показано ниже). Я также устанавливаю @request.env['devise.mapping'] = Devise.mappings[:user]
перед каждым тестом. Все мои тесты, в которых пользователь идентифицирован должным образом, работают нормально, но любые несанкционированные запросы приводят к:
ArgumentError:
uncaught throw :warden
Поскольку Devise удалила свою реализацию :token_authenticable, я адаптировал более безопасное решение, описанное здесь.
Также стоит отметить, что я использую гем rails-api, поэтому мой ApplicationController наследуется от ActionController::API, а не от Base.
Я обыскал Интернет и много-много вопросов о переполнении стека относительно этой ошибки и перепробовал все, что мог придумать, но безуспешно. Насколько мне известно, одних тестовых помощников Devise должно быть достаточно, так как они должны ловить :warden throws и выдавать соответствующий 401.
Мы будем очень признательны за любые предложения, которые вы все могли бы предоставить, и я могу изменить этот вопрос, указав более подробную информацию, если это необходимо. Спасибо!
ArgumentError
? - person p4sh4   schedule 17.04.2015