Example #1
0
        public void GetSecretBinaryTest()
        {
            String testSecretName = Setup(TestType.SecretBinary);

            cache = new SecretsManagerCache(TestBase.Client);
            Assert.Equal(cache.GetSecretBinary(testSecretName).Result, testSecretBinary.ToArray());
        }
Example #2
0
        public void NoSecretBinaryTest()
        {
            String testSecretName = Setup(TestType.SecretString);

            cache = new SecretsManagerCache(TestBase.Client);
            Assert.Null(cache.GetSecretBinary(testSecretName).Result);
        }
        public void HookSecretCacheTest()
        {
            Mock <IAmazonSecretsManager> secretsManager = new Mock <IAmazonSecretsManager>(MockBehavior.Strict);

            secretsManager.SetupSequence(i => i.GetSecretValueAsync(It.IsAny <GetSecretValueRequest>(), default(CancellationToken)))
            .ReturnsAsync(secretStringResponse1)
            .ReturnsAsync(binaryResponse1)
            .ThrowsAsync(new AmazonSecretsManagerException("This should not be called"));
            secretsManager.SetupSequence(i => i.DescribeSecretAsync(It.IsAny <DescribeSecretRequest>(), default(CancellationToken)))
            .ReturnsAsync(describeSecretResponse1)
            .ReturnsAsync(describeSecretResponse1)
            .ThrowsAsync(new AmazonSecretsManagerException("This should not be called"));

            TestHook            testHook = new TestHook();
            SecretsManagerCache cache    = new SecretsManagerCache(secretsManager.Object, new SecretCacheConfiguration {
                CacheHook = testHook
            });

            for (int i = 0; i < 10; i++)
            {
                Assert.Equal(cache.GetSecretString(secretStringResponse1.Name).Result, secretStringResponse1.SecretString);
            }
            Assert.Equal(2, testHook.GetCount());

            for (int i = 0; i < 10; i++)
            {
                Assert.Equal(cache.GetSecretBinary(binaryResponse1.Name).Result, binaryResponse1.SecretBinary.ToArray());
            }
            Assert.Equal(4, testHook.GetCount());
        }
        public void BinarySecretRefreshNowTest()
        {
            Mock <IAmazonSecretsManager> secretsManager = new Mock <IAmazonSecretsManager>(MockBehavior.Strict);

            secretsManager.SetupSequence(i => i.GetSecretValueAsync(It.Is <GetSecretValueRequest>(j => j.SecretId == binaryResponse1.Name), default(CancellationToken)))
            .ReturnsAsync(binaryResponse1)
            .ReturnsAsync(binaryResponse2)
            .ThrowsAsync(new AmazonSecretsManagerException("This should not be called"));
            secretsManager.SetupSequence(i => i.DescribeSecretAsync(It.Is <DescribeSecretRequest>(j => j.SecretId == binaryResponse1.Name), default(CancellationToken)))
            .ReturnsAsync(describeSecretResponse1)
            .ReturnsAsync(describeSecretResponse2)
            .ThrowsAsync(new AmazonSecretsManagerException("This should not be called"));

            SecretsManagerCache cache = new SecretsManagerCache(secretsManager.Object);

            byte[] first   = cache.GetSecretBinary(binaryResponse1.Name).Result;
            bool   success = cache.RefreshNowAsync(binaryResponse1.Name).Result;

            byte[] second = cache.GetSecretBinary(binaryResponse1.Name).Result;
            Assert.True(success);
            Assert.NotEqual(first, second);
        }
        public void NoSecretBinaryPresentTest()
        {
            Mock <IAmazonSecretsManager> secretsManager = new Mock <IAmazonSecretsManager>(MockBehavior.Strict);

            secretsManager.SetupSequence(i => i.GetSecretValueAsync(It.Is <GetSecretValueRequest>(j => j.SecretId == binaryResponse1.Name), default(CancellationToken)))
            .ReturnsAsync(secretStringResponse1)
            .ThrowsAsync(new AmazonSecretsManagerException("This should not be called"));
            secretsManager.SetupSequence(i => i.DescribeSecretAsync(It.Is <DescribeSecretRequest>(j => j.SecretId == binaryResponse1.Name), default(CancellationToken)))
            .ReturnsAsync(describeSecretResponse1)
            .ThrowsAsync(new AmazonSecretsManagerException("This should not be called"));

            SecretsManagerCache cache = new SecretsManagerCache(secretsManager.Object);

            byte[] first = cache.GetSecretBinary(binaryResponse1.Name).Result;
            Assert.Null(first);
        }
        public void GetSecretBinaryMultipleTest()
        {
            Mock <IAmazonSecretsManager> secretsManager = new Mock <IAmazonSecretsManager>(MockBehavior.Strict);

            secretsManager.SetupSequence(i => i.GetSecretValueAsync(It.Is <GetSecretValueRequest>(j => j.SecretId == binaryResponse1.Name), default(CancellationToken)))
            .ReturnsAsync(binaryResponse1)
            .ThrowsAsync(new AmazonSecretsManagerException("This should not be called"));
            secretsManager.SetupSequence(i => i.DescribeSecretAsync(It.Is <DescribeSecretRequest>(j => j.SecretId == binaryResponse1.Name), default(CancellationToken)))
            .ReturnsAsync(describeSecretResponse1)
            .ThrowsAsync(new AmazonSecretsManagerException("This should not be called"));

            SecretsManagerCache cache = new SecretsManagerCache(secretsManager.Object);

            byte[] first = null;
            for (int i = 0; i < 10; i++)
            {
                first = cache.GetSecretBinary(binaryResponse1.Name).Result;
            }
            Assert.Equal(first, binaryResponse1.SecretBinary.ToArray());
        }