public void Should_raise_queue_does_not_exists_for_delayed_delivery_for_isolated_dispatch() { var settings = new SettingsHolder(); var transportExtensions = new TransportExtensions <SqsTransport>(settings); transportExtensions.UnrestrictedDurationDelayedDelivery(); var mockSqsClient = new MockSqsClient(); mockSqsClient.RequestResponse = req => throw new QueueDoesNotExistException("Queue does not exist"); var dispatcher = new MessageDispatcher(new TransportConfiguration(settings), null, mockSqsClient, new QueueUrlCache(mockSqsClient)); var transportOperations = new TransportOperations( new TransportOperation( new OutgoingMessage(Guid.NewGuid().ToString(), new Dictionary <string, string>(), Encoding.Default.GetBytes("{}")), new UnicastAddressTag("address1"), DispatchConsistency.Isolated, new List <DeliveryConstraint> { new DelayDeliveryWith(TimeSpan.FromMinutes(30)) })); var transportTransaction = new TransportTransaction(); var context = new ContextBag(); var exception = Assert.ThrowsAsync <QueueDoesNotExistException>(async() => await dispatcher.Dispatch(transportOperations, transportTransaction, context)); StringAssert.StartsWith("Destination 'address1' doesn't support delayed messages longer than", exception.Message); }
public async Task Includes_message_id_in_message_attributes(List <DeliveryConstraint> constraints) { var settings = new SettingsHolder(); var transportExtensions = new TransportExtensions <SqsTransport>(settings); transportExtensions.UnrestrictedDurationDelayedDelivery(); var mockSqsClient = new MockSqsClient(); var dispatcher = new MessageDispatcher(new TransportConfiguration(settings), null, mockSqsClient, new QueueUrlCache(mockSqsClient)); var expectedId = "1234"; var transportOperations = new TransportOperations( new TransportOperation( new OutgoingMessage(expectedId, new Dictionary <string, string>(), Encoding.Default.GetBytes("{}")), new UnicastAddressTag("address"), DispatchConsistency.Isolated, constraints)); var transportTransaction = new TransportTransaction(); var context = new ContextBag(); await dispatcher.Dispatch(transportOperations, transportTransaction, context); var sentMessage = mockSqsClient.RequestsSent.First(); Assert.AreEqual(expectedId, sentMessage.MessageAttributes[Headers.MessageId].StringValue); }