我正在通过JSON请求使用Devise进行身份验证。它在rspec特性测试中除了remember_me
之外有效,但是在通过我的开发服务器使用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...
提前感谢您提供任何帮助
答案 0 :(得分:2)
remember_me
存储在已签名的Cookie中,因此在response.cookies
要解决此问题,您必须通过以下方式替换测试的最后一行:
@request.cookie_jar.has_key?('remember_user_token').should eq(true)