2011-09-19 26 views
2

要測試我的Rails/Devise應用程序,我想創建100個用戶並以他們身份登錄。Rails-devise:生成encrypted_pa​​ssword值(針對測試用戶)

我試過如下:

INSERT INTO users (id,email,encrypted_password) 
    VALUES (11,"[email protected]", 
    "$2a$10$VQJ9lT78.e1dtyAnkng1/ey9euL6hK/kUNQMDv8VJMAovXpuVNDZG"); 

對於encrypted_password,我剛纔複製的價值來自其密碼爲testtest

問題的用戶:我無法登錄爲[email protected]與密碼testtest

我懷疑encrypted_password有鹽,我需要一個工具來生成它。 config.encryptorbcrypt。我安裝了bcrypt(Linux),但手冊頁非常短,只解釋瞭如何加密文件,所以我猜這不是用來加密密碼的最方便的工具。

如何快速創建100個醃製密碼?
比註冊100次更快。

+0

在Devise的源代碼中,哈希似乎是由這一行創建的:':: Digest :: SHA512.hexdigest(' - '<< tokens.flatten.join(' - ')<<' ')'現在我必須找到什麼是令牌。 –

回答

5

從您的測試中製作u = User.create(:email => '[email protected]', :password => 'testtest', :password_confirmation => 'testtest')然後u.confirm!(如果您使用的是可確認模塊)應該爲用戶正確生成encrypted_pa​​ssword。

無論如何,你應該考慮使用夾具或藍圖進行測試。

+0

在'devise/mailer/confirmation_instructions.html.erb'中失敗,說'Missing host to link to!請提供:host參數或設置default_url_options [:host]'...這就是爲什麼我試圖避免業務邏輯代碼。我會嘗試禁用電子郵件確認。 –

+0

感謝您提供有關燈具和藍圖的提示!請注意,這是一個真正的100人的全面測試。 –

+0

在你的「config/environments/test.rb」中添加'config.action_mailer.default_url_options = {:host =>'localhost:3000'}',它應該可以工作。 – cicloon

相關問題