goshort/internal/util/passwords/argon/hasher_test.go
Gustavo Maronato be39b22ace
Some checks failed
Check / checks (push) Failing after 3m48s
lint
2024-03-09 05:53:28 -05:00

56 lines
1.6 KiB
Go

package argonpasswords_test
import (
"testing"
"git.maronato.dev/maronato/goshort/internal/util/passwords"
argon "git.maronato.dev/maronato/goshort/internal/util/passwords/argon"
"github.com/stretchr/testify/assert"
)
func TestNewArgonHasher(t *testing.T) {
ah := argon.NewArgonHasher()
assert.Implements(t, (*passwords.PasswordHasher)(nil), ah, "NewArgonHasher should return a PasswordHasher")
}
func TestArgonHash(t *testing.T) {
ah := argon.NewArgonHasher()
hash, err := ah.Hash("mypassword")
assert.Nil(t, err, "ArgonHash should not return an error for a valid password")
assert.NotEmpty(t, hash, "ArgonHash should return a non-empty hash for a valid password")
hash2, _ := ah.Hash("mypassword")
assert.NotEqual(t, hash, hash2, "ArgonHash should return different hashes for the same password via salting")
}
func TestArgonVerify(t *testing.T) {
ah := argon.NewArgonHasher()
hash, _ := ah.Hash("mypassword")
pass, err := ah.Verify("mypassword", hash)
assert.Nil(t, err, "ArgonVerify should not return an error for a valid password")
assert.True(t, pass, "ArgonVerify should return true for a valid password")
pass2, err := ah.Verify("mypassword2", hash)
assert.Nil(t, err, "ArgonVerify should not return an error for an invalid password")
assert.False(t, pass2, "ArgonVerify should return false for an invalid password")
_, err = ah.Verify("mypassword", "invalidhash")
assert.ErrorIs(t, err, passwords.ErrInvalidHash, "ArgonVerify should return an error for an invalid hash")
}
func TestArgonWasteTime(t *testing.T) {
ah := argon.NewArgonHasher()
err := ah.WasteTime()
assert.Nil(t, err, "WasteTime should not return an error")
}