diff --git a/builtin/logical/database/backend_test.go b/builtin/logical/database/backend_test.go index 6d42fcbfd6..447ab7d66a 100644 --- a/builtin/logical/database/backend_test.go +++ b/builtin/logical/database/backend_test.go @@ -47,8 +47,11 @@ func getCluster(t *testing.T) (*vault.TestCluster, logical.SystemView) { sys := vault.TestDynamicSystemView(cores[0].Core, nil) vault.TestAddTestPlugin(t, cores[0].Core, "postgresql-database-plugin", consts.PluginTypeDatabase, "TestBackend_PluginMain_Postgres", []string{}, "") + vault.TestAddTestPlugin(t, cores[0].Core, "postgresql-database-plugin-muxed", consts.PluginTypeDatabase, "TestBackend_PluginMain_PostgresMultiplexed", []string{}, "") vault.TestAddTestPlugin(t, cores[0].Core, "mongodb-database-plugin", consts.PluginTypeDatabase, "TestBackend_PluginMain_Mongo", []string{}, "") + vault.TestAddTestPlugin(t, cores[0].Core, "mongodb-database-plugin-muxed", consts.PluginTypeDatabase, "TestBackend_PluginMain_MongoMultiplexed", []string{}, "") vault.TestAddTestPlugin(t, cores[0].Core, "mongodbatlas-database-plugin", consts.PluginTypeDatabase, "TestBackend_PluginMain_MongoAtlas", []string{}, "") + vault.TestAddTestPlugin(t, cores[0].Core, "mongodbatlas-database-plugin-muxed", consts.PluginTypeDatabase, "TestBackend_PluginMain_MongoAtlasMultiplexed", []string{}, "") return cluster, sys } @@ -66,6 +69,14 @@ func TestBackend_PluginMain_Postgres(t *testing.T) { v5.Serve(dbType.(v5.Database)) } +func TestBackend_PluginMain_PostgresMultiplexed(t *testing.T) { + if os.Getenv(pluginutil.PluginVaultVersionEnv) == "" { + return + } + + v5.ServeMultiplex(postgresql.New) +} + func TestBackend_PluginMain_Mongo(t *testing.T) { if os.Getenv(pluginutil.PluginVaultVersionEnv) == "" { return @@ -79,6 +90,14 @@ func TestBackend_PluginMain_Mongo(t *testing.T) { v5.Serve(dbType.(v5.Database)) } +func TestBackend_PluginMain_MongoMultiplexed(t *testing.T) { + if os.Getenv(pluginutil.PluginVaultVersionEnv) == "" { + return + } + + v5.ServeMultiplex(mongodb.New) +} + func TestBackend_PluginMain_MongoAtlas(t *testing.T) { if os.Getenv(pluginutil.PluginUnwrapTokenEnv) == "" { return @@ -92,6 +111,14 @@ func TestBackend_PluginMain_MongoAtlas(t *testing.T) { v5.Serve(dbType.(v5.Database)) } +func TestBackend_PluginMain_MongoAtlasMultiplexed(t *testing.T) { + if os.Getenv(pluginutil.PluginUnwrapTokenEnv) == "" { + return + } + + v5.ServeMultiplex(mongodbatlas.New) +} + func TestBackend_RoleUpgrade(t *testing.T) { storage := &logical.InmemStorage{} backend := &databaseBackend{} diff --git a/builtin/logical/database/mockv5.go b/builtin/logical/database/mockv5.go index 84db3eb196..632cfb38e0 100644 --- a/builtin/logical/database/mockv5.go +++ b/builtin/logical/database/mockv5.go @@ -36,6 +36,13 @@ func RunV5() error { return nil } +// Run instantiates a MongoDB object, and runs the RPC server for the plugin +func RunV6Multiplexed() error { + v5.ServeMultiplex(New) + + return nil +} + func (m MockDatabaseV5) Initialize(ctx context.Context, req v5.InitializeRequest) (v5.InitializeResponse, error) { log.Default().Info("Initialize called", "req", req) diff --git a/builtin/logical/database/versioning_large_test.go b/builtin/logical/database/versioning_large_test.go index db29413085..723f9dd808 100644 --- a/builtin/logical/database/versioning_large_test.go +++ b/builtin/logical/database/versioning_large_test.go @@ -24,6 +24,7 @@ func TestPlugin_lifecycle(t *testing.T) { vault.TestAddTestPlugin(t, cluster.Cores[0].Core, "mock-v4-database-plugin", consts.PluginTypeDatabase, "TestBackend_PluginMain_MockV4", []string{}, "") vault.TestAddTestPlugin(t, cluster.Cores[0].Core, "mock-v5-database-plugin", consts.PluginTypeDatabase, "TestBackend_PluginMain_MockV5", []string{}, "") + vault.TestAddTestPlugin(t, cluster.Cores[0].Core, "mock-v6-database-plugin-muxed", consts.PluginTypeDatabase, "TestBackend_PluginMain_MockV6Multiplexed", []string{}, "") config := logical.TestBackendConfig() config.StorageView = &logical.InmemStorage{} @@ -261,6 +262,14 @@ func TestBackend_PluginMain_MockV5(t *testing.T) { RunV5() } +func TestBackend_PluginMain_MockV6Multiplexed(t *testing.T) { + if os.Getenv(pluginutil.PluginVaultVersionEnv) == "" { + return + } + + RunV6Multiplexed() +} + func assertNoRespData(t *testing.T, resp *logical.Response) { t.Helper() if resp != nil && len(resp.Data) > 0 {