JOJ3/pkg/healthcheck/files_test.go
张泊明518370910136 e5de5b2bd6
Some checks failed
build / trigger-build-image (push) Blocked by required conditions
build / build (push) Has been cancelled
build / build (pull_request) Successful in 2m7s
build / trigger-build-image (pull_request) Has been skipped
test: expand reliability regression coverage
2026-08-02 04:28:24 -07:00

68 lines
1.9 KiB
Go

package healthcheck
import (
"crypto/sha256"
"encoding/hex"
"os"
"path/filepath"
"strings"
"testing"
)
func TestParseWhitelistedChars(t *testing.T) {
got := parseWhitelistedChars("你, 好, a, invalid, ,你")
if len(got) != 2 {
t.Fatalf("parseWhitelistedChars() = %v", got)
}
if _, ok := got['你']; !ok {
t.Fatal("missing whitelisted rune")
}
}
func TestNonASCIIFiles(t *testing.T) {
dir := t.TempDir()
if err := os.WriteFile(filepath.Join(dir, "source.txt"), []byte("hello 你\n"), 0o600); err != nil {
t.Fatal(err)
}
if err := NonASCIIFiles(dir, "你"); err != nil {
t.Fatalf("whitelisted NonASCIIFiles() error = %v", err)
}
if err := NonASCIIFiles(dir, ""); err == nil || !strings.Contains(err.Error(), "source.txt") {
t.Fatalf("NonASCIIFiles() error = %v", err)
}
}
func TestForbiddenCheck(t *testing.T) {
dir := t.TempDir()
t.Chdir(dir)
if err := os.WriteFile(filepath.Join(dir, ".gitignore"), []byte("*.out\n"), 0o600); err != nil {
t.Fatal(err)
}
if err := os.WriteFile(filepath.Join(dir, "result.out"), nil, 0o600); err != nil {
t.Fatal(err)
}
if err := ForbiddenCheck("."); err == nil || !strings.Contains(err.Error(), "result.out") {
t.Fatalf("ForbiddenCheck() error = %v", err)
}
}
func TestVerifyFiles(t *testing.T) {
dir := t.TempDir()
path := filepath.Join(dir, "protected.txt")
content := []byte("original")
if err := os.WriteFile(path, content, 0o600); err != nil {
t.Fatal(err)
}
sum := sha256.Sum256(content)
checksum := hex.EncodeToString(sum[:])
if err := VerifyFiles(dir, "protected.txt", checksum); err != nil {
t.Fatal(err)
}
if err := VerifyFiles(dir, "protected.txt", "bad"); err == nil || !strings.Contains(err.Error(), "altered") {
t.Fatalf("VerifyFiles(altered) error = %v", err)
}
if err := VerifyFiles(dir, "one,two", checksum); err == nil || !strings.Contains(err.Error(), "do not match") {
t.Fatalf("VerifyFiles(mismatch) error = %v", err)
}
}