public void BuildMethodHappyPath3() { var secret = MockSecret.Get("key", "value").Object; var source = new SecretsConfigurationSource { Secrets = { secret } }; var builder = new ConfigurationBuilder() .AddInMemoryCollection(new Dictionary <string, string> { ["RockLib.Secrets:Type"] = typeof(CustomSecret).AssemblyQualifiedName }); // Before building, source only contains the single secret that was added directly to it. source.Secrets.Should().ContainSingle(s => ReferenceEquals(s, secret)); source.Build(builder); // After building the first time, the secret defined in configuration has been added to the source. source.Secrets.Should().HaveCount(2); source.Secrets[0].Should().BeSameAs(secret); source.Secrets[1].Should().BeOfType <CustomSecret>(); source.Build(builder); // After building a second time, source hasn't changed. source.Secrets.Should().HaveCount(2); source.Secrets[0].Should().BeSameAs(secret); source.Secrets[1].Should().BeOfType <CustomSecret>(); }
public void BuildMethodHappyPath1() { var secret1 = MockSecret.Get("key1", "value1").Object; var secret2 = MockSecret.Get("key2", "value2").Object; var source = new SecretsConfigurationSource { Secrets = { secret1, secret2 } }; var builder = new ConfigurationBuilder() .AddInMemoryCollection(new Dictionary <string, string> { ["RockLib.Secrets:Type"] = typeof(CustomSecret).AssemblyQualifiedName }); var provider = (SecretsConfigurationProvider)source.Build(builder); provider.Source.Should().BeSameAs(source); provider.Secrets.Should().NotBeSameAs(source.Secrets); provider.Secrets.Should().BeEquivalentTo(source.Secrets); provider.Secrets[0].Should().BeSameAs(secret1); provider.Secrets[1].Should().BeSameAs(secret2); provider.Secrets[2].Should().BeOfType <CustomSecret>(); }
public void LoadMethodSadPath() { var exception = new Exception(); var mockSecret1 = MockSecret.Get("foo", "abc"); var mockSecret2 = MockSecret.Get("bar", exception); var caughtExceptions = new List <Exception>(); void OnSecretException(SecretExceptionContext context) { caughtExceptions.Add(context.Exception); } var source = new SecretsConfigurationSource { Secrets = { mockSecret1.Object, mockSecret2.Object }, ReloadMilliseconds = Timeout.Infinite, OnSecretException = OnSecretException }; var provider = new SecretsConfigurationProvider(source); provider.Load(); provider.TryGet("foo", out var fooValue).Should().BeTrue(); fooValue.Should().Be("abc"); provider.TryGet("bar", out var barValue).Should().BeTrue(); barValue.Should().BeNull(); caughtExceptions.Should().HaveCount(1); caughtExceptions[0].Should().BeSameAs(exception); }
public void ConstructorHappyPath() { var source = new SecretsConfigurationSource(); var builder = new SecretsConfigurationBuilder(source); builder.Source.Should().BeSameAs(source); }
public void ConstructorSadPath2() { var source = new SecretsConfigurationSource(); Action act = () => new SecretsConfigurationProvider(source); act.Should().ThrowExactly <ArgumentException>().WithMessage("The SecretsConfigurationSource must contain at least one secret.*source*"); }
public void AddSecretMethodSadPath() { var source = new SecretsConfigurationSource(); var builder = new SecretsConfigurationBuilder(source); Action act = () => builder.AddSecret(null); act.Should().ThrowExactly <ArgumentNullException>().WithMessage("*secret*"); }
public void DisableReloadMethodHappyPath() { var source = new SecretsConfigurationSource { ReloadMilliseconds = 1000 }; source.DisableReload(); source.ReloadMilliseconds.Should().Be(Timeout.Infinite); }
public void AddSecretMethodHappyPath() { var source = new SecretsConfigurationSource(); var builder = new SecretsConfigurationBuilder(source); var secret = MockSecret.Get("foo", "bar").Object; builder.AddSecret(secret); source.Secrets.Should().ContainSingle() .Which.Should().BeSameAs(secret); }
public void ConstructorSadPath5() { var secret1 = MockSecret.Get("key1", "value1").Object; var secret2 = MockSecret.Get("key1", "value2").Object; var source = new SecretsConfigurationSource { Secrets = { secret1, secret2 } }; Action act = () => new SecretsConfigurationProvider(source); act.Should().ThrowExactly <ArgumentException>().WithMessage("The SecretsConfigurationSource cannot contain any secrets with duplicate Keys.*source*"); }
public void ConstructorHappyPath() { var secret1 = MockSecret.Get("key1", "value1").Object; var secret2 = MockSecret.Get("key2", "value2").Object; var source = new SecretsConfigurationSource { Secrets = { secret1, secret2 } }; var provider = new SecretsConfigurationProvider(source); provider.Source.Should().BeSameAs(source); provider.Secrets.Should().NotBeSameAs(source.Secrets); provider.Secrets.Should().BeEquivalentTo(source.Secrets); }
public void BuildMethodHappyPath2() { Action <SecretExceptionContext> onSecretException = context => { }; var source = new SecretsConfigurationSource { Secrets = { MockSecret.Get("key", "value").Object } }; var builder = new ConfigurationBuilder(); builder.SetSecretExceptionHandler(onSecretException); var provider = source.Build(builder); var secretsConfigurationProvider = provider.Should().BeOfType <SecretsConfigurationProvider>().Subject; secretsConfigurationProvider.Source.Should().BeSameAs(source); source.OnSecretException.Should().BeSameAs(onSecretException); }
public void LoadMethodHappyPath() { var secret1 = MockSecret.Get("foo", "abc").Object; var secret2 = MockSecret.Get("bar", (string)null).Object; var source = new SecretsConfigurationSource { Secrets = { secret1, secret2 }, ReloadMilliseconds = Timeout.Infinite }; var provider = new SecretsConfigurationProvider(source); provider.Load(); provider.TryGet("foo", out var fooValue).Should().BeTrue(); fooValue.Should().Be("abc"); provider.TryGet("bar", out var barValue).Should().BeTrue(); barValue.Should().BeNull(); }