예제 #1
0
        public async Task ShouldSend()
        {
            //Arrange
            var amazonSqsMock     = new Mock <IAmazonSQS>();
            var configurationMock = new Mock <IConfiguration>();

            var messageQueueOptions = new MessageQueueOptions();

            amazonSqsMock.Setup(x => x.SendMessageAsync(It.IsAny <SendMessageRequest>(), CancellationToken.None))
            .ReturnsAsync(new SendMessageResponse())
            .Verifiable();
            configurationMock.SetupGet(x => x[It.IsAny <string>()]).Returns(string.Empty);

            var queue = new MessageQueueSqs(amazonSqsMock.Object, messageQueueOptions, new MessageQueueInfo(messageQueueOptions, configurationMock.Object));
            var msg   = new TestMessage()
            {
                Id = Guid.NewGuid().ToString()
            };

            //Act
            await queue.Send(msg);

            //Assert
            amazonSqsMock.VerifyAll();
        }
예제 #2
0
        public async Task ShouldReceiveWithCancellationToken()
        {
            //Arrange
            const int delay             = 1;
            var       cancellationToken = new CancellationTokenSource(TimeSpan.FromSeconds(delay)).Token;
            var       amazonSqsMock     = new Mock <IAmazonSQS>();
            var       configurationMock = new Mock <IConfiguration>();

            var messageQueueOptions = new MessageQueueOptions();
            var msg = new TestMessage()
            {
                Id = Guid.NewGuid().ToString()
            };

            amazonSqsMock.Setup(x => x.ReceiveMessageAsync(It.IsAny <ReceiveMessageRequest>(), cancellationToken))
            .ReturnsAsync(new ReceiveMessageResponse()
            {
                Messages = new List <Message>()
                {
                    new Message()
                    {
                        Body          = JsonConvert.SerializeObject(msg),
                        ReceiptHandle = Guid.NewGuid().ToString()
                    }
                }
            })
            .Verifiable();
            configurationMock.SetupGet(x => x[It.IsAny <string>()]).Returns(string.Empty);

            var queue = new MessageQueueSqs(amazonSqsMock.Object, messageQueueOptions, new MessageQueueInfo(messageQueueOptions, configurationMock.Object));

            //Act
            var qtd = 0;

            await foreach (var message in queue.Receive <TestMessage>(cancellationToken))
            {
                qtd++;
            }

            //Assert
            amazonSqsMock.VerifyAll();
            Assert.True(qtd > 0);
        }
예제 #3
0
        public async Task WhenReceiveShouldValidateMaxNumberOfMessages(int maxNumberOfMessages)
        {
            //Arrange
            var amazonSqsMock     = new Mock <IAmazonSQS>();
            var configurationMock = new Mock <IConfiguration>();

            var messageQueueOptions = new MessageQueueOptions();
            var msg = new TestMessage()
            {
                Id = Guid.NewGuid().ToString()
            };

            amazonSqsMock.Setup(x => x.ReceiveMessageAsync(It.IsAny <ReceiveMessageRequest>(), CancellationToken.None))
            .ReturnsAsync(new ReceiveMessageResponse()
            {
                Messages = new List <Message>()
                {
                    new Message()
                    {
                        Body          = JsonConvert.SerializeObject(msg),
                        ReceiptHandle = Guid.NewGuid().ToString()
                    }
                }
            })
            .Verifiable();
            configurationMock.SetupGet(x => x[It.IsAny <string>()]).Returns(string.Empty);

            var queue = new MessageQueueSqs(amazonSqsMock.Object, messageQueueOptions, new MessageQueueInfo(messageQueueOptions, configurationMock.Object));

            //Act
            async Task act() => await queue.Receive <TestMessage>(maxNumberOfMessages)
            .GetAsyncEnumerator()
            .MoveNextAsync();

            //Assert
            await Assert.ThrowsAsync <ArgumentException>(act);
        }