Exemple #1
0
        public async Task GetTheValueFromCacheIfItsAlreadyThere()
        {
            var ssmClient = Substitute.For <IAmazonSimpleSystemsManagement>();

            ssmClient.GetParameterAsync(Arg.Is <GetParameterRequest>(r => r.Name == Param1Path)).Returns(
                Task.FromResult(new GetParameterResponse {
                Parameter = new Parameter {
                    Value = Param1Value
                }
            }));

            var context = new MiddyNetContext(Substitute.For <ILambdaContext>());

            var options = new SSMOptions
            {
                ParametersToGet = new List <SSMParameterToGet>
                {
                    new SSMParameterToGet(Param1Name, Param1Path)
                },
                CacheExpiryInMillis = 60 * 1000
            };

            var ssmMiddleware = new SSMMiddleware <int, int>(options, () => ssmClient, new SystemTimeProvider());
            await ssmMiddleware.Before(1, context);

            await ssmMiddleware.Before(1, context);

            await ssmClient.Received(1).GetParameterAsync(Arg.Is <GetParameterRequest>(r => r.Name == Param1Path));
        }
Exemple #2
0
        public async Task GetParametersAndSetToContextOnBeforeMethod()
        {
            var ssmClient = Substitute.For <IAmazonSimpleSystemsManagement>();

            ssmClient.GetParameterAsync(Arg.Is <GetParameterRequest>(r => r.Name == Param1Path)).Returns(
                Task.FromResult(new GetParameterResponse {
                Parameter = new Parameter {
                    Value = Param1Value
                }
            }));
            ssmClient.GetParameterAsync(Arg.Is <GetParameterRequest>(r => r.Name == Param2Path)).Returns(
                Task.FromResult(new GetParameterResponse {
                Parameter = new Parameter {
                    Value = Param2Value
                }
            }));

            var context = new MiddyNetContext(Substitute.For <ILambdaContext>());

            var options = new SSMOptions
            {
                ParametersToGet = new List <SSMParameterToGet>
                {
                    new SSMParameterToGet(Param1Name, Param1Path),
                    new SSMParameterToGet(Param2Name, Param2Path)
                }
            };

            var ssmMiddleware = new SSMMiddleware <int, int>(options, () => ssmClient, new SystemTimeProvider());
            await ssmMiddleware.Before(1, context);

            await ssmClient.Received().GetParameterAsync(Arg.Is <GetParameterRequest>(r => r.Name == Param1Path));

            await ssmClient.Received().GetParameterAsync(Arg.Is <GetParameterRequest>(r => r.Name == Param2Path));

            context.AdditionalContext.Should().Contain(Param1Name, Param1Value);
            context.AdditionalContext.Should().Contain(Param2Name, Param2Value);
        }
Exemple #3
0
        public async Task GetTheValueFromSSMIfItsCacheHasExpired()
        {
            var ssmClient = Substitute.For <IAmazonSimpleSystemsManagement>();

            ssmClient.GetParameterAsync(Arg.Is <GetParameterRequest>(r => r.Name == Param1Path)).Returns(
                Task.FromResult(new GetParameterResponse {
                Parameter = new Parameter {
                    Value = Param1Value
                }
            }));

            var now = System.DateTime.UtcNow;

            var timeProvider = Substitute.For <ITimeProvider>();

            var context = new MiddyNetContext(Substitute.For <ILambdaContext>());

            var options = new SSMOptions
            {
                ParametersToGet = new List <SSMParameterToGet>
                {
                    new SSMParameterToGet(Param1Name, Param1Path)
                },
                CacheExpiryInMillis = 60 * 1000
            };

            var ssmMiddleware = new SSMMiddleware <int, int>(options, () => ssmClient, timeProvider);

            timeProvider.UtcNow.Returns(now);
            await ssmMiddleware.Before(1, context);

            timeProvider.UtcNow.Returns(now.AddMilliseconds(70 * 1000));
            await ssmMiddleware.Before(1, context);

            await ssmClient.Received(2).GetParameterAsync(Arg.Is <GetParameterRequest>(r => r.Name == Param1Path));
        }