11require "test_helper"
2+ require "ostruct"
23
34class Encryptors < ActiveSupport ::TestCase
45 include Support ::Swappers
@@ -21,6 +22,44 @@ class Encryptors < ActiveSupport::TestCase
2122 assert_equal clearance , encryptor
2223 end
2324
25+ test 'Devise can verify passwords generated by DeviseBcrypt' do
26+ password = '123mudar'
27+ klass = OpenStruct . new ( pepper : '65c58472c207c829f28c68619d3e3aefed18ab3f' , stretches : 10 )
28+
29+ hashed_password = Devise ::Encryptable ::Encryptors ::DeviseBcrypt . digest ( password , klass . stretches , nil , klass . pepper )
30+
31+ assert Devise ::Encryptor . compare ( klass , hashed_password , password )
32+ end
33+
34+ test 'DeviseBcrypt can verify bcrypt hashes created by Devise' do
35+ password = '123mudar'
36+ klass = OpenStruct . new ( pepper : '65c58472c207c829f28c68619d3e3aefed18ab3f' , stretches : 10 )
37+
38+ devise_hash = Devise ::Encryptor . digest ( klass , password )
39+
40+ assert Devise ::Encryptable ::Encryptors ::DeviseBcrypt . compare ( devise_hash , password , klass . stretches , nil , klass . pepper )
41+ end
42+
43+ test 'Devise fails to verify passwords generated by DeviseBcrypt when the password is wrong' do
44+ password = '123mudar'
45+ different_password = 'theskyisfalling123'
46+ klass = OpenStruct . new ( pepper : '65c58472c207c829f28c68619d3e3aefed18ab3f' , stretches : 10 )
47+
48+ hashed_password = Devise ::Encryptable ::Encryptors ::DeviseBcrypt . digest ( password , klass . stretches , nil , klass . pepper )
49+
50+ refute Devise ::Encryptor . compare ( klass , hashed_password , different_password )
51+ end
52+
53+ test 'DeviseBcrypt fails to verify bcrypt hashes created by Devise when the password is wrong' do
54+ password = '123mudar'
55+ different_password = 'theskyisfalling123'
56+ klass = OpenStruct . new ( pepper : '65c58472c207c829f28c68619d3e3aefed18ab3f' , stretches : 10 )
57+
58+ devise_hash = Devise ::Encryptor . digest ( klass , password )
59+
60+ refute Devise ::Encryptable ::Encryptors ::DeviseBcrypt . compare ( devise_hash , different_password , klass . stretches , nil , klass . pepper )
61+ end
62+
2463 test 'digest should raise NotImplementedError if not implemented in subclass' do
2564 c = Class . new ( Devise ::Encryptable ::Encryptors ::Base )
2665 assert_raise ( NotImplementedError ) do
0 commit comments