43 lines
1.3 KiB
Go
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")
|
|
}
|
|
}
|