From e55d2345b71edf3e0ad517fad7ea82f702648ff0 Mon Sep 17 00:00:00 2001 From: Jakub Zych Date: Wed, 30 Sep 2026 14:34:33 +0200 Subject: [PATCH] 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 --- modules/beachcomber/typesense/engine_test.go | 29 ++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/modules/beachcomber/typesense/engine_test.go b/modules/beachcomber/typesense/engine_test.go index 4b26e2f..23457fe 100644 --- a/modules/beachcomber/typesense/engine_test.go +++ b/modules/beachcomber/typesense/engine_test.go @@ -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") + } +}