public async Task UserSettledPropertySetCorrectly() { var msg = new ServiceBusReceivedMessage(); var args = new ProcessSessionMessageEventArgs( msg, new Mock <ServiceBusSessionReceiver>().Object, CancellationToken.None); Assert.IsFalse(msg.IsSettled); msg.IsSettled = false; await args.AbandonMessageAsync(msg); Assert.IsTrue(msg.IsSettled); await args.CompleteMessageAsync(msg); Assert.IsTrue(msg.IsSettled); msg.IsSettled = false; await args.DeadLetterMessageAsync(msg); Assert.IsTrue(msg.IsSettled); msg.IsSettled = false; await args.DeadLetterMessageAsync(msg, "reason"); Assert.IsTrue(msg.IsSettled); msg.IsSettled = false; await args.DeferMessageAsync(msg); Assert.IsTrue(msg.IsSettled); // getting or setting session state doesn't count as settling msg.IsSettled = false; await args.GetSessionStateAsync(); Assert.IsFalse(msg.IsSettled); msg.IsSettled = false; await args.SetSessionStateAsync(new byte[] { }); Assert.IsFalse(msg.IsSettled); }
///<inheritdoc cref="ServiceBusReceiver.AbandonMessageAsync(ServiceBusReceivedMessage, IDictionary{string, object}, CancellationToken)"/> public virtual async Task AbandonMessageAsync( ServiceBusReceivedMessage message, IDictionary <string, object> propertiesToModify = default, CancellationToken cancellationToken = default) { if (_receiver != null) { await _receiver.AbandonMessageAsync(message, propertiesToModify, cancellationToken).ConfigureAwait(false); } else if (_eventArgs != null) { await _eventArgs.AbandonMessageAsync(message, propertiesToModify, cancellationToken).ConfigureAwait(false); } else { await _sessionEventArgs.AbandonMessageAsync(message, propertiesToModify, cancellationToken).ConfigureAwait(false); } }
public void UserSettledPropertySetCorrectlyOnException() { var msg = new ServiceBusReceivedMessage(); var mockReceiver = new Mock <ServiceBusSessionReceiver>(); mockReceiver .Setup(receiver => receiver.AbandonMessageAsync( It.IsAny <ServiceBusReceivedMessage>(), It.IsAny <IDictionary <string, object> >(), It.IsAny <CancellationToken>())) .Throws(new Exception()); mockReceiver .Setup(receiver => receiver.DeferMessageAsync( It.IsAny <ServiceBusReceivedMessage>(), It.IsAny <IDictionary <string, object> >(), It.IsAny <CancellationToken>())) .Throws(new Exception()); mockReceiver .Setup(receiver => receiver.CompleteMessageAsync( It.IsAny <ServiceBusReceivedMessage>(), It.IsAny <CancellationToken>())) .Throws(new Exception()); mockReceiver .Setup(receiver => receiver.DeadLetterMessageAsync( It.IsAny <ServiceBusReceivedMessage>(), It.IsAny <IDictionary <string, object> >(), It.IsAny <CancellationToken>())) .Throws(new Exception()); mockReceiver .Setup(receiver => receiver.DeadLetterMessageAsync( It.IsAny <ServiceBusReceivedMessage>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <CancellationToken>())) .Throws(new Exception()); var args = new ProcessSessionMessageEventArgs( msg, mockReceiver.Object, CancellationToken.None); Assert.IsFalse(msg.IsSettled); msg.IsSettled = false; Assert.That(async() => await args.AbandonMessageAsync(msg), Throws.InstanceOf <Exception>()); Assert.IsFalse(msg.IsSettled); Assert.That(async() => await args.CompleteMessageAsync(msg), Throws.InstanceOf <Exception>()); Assert.IsFalse(msg.IsSettled); msg.IsSettled = false; Assert.That(async() => await args.DeadLetterMessageAsync(msg), Throws.InstanceOf <Exception>()); Assert.IsFalse(msg.IsSettled); msg.IsSettled = false; Assert.That(async() => await args.DeadLetterMessageAsync(msg, "reason"), Throws.InstanceOf <Exception>()); Assert.IsFalse(msg.IsSettled); msg.IsSettled = false; Assert.That(async() => await args.DeferMessageAsync(msg), Throws.InstanceOf <Exception>()); Assert.IsFalse(msg.IsSettled); }