public async Task ProcessMailMessageMessageIsParsed() { A.CallTo(() => _lambdaAggregateReportParseConfig.MaxS3ObjectSizeKilobytes).Returns(2); A.CallTo(() => _emailMessageClient.GetEmailMessages(A <string> ._, A <S3Event> ._)).Returns(Task.FromResult(new[] { new EmailMessageInfo(new EmailMetadata("uri", "filename", 1), Stream.Null) })); ILambdaContext lambdaContext = A.Fake <ILambdaContext>(); S3Event s3Event = new S3Event(); await _s3EmailMessageProcessor.ProcessEmailMessage(lambdaContext, s3Event); A.CallTo(() => _log.Warn(A <string> ._)).MustNotHaveHappened(); A.CallTo(() => _aggegateReportParser.Parse(A <EmailMessageInfo> ._)).MustHaveHappened(Repeated.Exactly.Once); }
public async Task ProcessMailMessageMessageIsProcessed() { A.CallTo(() => _lambdaReportParseConfig.MaxS3ObjectSizeKilobytes).Returns(2); A.CallTo(() => _emailMessageClient.GetEmailMessages(A <string> ._, A <string> ._, A <S3Event> ._)).Returns(Task.FromResult(new[] { new EmailMessageInfo(new EmailMetadata("uri", "filename", 1), Stream.Null) })); A.CallTo(() => _emailMessageInfoProcessor.ProcessEmailMessage(A <EmailMessageInfo> ._)) .Returns(new Result <Domain>(new Domain(), true, false)); ILambdaContext lambdaContext = A.Fake <ILambdaContext>(); S3Event s3Event = new S3Event(); bool result = await _s3EmailMessageProcessor.ProcessEmailMessage(string.Empty, lambdaContext, s3Event); Assert.That(result, Is.True); A.CallTo(() => _log.Warn(A <string> ._)).MustNotHaveHappened(); A.CallTo(() => _emailMessageInfoProcessor.ProcessEmailMessage(A <EmailMessageInfo> ._)).MustHaveHappened(Repeated.Exactly.Once); }
public async Task ProcessEmailMessage(ILambdaContext context, S3Event s3Event) { List <EmailMessageInfo> emailMessageInfos = (await _s3EmailMessageClient.GetEmailMessages(context.AwsRequestId, s3Event)).ToList(); List <EmailMessageInfo> emailMessageInfosOverThreshold = emailMessageInfos.Where(_ => _.EmailMetadata.FileSizeKb > _config.MaxS3ObjectSizeKilobytes).ToList(); emailMessageInfosOverThreshold.ForEach(_ => _log.Warn($"Didn't process message as it's size ({_.EmailMetadata.FileSizeKb} Kb) exceeded max email message size {_config.MaxS3ObjectSizeKilobytes} Kb")); List <EmailMessageInfo> emailMessages = emailMessageInfos.Where(_ => _.EmailMetadata.FileSizeKb <= _config.MaxS3ObjectSizeKilobytes).ToList(); await Task.WhenAll(emailMessages.Select(_aggregateReportParser.Parse)); }
public async Task <bool> ProcessEmailMessage(string messageId, ILambdaContext context, S3Event s3Event) { EmailMessageInfo[] emailMessageInfos = await _s3EmailMessageClient.GetEmailMessages(context.AwsRequestId, messageId, s3Event); if (emailMessageInfos.Any(_ => _.EmailMetadata.FileSizeKb > _config.MaxS3ObjectSizeKilobytes)) { _log.Warn($"Didn't process messages as MaxS3ObjectSizeKilobytes of {_config.MaxS3ObjectSizeKilobytes} Kb was exceeded"); return(false); } List <Result <TDomain> > results = new List <Result <TDomain> >(); foreach (EmailMessageInfo emailMessageInfo in emailMessageInfos) { results.Add(await _emailMessageInfoProcessor.ProcessEmailMessage(emailMessageInfo)); } return(results.Any() && results.All(_ => _.Success)); }