github.com/argoproj/argo-cd/v3@v3.2.1/util/password/password_test.go (about) 1 package password 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 "github.com/stretchr/testify/require" 8 ) 9 10 func testPasswordHasher(t *testing.T, h PasswordHasher) { 11 t.Helper() 12 // Use the default work factor 13 const ( 14 defaultPassword = "Hello, world!" 15 pollution = "extradata12345" 16 ) 17 hashedPassword, _ := h.HashPassword(defaultPassword) 18 assert.True(t, h.VerifyPassword(defaultPassword, hashedPassword), "Password %q should have validated against hash %q", defaultPassword, hashedPassword) 19 assert.False(t, h.VerifyPassword(defaultPassword, pollution+hashedPassword), "Password %q should NOT have validated against hash %q", defaultPassword, pollution+hashedPassword) 20 } 21 22 func TestBcryptPasswordHasher(t *testing.T) { 23 // Use the default work factor 24 h := BcryptPasswordHasher{0} 25 testPasswordHasher(t, h) 26 } 27 28 func TestDummyPasswordHasher(t *testing.T) { 29 h := DummyPasswordHasher{} 30 testPasswordHasher(t, h) 31 } 32 33 func TestPasswordHashing(t *testing.T) { 34 const ( 35 defaultPassword = "Hello, world!" 36 blankPassword = "" 37 ) 38 hashers := []PasswordHasher{ 39 BcryptPasswordHasher{0}, 40 DummyPasswordHasher{}, 41 } 42 43 hashedPassword, _ := hashPasswordWithHashers(defaultPassword, hashers) 44 valid, stale := verifyPasswordWithHashers(defaultPassword, hashedPassword, hashers) 45 assert.True(t, valid, "Password %q should have validated against hash %q", defaultPassword, hashedPassword) 46 assert.False(t, stale, "Password %q should not have been marked stale against hash %q", defaultPassword, hashedPassword) 47 valid, stale = verifyPasswordWithHashers(defaultPassword, defaultPassword, hashers) 48 assert.True(t, valid, "Password %q should have validated against itself with dummy hasher", defaultPassword) 49 assert.True(t, stale, "Password %q should have been acknowledged stale against itself with dummy hasher", defaultPassword) 50 51 hashedPassword, err := hashPasswordWithHashers(blankPassword, hashers) 52 require.Error(t, err, "Blank password should have produced error, rather than hash %q", hashedPassword) 53 54 valid, _ = verifyPasswordWithHashers(blankPassword, "", hashers) 55 assert.False(t, valid, "Blank password should have failed verification") 56 }