public async Task ShouldPublishMessagesWithIdsToSQS( SNSEvent snsEvent, SNSEvent.SNSRecord record1, SNSEvent.SNSRecord record2, Request request1, Request request2, [Frozen] IAmazonSQS sqs, [Frozen] ISnsRecordMapper mapper, [Target] Handler handler, CancellationToken cancellationToken ) { snsEvent.Records = new List <SNSEvent.SNSRecord> { record1, record2 }; mapper.MapToRequest(Is(record1)).Returns(request1); mapper.MapToRequest(Is(record2)).Returns(request2); await handler.Handle(snsEvent, cancellationToken); await sqs.Received().SendMessageBatchAsync(Any <SendMessageBatchRequest>(), Is(cancellationToken)); var request = TestUtils.GetArg <SendMessageBatchRequest>(sqs, nameof(IAmazonSQS.SendMessageBatchAsync), 0); request.Entries.Should().Contain(entry => entry.Id == request1.Id.ToString()); request.Entries.Should().Contain(entry => entry.Id == request2.Id.ToString()); }
public async Task <bool> Handle(SNSEvent @event, CancellationToken cancellationToken = default) { cancellationToken.ThrowIfCancellationRequested(); var entries = from record in @event.Records let mappedRequest = mapper.MapToRequest(record) let message = serializer.Serialize(mappedRequest) select new SendMessageBatchRequestEntry { Id = mappedRequest.Id.ToString(), MessageBody = message, }; var request = new SendMessageBatchRequest { QueueUrl = options.QueueUrl.ToString(), Entries = entries.ToList(), }; logger.LogInformation("Sending sqs:SendMessageBatch with request: {@request}", request); var response = await sqs.SendMessageBatchAsync(request, cancellationToken); logger.LogInformation("Received sqs:SendMessageBatch response: {@response}", response); return(true); }