diff --git a/Consul.Test/ConnectTest.cs b/Consul.Test/ConnectTest.cs index 853e24cf8..a93293a33 100644 --- a/Consul.Test/ConnectTest.cs +++ b/Consul.Test/ConnectTest.cs @@ -54,5 +54,23 @@ public async Task Connect_GetCAConfigurationTest() Assert.NotEqual((ulong)0, result.CreateIndex); Assert.NotEqual((ulong)0, result.ModifyIndex); } + + [Fact] + public async Task Connect_CASetConfig() + { + var req = await _client.Connect.CAGetConfig(); + var config = req.Response; + + config.Config["test_state"] = new Dictionary { { "foo", "bar" } }; + config.Config["PrivateKey"] = ""; + + await _client.Connect.CASetConfig(config); + req = await _client.Connect.CAGetConfig(); + var updatedConfig = req.Response; + + Assert.Equal("consul", updatedConfig.Provider); + Assert.Equal("bar", updatedConfig.State["foo"]); + Assert.Equal("", updatedConfig.Config["PrivateKey"]); + } } } diff --git a/Consul/Connect.cs b/Consul/Connect.cs index 2a04b3813..ffdbf55f4 100644 --- a/Consul/Connect.cs +++ b/Consul/Connect.cs @@ -90,6 +90,23 @@ public Task> CAGetConfig(QueryOptions q, CancellationToken { return _client.Get("/v1/connect/ca/configuration", q).Execute(ct); } + + /// + /// CASetConfig sets the current CA configuration. + /// + public Task CASetConfig(CAConfig config, CancellationToken ct = default) + { + return CASetConfig(config, WriteOptions.Default, ct); + } + + /// + /// CASetConfig sets the current CA configuration. + /// + public Task CASetConfig(CAConfig config, WriteOptions q, CancellationToken ct = default) + { + return _client.Put("/v1/connect/ca/configuration", config, q).Execute(ct); + + } } public partial class ConsulClient : IConsulClient diff --git a/Consul/Interfaces/IConnectEndpoint.cs b/Consul/Interfaces/IConnectEndpoint.cs index 2a84f63fe..59ac353a1 100644 --- a/Consul/Interfaces/IConnectEndpoint.cs +++ b/Consul/Interfaces/IConnectEndpoint.cs @@ -30,5 +30,7 @@ public interface IConnectEndpoint Task> CARoots(CancellationToken ct = default); Task> CAGetConfig(QueryOptions q, CancellationToken ct = default); Task> CAGetConfig(CancellationToken ct = default); + Task CASetConfig(CAConfig config, WriteOptions q, CancellationToken ct = default); + Task CASetConfig(CAConfig config, CancellationToken ct = default); } }