package config_test import ( "encoding/json" "errors" "testing" "github.com/TecharoHQ/anubis/lib/policy/config" "github.com/TecharoHQ/anubis/lib/store/bbolt" "github.com/TecharoHQ/anubis/lib/store/valkey" ) func TestStoreValid(t *testing.T) { for _, tt := range []struct { name string input config.Store err error }{ { name: "no backend", input: config.Store{}, err: config.ErrNoStoreBackend, }, { name: "in-memory backend", input: config.Store{ Backend: "memory", }, }, { name: "bbolt backend", input: config.Store{ Backend: "bbolt", Parameters: json.RawMessage(`{"path": "/tmp/foo", "bucket": "bar"}`), }, }, { name: "valkey backend", input: config.Store{ Backend: "valkey", Parameters: json.RawMessage(`{"url": "redis://valkey:6379/0"}`), }, }, { name: "valkey backend no URL", input: config.Store{ Backend: "valkey", Parameters: json.RawMessage(`{}`), }, err: valkey.ErrNoURL, }, { name: "valkey backend bad URL", input: config.Store{ Backend: "valkey", Parameters: json.RawMessage(`{"url": "http://anubis.techaro.lol"}`), }, err: valkey.ErrBadURL, }, { name: "bbolt backend no path", input: config.Store{ Backend: "bbolt", Parameters: json.RawMessage(`{"path": "", "bucket": "bar"}`), }, err: bbolt.ErrMissingPath, }, { name: "unknown backend", input: config.Store{ Backend: "taco salad", }, err: config.ErrUnknownStoreBackend, }, } { t.Run(tt.name, func(t *testing.T) { if err := tt.input.Valid(); !errors.Is(err, tt.err) { t.Logf("want: %v", tt.err) t.Logf("got: %v", err) t.Error("invalid error returned") } }) } }