2014-06-21 80 views
1

我正在使用Devise通過JSON請求進行身份驗證。它在rspec功能測試中的作用除remember_me之外,但它在通過我的開發服務器使用curl時起作用。當然,我做錯了什麼,任何幫助讚賞設計:「remember_me」適用於開發,但不適用於測試環境

特色規格:

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":"[email protected]","password":"debug","remember_me":"1"}}' \ 
    http://localhost:3000/api/v1/auth/sign_in 

這工作,因爲在輸出中

Set-Cookie: remember_user_token=W1s3Nl0sIiQyYSQxMCRoOERF... 
提前

感謝所有幫助

+0

什麼是寶石版本?我在google –

+0

中沒有看到任何類似的問題感謝您的關注,我檢查了一下,發現沒有錯。但是我發現cookie已簽名,因此不包括在'response.cookies'中。 – Benj

回答

2

remember_me存儲在簽署的cookie,因此response.cookies

不來修復您必須更換測試的最後一行:

@request.cookie_jar.has_key?('remember_user_token').should eq(true) 
+0

或者在測試中使用未加密的cookie。 –

相關問題