k3s/pkg/authenticator/hash/scrypt_test.go
Derek Nola 1b8ee398c7 Add basic fuzz test
Signed-off-by: Derek Nola <derek.nola@suse.com>
2025-07-10 09:38:18 -07:00

57 lines
1.2 KiB
Go

package hash
import (
"strings"
"testing"
)
func Test_UnitSCrypt_VerifyHash(t *testing.T) {
type args struct {
secretKey string
}
tests := []struct {
name string
args args
wantErr bool
}{
{
name: "Basic Hash Test",
args: args{
secretKey: "hello world",
},
},
{
name: "Long Hash Test",
args: args{
secretKey: strings.Repeat("A", 720),
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
hasher := NewSCrypt()
hash, _ := hasher.CreateHash(tt.args.secretKey)
if err := hasher.VerifyHash(hash, tt.args.secretKey); (err != nil) != tt.wantErr {
t.Errorf("SCrypt.VerifyHash() error = %v, wantErr %v", err, tt.wantErr)
}
})
}
}
func FuzzVerifyHash(f *testing.F) {
hasher := NewSCrypt()
validSecret := "my-secret-password"
validHash, _ := hasher.CreateHash(validSecret)
// Seed the fuzzer with some valid and invalid inputs
f.Add(validHash, validSecret)
f.Add(validHash, "wrong-password")
f.Add("", "")
f.Add("$1:deadbeef:f:8:1:corrupt-hash", "any-password")
f.Add("", validSecret)
f.Add(validHash, "")
f.Fuzz(func(t *testing.T, hash, secretKey string) {
_ = hasher.VerifyHash(hash, secretKey)
})
}