40 lines
1.5 KiB
Go
40 lines
1.5 KiB
Go
package main
|
|
|
|
import (
|
|
"knowledge-governance/internal/jobs"
|
|
"knowledge-governance/internal/qaopsorg"
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
)
|
|
|
|
func TestDirectorySyncWorkerRegistrationIsOptInAndRuntimeChecked(t *testing.T) {
|
|
handlers := map[string]jobs.Handler{}
|
|
values := map[string]string{}
|
|
get := func(k string) string { return values[k] }
|
|
if err := configureDirectorySync(nil, get, handlers); err != nil || len(handlers) != 0 {
|
|
t.Fatal("disabled sync registered")
|
|
}
|
|
values["DOBOTAI_OPS_DIRECTORY_SYNC_ENABLED"] = "true"
|
|
if err := configureDirectorySync(nil, get, handlers); err == nil {
|
|
t.Fatal("incomplete binding registered")
|
|
}
|
|
root := t.TempDir()
|
|
script := filepath.Join(root, "fixture.py")
|
|
if err := os.WriteFile(script, []byte("# fixture; not executed by registration"), 0600); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
values["DOBOTAI_OPS_TENANT_KEY"] = "fixture-tenant"
|
|
values["DOBOTAI_OPS_DIRECTORY_SYNC_PYTHON"] = "/bin/sh"
|
|
values["DOBOTAI_OPS_DIRECTORY_SYNC_SCRIPT"] = script
|
|
values["DOBOTAI_OPS_DIRECTORY_SYNC_RUNTIME_ROOT"] = root
|
|
values["DOBOTAI_OPS_DIRECTORY_SYNC_SPOOL_ROOT"] = root
|
|
if err := configureDirectorySync(nil, get, handlers); err != nil || handlers[qaopsorg.NewStore(nil, "fixture-tenant").SyncJobType()] == nil {
|
|
t.Fatal("configured worker was not wired")
|
|
}
|
|
values["DOBOTAI_OPS_DIRECTORY_SYNC_SCRIPT"] = filepath.Join(root, "missing.py")
|
|
if err := configureDirectorySync(nil, get, map[string]jobs.Handler{}); err == nil {
|
|
t.Fatal("missing runtime advertised as ready")
|
|
}
|
|
}
|