示例#1
0
        public void AddKey()
        {
            var prefix  = "/" + BasePrefix + "/";
            var keyText = "<key id=\"foo\"></key>";

            _mockSSM.Setup(client => client.PutParameterAsync(It.IsAny <PutParameterRequest>(), It.IsAny <CancellationToken>()))
            .Callback <PutParameterRequest, CancellationToken>((request, token) =>
            {
                Assert.NotNull(request.Name);
                Assert.Equal(prefix + "bar", request.Name);

                Assert.NotNull(request.Description);

                Assert.NotNull(request.Value);
                XElement parsed = XElement.Parse(request.Value);
                Assert.NotNull(parsed);

                Assert.Null(request.KeyId);
            })
            .Returns((PutParameterRequest r, CancellationToken token) =>
            {
                return(Task.FromResult(new PutParameterResponse()));
            });

            var repository = new SSMXmlRepository(_mockSSM.Object, prefix, null, null);

            XElement key = XElement.Parse(keyText);

            repository.StoreElement(key, "bar");
        }
        public void StorageModeAdvancedUpgradableTooLarge()
        {
            var keyText = GenerateKeyOfLength(8192 + 1);

            _mockSSM.Setup(client => client.PutParameterAsync(It.IsAny <PutParameterRequest>(), It.IsAny <CancellationToken>()))
            .Callback <PutParameterRequest, CancellationToken>((request, token) =>
            {
            })
            .Returns((PutParameterRequest r, CancellationToken token) => Task.FromResult(new PutParameterResponse()));

            var repository = new SSMXmlRepository(_mockSSM.Object, BasePrefix, new PersistOptions
            {
                TierStorageMode = TierStorageMode.AdvancedUpgradeable
            }, null);

            XElement key          = XElement.Parse(keyText);
            var      ex           = Assert.Throws <AggregateException>(() => repository.StoreElement(key, null));
            var      ssmException = ex.InnerExceptions.SingleOrDefault(x => x.GetType() == typeof(SSMParameterToLongException));

            Assert.NotNull(ssmException);
        }
        public void StorageModeAdvancedUpgradeableMaxSize()
        {
            var keyText = GenerateKeyOfLength(8192);

            _mockSSM.Setup(client => client.PutParameterAsync(It.IsAny <PutParameterRequest>(), It.IsAny <CancellationToken>()))
            .Callback <PutParameterRequest, CancellationToken>((request, token) =>
            {
                Assert.Equal(keyText, request.Value);
                Assert.Equal(ParameterTier.Advanced, request.Tier);
            })
            .Returns((PutParameterRequest r, CancellationToken token) => Task.FromResult(new PutParameterResponse()));

            var repository = new SSMXmlRepository(_mockSSM.Object, BasePrefix, new PersistOptions
            {
                TierStorageMode = TierStorageMode.AdvancedUpgradeable
            }, null);

            XElement key = XElement.Parse(keyText);

            repository.StoreElement(key, null);
        }
示例#4
0
        public void GetKeys()
        {
            var prefix = "/" + BasePrefix + "/";

            _mockSSM.Setup(client => client.GetParametersByPathAsync(It.IsAny <GetParametersByPathRequest>(), It.IsAny <CancellationToken>()))
            .Callback <GetParametersByPathRequest, CancellationToken>((request, token) =>
            {
                Assert.NotNull(request.Path);
                Assert.Equal(prefix, request.Path);

                Assert.True(request.WithDecryption);
            })
            .Returns((GetParametersByPathRequest r, CancellationToken token) =>
            {
                var response = new GetParametersByPathResponse();
                response.Parameters.Add(new Parameter
                {
                    Name  = prefix + "foo",
                    Type  = ParameterType.SecureString,
                    Value = "<key id=\"foo\"></key>"
                });
                response.Parameters.Add(new Parameter
                {
                    Name  = prefix + "bar",
                    Type  = ParameterType.SecureString,
                    Value = "<key id=\"bar\"></key>"
                });
                return(Task.FromResult(response));
            });

            var repository = new SSMXmlRepository(_mockSSM.Object, prefix, null, null);

            var elements = repository.GetAllElements();

            Assert.Equal(2, elements.Count);
            foreach (var key in elements)
            {
                Assert.NotNull(key);
            }
        }
示例#5
0
        public void EnsureValidKeysComebackEvenWhenOneIsInvalid()
        {
            var prefix = "/" + BasePrefix + "/";

            _mockSSM.Setup(client => client.GetParametersByPathAsync(It.IsAny <GetParametersByPathRequest>(), It.IsAny <CancellationToken>()))
            .Callback <GetParametersByPathRequest, CancellationToken>((request, token) =>
            {
                Assert.NotNull(request.Path);
                Assert.Equal(prefix, request.Path);

                Assert.True(request.WithDecryption);
            })
            .Returns((GetParametersByPathRequest r, CancellationToken token) =>
            {
                var response = new GetParametersByPathResponse();
                response.Parameters.Add(new Parameter
                {
                    Name  = prefix + "foo",
                    Type  = ParameterType.SecureString,
                    Value = "<key id=\"foo\"></key>"
                });
                response.Parameters.Add(new Parameter
                {
                    Name  = prefix + "bar",
                    Type  = ParameterType.SecureString,
                    Value = "<key id=\"bar\"></missing-endtag>"
                });
                return(Task.FromResult(response));
            });

            var repository = new SSMXmlRepository(_mockSSM.Object, prefix, null, null);

            var elements = repository.GetAllElements();

            Assert.Equal(1, elements.Count);
            Assert.NotNull(elements.FirstOrDefault(x => string.Equals(x.Attribute("id").Value, "foo")));
        }
示例#6
0
        public void ParameterUsesGuid()
        {
            var prefix  = "MockKeyHome";
            var keyText = "<key></key>";

            _mockSSM.Setup(client => client.PutParameterAsync(It.IsAny <PutParameterRequest>(), It.IsAny <CancellationToken>()))
            .Callback <PutParameterRequest, CancellationToken>((request, token) =>
            {
                Assert.NotNull(request.Name);
                var guidStr = request.Name.Substring(request.Name.LastIndexOf('/') + 1);

                Assert.True(Guid.TryParse(guidStr, out _));
            })
            .Returns((PutParameterRequest r, CancellationToken token) =>
            {
                return(Task.FromResult(new PutParameterResponse()));
            });

            var repository = new SSMXmlRepository(_mockSSM.Object, prefix, null, null);

            XElement key = XElement.Parse(keyText);

            repository.StoreElement(key, null);
        }