Files
DoGaMa-serv/internal/agent/agent_config_test.go
T
tony 46bc90a0e8
CI / validate (pull_request) Failing after 2m30s
feat(release): harden production packaging
2026-08-09 22:11:21 +02:00

43 lines
1.3 KiB
Go

package agent
import (
"bytes"
"os"
"path/filepath"
"testing"
)
func TestLoadConfigReadsSecretFileAndRoots(t *testing.T) {
temporary := t.TempDir()
secretPath := filepath.Join(temporary, "agent-token")
secret := bytes.Repeat([]byte("a"), 32)
if err := os.WriteFile(secretPath, append(secret, '\n'), 0o600); err != nil {
t.Fatal(err)
}
serverRoot := filepath.Join(temporary, "servers")
if err := os.Mkdir(serverRoot, 0o700); err != nil {
t.Fatal(err)
}
t.Setenv("DOGAMA_AGENT_TOKEN_FILE", secretPath)
t.Setenv("DOGAMA_ALLOWED_SERVER_ROOT", serverRoot)
t.Setenv("DOGAMA_ALLOWED_BACKUP_ROOT", "")
t.Setenv("DOGAMA_AGENT_REGISTRY_PATH", filepath.Join(temporary, "registry.json"))
t.Setenv("DOGAMA_DOCKER_SOCKET", filepath.Join(temporary, "docker.sock"))
config, err := LoadConfig()
if err != nil {
t.Fatal(err)
}
if !bytes.Equal(config.Secret, secret) || len(config.AllowedRoots) != 2 || config.ListenAddress != ":8081" || config.DockerNetwork != "dogama-games" {
t.Fatalf("config = %#v", config)
}
}
func TestLoadConfigUsesConfinedProductionDefaults(t *testing.T) {
t.Setenv("DOGAMA_AGENT_TOKEN_FILE", filepath.Join(t.TempDir(), "missing-token"))
t.Setenv("DOGAMA_ALLOWED_SERVER_ROOT", "")
t.Setenv("DOGAMA_ALLOWED_BACKUP_ROOT", "")
if _, err := LoadConfig(); err == nil {
t.Fatal("missing default token unexpectedly accepted")
}
}