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.
This commit is contained in:
124
agent/main_test.go
Normal file
124
agent/main_test.go
Normal file
@@ -0,0 +1,124 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"io"
|
||||
"log"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"crypto-miner-agent/config"
|
||||
)
|
||||
|
||||
func TestShortIDLong(t *testing.T) {
|
||||
if got := shortID("abcdef1234567890"); got != "abcdef12" {
|
||||
t.Fatalf("shortID long = %q", got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestShortIDShort(t *testing.T) {
|
||||
if got := shortID("abc"); got != "abc" {
|
||||
t.Fatalf("shortID short = %q", got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestShortIDEmpty(t *testing.T) {
|
||||
if got := shortID(""); got != "pending" {
|
||||
t.Fatalf("shortID empty = %q", got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestMustInstallPathUnknown(t *testing.T) {
|
||||
cfg := config.RuntimeConfig{BuiltinConfig: config.BuiltinConfig{
|
||||
InstallBase: "custom",
|
||||
}}
|
||||
if got := mustInstallPath(cfg); got != "unknown" {
|
||||
t.Fatalf("mustInstallPath invalid cfg = %q, want unknown", got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestMustInstallPathTemp(t *testing.T) {
|
||||
cfg := config.RuntimeConfig{BuiltinConfig: config.BuiltinConfig{
|
||||
InstallBase: "temp",
|
||||
InstallRelativePath: "test-miner-install",
|
||||
WorkerName: "w1",
|
||||
BuildID: "build12345678",
|
||||
}}
|
||||
got := mustInstallPath(cfg)
|
||||
if got == "unknown" || !strings.Contains(got, "test-miner-install") {
|
||||
t.Fatalf("mustInstallPath temp = %q", got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSetupLoggingStealthDiscards(t *testing.T) {
|
||||
prev := log.Writer()
|
||||
t.Cleanup(func() { log.SetOutput(prev) })
|
||||
|
||||
cfg := config.RuntimeConfig{BuiltinConfig: config.BuiltinConfig{StealthMode: true, FileLogging: true}}
|
||||
setupLogging(cfg)
|
||||
if log.Writer() != io.Discard {
|
||||
t.Fatal("stealth mode should discard log output")
|
||||
}
|
||||
}
|
||||
|
||||
func TestSetupLoggingFileLoggingDisabled(t *testing.T) {
|
||||
prev := log.Writer()
|
||||
t.Cleanup(func() { log.SetOutput(prev) })
|
||||
|
||||
cfg := config.RuntimeConfig{BuiltinConfig: config.BuiltinConfig{FileLogging: false}}
|
||||
setupLogging(cfg)
|
||||
if log.Writer() != io.Discard {
|
||||
t.Fatal("file logging disabled should discard output")
|
||||
}
|
||||
}
|
||||
|
||||
func closeLogFileWriter() {
|
||||
if f, ok := log.Writer().(*os.File); ok {
|
||||
_ = f.Close()
|
||||
}
|
||||
}
|
||||
|
||||
func TestSetupLoggingEnvLogFile(t *testing.T) {
|
||||
prev := log.Writer()
|
||||
dir := t.TempDir()
|
||||
logPath := filepath.Join(dir, "nested", "agent.log")
|
||||
t.Setenv("MINER_LOG_FILE", logPath)
|
||||
t.Cleanup(func() {
|
||||
closeLogFileWriter()
|
||||
log.SetOutput(prev)
|
||||
_ = os.Unsetenv("MINER_LOG_FILE")
|
||||
})
|
||||
|
||||
cfg := config.RuntimeConfig{BuiltinConfig: config.BuiltinConfig{FileLogging: true}}
|
||||
setupLogging(cfg)
|
||||
if log.Writer() == io.Discard {
|
||||
t.Fatal("MINER_LOG_FILE should enable file logging")
|
||||
}
|
||||
if _, err := os.Stat(logPath); err != nil {
|
||||
t.Fatalf("expected log file at %s: %v", logPath, err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRedirectLogCreatesFile(t *testing.T) {
|
||||
prev := log.Writer()
|
||||
dir := t.TempDir()
|
||||
path := filepath.Join(dir, "logs", "redirect.log")
|
||||
t.Cleanup(func() {
|
||||
closeLogFileWriter()
|
||||
log.SetOutput(prev)
|
||||
})
|
||||
|
||||
redirectLog(path)
|
||||
log.Print("redirect test line")
|
||||
if _, err := os.Stat(path); err != nil {
|
||||
t.Fatalf("redirectLog should create %s: %v", path, err)
|
||||
}
|
||||
data, err := os.ReadFile(path)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if !strings.Contains(string(data), "redirect test line") {
|
||||
t.Fatalf("log file contents: %q", data)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user