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); }
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); } }
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"))); }
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); }