public static void RejectDeletesTheMessageByReceiptHandleWithItsIAmazonSQS() { var mockSqs = new Mock <IAmazonSQS>(); SetupReceiveMessageAsync(mockSqs); SetupDeleteMessageAsync(mockSqs); using var waitHandle = new AutoResetEvent(false); using (var receiver = new SQSReceiver(mockSqs.Object, "foo", new Uri("http://url.com/foo"), autoAcknowledge: false)) { receiver.Start(async m => { await m.RejectAsync().ConfigureAwait(false); waitHandle.Set(); }); waitHandle.WaitOne(); } mockSqs.Verify(m => m.DeleteMessageAsync( It.Is <DeleteMessageRequest>(r => r.QueueUrl == "http://url.com/foo" && r.ReceiptHandle == "bar"), It.IsAny <CancellationToken>())); }
public static void WhenAutoAcknowledgeIsTrueMessagesAreNotDeletedIfExplicitlyHandled() { var mockSqs = new Mock <IAmazonSQS>(); SetupReceiveMessageAsync(mockSqs); SetupDeleteMessageAsync(mockSqs); using var waitHandle = new AutoResetEvent(false); using (var receiver = new SQSReceiver(mockSqs.Object, "foo", new Uri("http://url.com/foo"), autoAcknowledge: false)) { receiver.Start(async m => { await m.RollbackAsync().ConfigureAwait(false); waitHandle.Set(); }); waitHandle.WaitOne(); } mockSqs.Verify(m => m.DeleteMessageAsync( It.Is <DeleteMessageRequest>(r => r.QueueUrl == "http://url.com/foo" && r.ReceiptHandle == "bar"), It.IsAny <CancellationToken>()), Times.Never); }
public static void WhenTerminateMessageVisibilityTimeoutOnRollbackIsFalseRollbackDoesNotChangeMessageVisibilityByReceiptHandleWithItsIAmazonSQS() { var mockSqs = new Mock <IAmazonSQS>(); SetupReceiveMessageAsync(mockSqs); SetupChangeMessageVisibilityAsync(mockSqs); using var waitHandle = new AutoResetEvent(false); using (var receiver = new SQSReceiver(mockSqs.Object, "foo", new Uri("http://url.com/foo"), autoAcknowledge: false, terminateMessageVisibilityTimeoutOnRollback: false)) { receiver.Start(async m => { await m.RollbackAsync().ConfigureAwait(false); waitHandle.Set(); }); waitHandle.WaitOne(); } mockSqs.Verify(m => m.ChangeMessageVisibilityAsync( It.IsAny <ChangeMessageVisibilityRequest>(), It.IsAny <CancellationToken>()), Times.Never); }
public static void SQSReceiverReceivesMessagesFromItsIAmazonSQS() { var mockSqs = new Mock <IAmazonSQS>(); SetupReceiveMessageAsync(mockSqs); using var waitHandle = new AutoResetEvent(false); string?receivedMessage = null; string?quxHeader = null; using (var receiver = new SQSReceiver(mockSqs.Object, "foo", new Uri("http://url.com/foo"), autoAcknowledge: false)) { #pragma warning disable CS1998 // Async method lacks 'await' operators and will run synchronously receiver.Start(async m => #pragma warning restore CS1998 // Async method lacks 'await' operators and will run synchronously { receivedMessage = m.StringPayload; quxHeader = m.Headers.GetValue <string>("qux"); waitHandle.Set(); }); waitHandle.WaitOne(); } mockSqs.Verify(m => m.ReceiveMessageAsync( It.Is <ReceiveMessageRequest>(r => r.MaxNumberOfMessages == 3 && r.QueueUrl == "http://url.com/foo" && r.MessageAttributeNames.Count == 1 && r.MessageAttributeNames[0] == "*"), It.IsAny <CancellationToken>())); Assert.Equal("Hello, world!", receivedMessage); Assert.Equal("xyz", quxHeader); }
public void RollbackDoesNotDeleteTheMessageByReceiptHandleWithItsIAmazonSQS() { var mockSqs = new Mock <IAmazonSQS>(); SetupReceiveMessageAsync(mockSqs); SetupDeleteMessageAsync(mockSqs); var waitHandle = new AutoResetEvent(false); using (var receiver = new SQSReceiver(mockSqs.Object, "foo", "http://url.com/foo", autoAcknowledge: false)) { receiver.Start(m => { m.Rollback(); waitHandle.Set(); }); waitHandle.WaitOne(); } mockSqs.Verify(m => m.DeleteMessageAsync( It.IsAny <DeleteMessageRequest>(), It.IsAny <CancellationToken>()), Times.Never); }
public void SQSReceiverReceivesMessagesFromItsIAmazonSQS() { var mockSqs = new Mock <IAmazonSQS>(); SetupReceiveMessageAsync(mockSqs); var waitHandle = new AutoResetEvent(false); string receivedMessage = null; string quxHeader = null; using (var receiver = new SQSReceiver(mockSqs.Object, "foo", "http://url.com/foo", autoAcknowledge: false)) { receiver.Start(m => { receivedMessage = m.StringPayload; quxHeader = m.Headers.GetValue <string>("qux"); waitHandle.Set(); }); waitHandle.WaitOne(); } mockSqs.Verify(m => m.ReceiveMessageAsync( It.Is <ReceiveMessageRequest>(r => r.MaxNumberOfMessages == 3 && r.QueueUrl == "http://url.com/foo" && r.MessageAttributeNames.Count == 1 && r.MessageAttributeNames[0] == "*"), It.IsAny <CancellationToken>())); Assert.Equal("Hello, world!", receivedMessage); Assert.Equal("xyz", quxHeader); }
public void WhenAutoAcknowledgeIsTrueMessagesAreAutomaticallyDeleted() { var mockSqs = new Mock <IAmazonSQS>(); SetupReceiveMessageAsync(mockSqs); SetupDeleteMessageAsync(mockSqs); var waitHandle = new AutoResetEvent(false); using (var receiver = new SQSReceiver(mockSqs.Object, "foo", "http://url.com/foo", autoAcknowledge: true)) { receiver.Start(m => { waitHandle.Set(); }); waitHandle.WaitOne(); } mockSqs.Verify(m => m.DeleteMessageAsync( It.Is <DeleteMessageRequest>(r => r.QueueUrl == "http://url.com/foo" && r.ReceiptHandle == "bar"), It.IsAny <CancellationToken>())); }