improve native fuzz

This commit is contained in:
vovuas2003 2026-05-06 17:28:16 +03:00
parent 64ecd5ada1
commit b540edbe1e
8 changed files with 53 additions and 7 deletions

View file

@ -2,7 +2,7 @@ package myfuzz
import (
"bytes"
"fmt"
"linux-auth/internal/auth"
"linux-auth/internal/db"
)

33
myfuzz/cover.out Normal file
View file

@ -0,0 +1,33 @@
mode: set
linux-auth/internal/auth/auth.go:21.60,23.16 2 1
linux-auth/internal/auth/auth.go:23.16,26.3 1 1
linux-auth/internal/auth/auth.go:29.2,29.17 1 1
linux-auth/internal/auth/auth.go:29.17,31.3 1 0
linux-auth/internal/auth/auth.go:34.2,34.55 1 1
linux-auth/internal/auth/auth.go:34.55,37.17 2 1
linux-auth/internal/auth/auth.go:37.17,39.4 1 0
linux-auth/internal/auth/auth.go:42.3,44.41 3 1
linux-auth/internal/auth/auth.go:44.41,46.4 1 0
linux-auth/internal/auth/auth.go:48.3,48.20 1 1
linux-auth/internal/auth/auth.go:52.2,53.18 2 1
linux-auth/internal/db/sqlite.go:29.30,33.16 3 1
linux-auth/internal/db/sqlite.go:33.16,35.3 1 0
linux-auth/internal/db/sqlite.go:38.2,38.39 1 1
linux-auth/internal/db/sqlite.go:38.39,40.3 1 0
linux-auth/internal/db/sqlite.go:42.2,42.23 1 1
linux-auth/internal/db/sqlite.go:48.14,49.21 1 1
linux-auth/internal/db/sqlite.go:49.21,51.3 1 1
linux-auth/internal/db/sqlite.go:57.27,70.2 3 1
linux-auth/internal/db/sqlite.go:77.46,97.26 6 1
linux-auth/internal/db/sqlite.go:97.26,99.3 1 1
linux-auth/internal/db/sqlite.go:100.2,100.16 1 1
linux-auth/internal/db/sqlite.go:100.16,102.3 1 0
linux-auth/internal/db/sqlite.go:104.2,105.19 2 1
linux-auth/internal/db/sqlite.go:112.43,121.2 3 1
linux-auth/internal/db/sqlite.go:127.40,136.2 3 1
linux-auth/internal/db/sqlite.go:142.38,151.2 3 0
linux-auth/internal/db/sqlite.go:158.54,165.16 3 0
linux-auth/internal/db/sqlite.go:165.16,167.3 1 0
linux-auth/internal/db/sqlite.go:169.2,169.12 1 0
linux-auth/internal/utils/hash.go:13.43,16.2 2 1
linux-auth/internal/utils/hash.go:24.48,26.2 1 1

3
myfuzz/cover.txt Normal file
View file

@ -0,0 +1,3 @@
PASS
coverage: 75.0% of statements in ../...
ok linux-auth/myfuzz 0.046s

View file

@ -16,20 +16,22 @@ func FuzzAuth(f *testing.F) {
db.Close()
})
f.Add("admin", "admin")
f.Add("user", "password")
f.Add("", "")
f.Add("admin", "admin123") // right admin
f.Add("user1", "password1") // right user
f.Add("admin", "admin") // wrong admin
f.Add("user", "password") // wrong user
f.Add("", "") // blank test
f.Fuzz(func(t *testing.T, username string, password string) {
ok, err := auth.Authenticate(username, password)
if err != nil {
t.Errorf("For {username} {%q} and {password} {%q} error: %v", username, password, err)
t.Errorf("For username %q and password %q error: %v", username, password, err)
}
if ok {
if (username == "admin" && password == "admin123") || (username == "user1" && password == "password1") {
return
}
t.Errorf("Unexpected login for {username} {%q} and {password} {%q}", username, password)
t.Errorf("Unexpected login for username %q and password %q", username, password)
}
})
}

View file

@ -3,3 +3,4 @@
cp ../data/users.db test_data.db
go test -fuzz=FuzzAuth -fuzztime=5m --parallel=1
go test -run=FuzzAuth -coverprofile=cover.out -coverpkg=../... | tee cover.txt

3
myfuzz/view_fuzz_coverage.sh Executable file
View file

@ -0,0 +1,3 @@
#!/bin/bash
go tool cover -html=cover.out