public void PathNotExists_Optional()
        {
            var secretsManager = new Mock <IAmazonSecretsManager>();

            var secretName = "PathNotExists_Optional";

            secretsManager.Setup(
                m => m.GetSecretValueAsync(
                    It.Is <GetSecretValueRequest>(r => r.VersionStage == "AWSCURRENT" && r.VersionId == null && r.SecretId == secretName),
                    It.IsAny <CancellationToken>()))
            .ThrowsAsync(new ResourceNotFoundException(""));

            var source = new AwsSecretsManagerConfigurationSource(
                secretName,
                true,
                secretsManager.Object);

            var builder = new ConfigurationBuilder();

            builder.Add(source);

            var configuration = builder.Build();

            Assert.AreEqual(0, configuration.AsEnumerable().Count());
            Assert.AreEqual(0, configuration.GetChildren().Count());
        }
        public void PathExists_NotOptional()
        {
            var secretsManager = new Mock <IAmazonSecretsManager>();

            var secretName = "PathExists_NotOptional";
            var result     = @"{""key"":""value"",""section"":{""subkey"":""subvalue""}}";

            secretsManager.Setup(
                m => m.GetSecretValueAsync(
                    It.Is <GetSecretValueRequest>(r => r.VersionStage == "AWSCURRENT" && r.VersionId == null && r.SecretId == secretName),
                    It.IsAny <CancellationToken>()))
            .ReturnsAsync(
                new GetSecretValueResponse
            {
                SecretString = result
            });

            var source = new AwsSecretsManagerConfigurationSource(
                secretName,
                false,
                secretsManager.Object);

            var builder = new ConfigurationBuilder();

            builder.Add(source);

            var configuration = builder.Build();

            Assert.AreEqual(3, configuration.AsEnumerable().Count());
            Assert.AreEqual(2, configuration.GetChildren().Count());

            Assert.AreEqual("value", configuration["key"]);
            Assert.AreEqual("subvalue", configuration.GetSection("section")["subkey"]);
        }
        public void ThrowsException_Optional()
        {
            var secretsManager = new Mock <IAmazonSecretsManager>();

            var secretName = "ThrowsException_Optional";

            secretsManager.Setup(
                m => m.GetSecretValueAsync(
                    It.Is <GetSecretValueRequest>(r => r.VersionStage == "AWSCURRENT" && r.VersionId == null && r.SecretId == secretName),
                    It.IsAny <CancellationToken>()))
            .ThrowsAsync(new Exception(""));

            var source = new AwsSecretsManagerConfigurationSource(
                secretName,
                true,
                secretsManager.Object);

            var builder = new ConfigurationBuilder();

            builder.Add(source);

            Assert.ThrowsException <Exception>(() => builder.Build());
        }