71 lines
2.0 KiB
Go
71 lines
2.0 KiB
Go
package cli
|
|
|
|
import (
|
|
"encoding/json"
|
|
"os"
|
|
"path/filepath"
|
|
"strings"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/aoagents/agent-orchestrator/backend/internal/legacyimport"
|
|
"github.com/aoagents/agent-orchestrator/backend/internal/runfile"
|
|
)
|
|
|
|
func writeLegacyProject(t *testing.T) string {
|
|
t.Helper()
|
|
root := filepath.Join(t.TempDir(), ".agent-orchestrator")
|
|
if err := os.MkdirAll(filepath.Join(root, "projects", "alpha", "sessions"), 0o750); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := os.WriteFile(filepath.Join(root, "config.yaml"),
|
|
[]byte("projects:\n alpha:\n path: /repos/alpha\n"), 0o600); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
return root
|
|
}
|
|
|
|
func TestImportCommand_NoLegacyData(t *testing.T) {
|
|
setConfigEnv(t)
|
|
empty := filepath.Join(t.TempDir(), "nope")
|
|
out, _, err := executeCLI(t, Deps{}, "import", "--from", empty, "--yes")
|
|
if err != nil {
|
|
t.Fatalf("import: %v", err)
|
|
}
|
|
if !strings.Contains(out, "Nothing to import") {
|
|
t.Fatalf("out = %q, want 'Nothing to import'", out)
|
|
}
|
|
}
|
|
|
|
func TestImportCommand_ImportsProjectJSON(t *testing.T) {
|
|
setConfigEnv(t)
|
|
root := writeLegacyProject(t)
|
|
|
|
out, _, err := executeCLI(t, Deps{}, "import", "--from", root, "--yes", "--json")
|
|
if err != nil {
|
|
t.Fatalf("import: %v", err)
|
|
}
|
|
var rep legacyimport.Report
|
|
if err := json.Unmarshal([]byte(out), &rep); err != nil {
|
|
t.Fatalf("parse report %q: %v", out, err)
|
|
}
|
|
if rep.ProjectsImported != 1 {
|
|
t.Fatalf("projectsImported = %d, want 1", rep.ProjectsImported)
|
|
}
|
|
}
|
|
|
|
func TestImportCommand_RefusesWhenDaemonRunning(t *testing.T) {
|
|
cfg := setConfigEnv(t)
|
|
root := writeLegacyProject(t)
|
|
|
|
// A run-file owned by this (alive) process makes the daemon look live.
|
|
if err := runfile.Write(cfg.runFile, runfile.Info{PID: os.Getpid(), Port: 3001, StartedAt: time.Now()}); err != nil {
|
|
t.Fatalf("write run-file: %v", err)
|
|
}
|
|
|
|
_, _, err := executeCLI(t, Deps{}, "import", "--from", root, "--yes")
|
|
if err == nil || !strings.Contains(err.Error(), "daemon is running") {
|
|
t.Fatalf("err = %v, want refusal because daemon is running", err)
|
|
}
|
|
}
|