#ruby-on-rails #rspec #devise
#ruby-на-рельсах #rspec #придумать
Вопрос:
Я использую Devise для аутентификации с помощью запроса JSON. Это работает, за исключением remember_me
тестирования функций rspec, однако оно работает при использовании curl через мой сервер разработки. Я, конечно, делаю что-то не так, любая помощь приветствуется
Характеристики:
it 'Log in with "remember_me"' do
user = create :user
params = {user: {email: user.email, password: 'debug', remember_me: '1'}}
post '/api/v1/auth/sign_in', params, format: :json
response.status.should eq(201) # created
response.cookies.has_key?('_my_app_session').should eq(true)
response.cookies.has_key?('remember_user_token').should eq(true)
end
Это завершается неудачей в последней строке с expected: true got: false
Командная строка:
curl -v -H "Accept: application/json" -H "Content-type: application/json"
-X POST -d '{"user":{"email":"maeva_morel@deschamps.fr","password":"debug","remember_me":"1"}}'
http://localhost:3000/api/v1/auth/sign_in
Это работает так, как есть в выходных данных
Set-Cookie: remember_user_token=W1s3Nl0sIiQyYSQxMCRoOERF...
Заранее спасибо за любую помощь
Комментарии:
1. Что такое версии gem? Я не вижу подобных проблем в Google
2. Спасибо за вашу заботу, я проверил это и не нашел ничего плохого. Однако я обнаружил, что файл cookie подписан, поэтому не включен в
response.cookies
Ответ №1:
remember_me
хранится в подписанном файле cookie, поэтому недоступен в response.cookies
Чтобы исправить, вы должны заменить последнюю строку теста на:
@request.cookie_jar.has_key?('remember_user_token').should eq(true)
Комментарии:
1. Или используйте незашифрованные файлы cookie в тесте.