test(11-07): pin that a keyless Typesense engine is never configured

- TestSyncEngineRegistration: the typesense import registers the driver
  and a missing or blank api_key reports Configured false, the gate that
  keeps beachcomber from sending anything
This commit is contained in:
Jakub Zych
2026-09-30 14:34:33 +02:00
parent 11b5b4cdf4
commit e55d2345b7

View File

@@ -338,3 +338,32 @@ func TestEngineConfig(t *testing.T) {
t.Fatal("unwrapURLError changed a plain error")
}
}
// TestSyncEngineRegistration covers the engine side of the sync gates
// (T-11-25): importing the package registers "typesense" for
// search.driver, and without search.typesense.api_key the engine reports
// itself unconfigured, which is what makes beachcomber skip every sync
// before any request.
func TestSyncEngineRegistration(t *testing.T) {
cfg, err := compass.Open(compass.Options{Dir: t.TempDir(), Env: "testing", Environ: []string{}})
if err != nil {
t.Fatal(err)
}
if err := cfg.Set("search.driver", "typesense"); err != nil {
t.Fatal(err)
}
svc, err := beachcomber.From(backpack.New(cfg))
if err != nil {
t.Fatal(err)
}
e, ok := svc.Engine().(*Engine)
if !ok || e.Configured() {
t.Fatalf("engine without an API key = %#v, want an unconfigured *typesense.Engine", svc.Engine())
}
if err := cfg.Set("search.typesense.api_key", " "); err != nil {
t.Fatal(err)
}
if LoadConfig(cfg).APIKey != "" || New(LoadConfig(cfg)).Configured() {
t.Fatal("a blank API key counts as configured")
}
}