Example #1
0
        public async Task Mock_ShouldListQueues_WhenClientAvailable()
        {
            var client = new SQSClientMock("mockEndpoint", "mockRegion");
            var queues = await client.ListQueuesAsync();

            Assert.NotNull(queues);
        }
Example #2
0
        public async Task MockStartMessageReceiver_ShouldRetrieveMessageWithSyncProcessor_WhenQueueAndMessageExists()
        {
            var client = new SQSClientMock("mockEndpoint", "mockRegion");
            await client.CreateStandardFifoQueueAsync(FifoQueueName);

            await client.SendMessageAsync("Hello World!", FifoQueueName);

            var cancellationTokenSource = new CancellationTokenSource();
            var cancellationToken       = cancellationTokenSource.Token;


            client.StartMessageReceiver(FifoQueueName, new MessageReceiverOptions(),
                                        message =>
            {
                Assert.Equal("Hello World!", message);
                _messagePicked = true;
                return(true);
            }, cancellationToken);

            await client.AwaitMessageProcessedAttempt(FifoQueueName);

            cancellationTokenSource.Cancel();
            Assert.True(_messagePicked);
            _messagePicked = false;
        }
Example #3
0
        public async Task MockCreateStandardFifoQueueAsync_ShouldReturnQueueUrl_WhenCreatingFifoQueue()
        {
            var client   = new SQSClientMock("mockEndpoint", "mockRegion");
            var queueUrl = await client.CreateStandardFifoQueueAsync("test.fifo");

            Assert.Equal("https://mockRegion/queue/test.fifo", queueUrl);
        }
Example #4
0
        public async Task MockSendMessageBatchAsync_ShouldPutAMessageOnTheQueue_WhenQueueExists()
        {
            var client = new SQSClientMock("mockEndpoint", "mockRegion");
            await client.CreateStandardFifoQueueAsync(FifoQueueName);

            var batch = new List <BatchMessageRequest>
            {
                new BatchMessageRequest("testMessage1"),
                new BatchMessageRequest("testMessage2", new Dictionary <string, string>
                {
                    { "key2", "value2" }
                })
            }.ToArray();

            var response = await client.SendMessageBatchAsync(batch, FifoQueueName);

            Assert.Empty(response.GetFailed());
            Assert.Equal(2, response.GetSuccessful().Length);
            Assert.True(response.Success);

            Assert.True(response.SendResults[0].Success);
            Assert.Equal("testMessage1", response.SendResults[0].MessageRequest.Message);
            Assert.Null(response.SendResults[0].Error);

            Assert.True(response.SendResults[1].Success);
            Assert.Equal("testMessage2", response.SendResults[1].MessageRequest.Message);
            Assert.Equal("value2", response.SendResults[1].MessageRequest.MessageAttributes["key2"]);
            Assert.Null(response.SendResults[1].Error);
        }
Example #5
0
        public async Task MockPollQueueWithRetryAsync_ShouldThrowQueueDoesNotExistException_WhenQueueDoesNotExist()
        {
            var client = new SQSClientMock("mockEndpoint", "mockRegion");

            await Assert.ThrowsAsync <QueueDoesNotExistException>(() =>
                                                                  client.PollQueueWithRetryAsync("mockQueue.fifo", 1, 1, 3, 1, 1, message => true));
        }
Example #6
0
        public async Task AwaitMessageProcessedAttempt_ShouldAwaitMessageProcessingBeforeReturning()
        {
            var client = new SQSClientMock("mockEndpoint", "mockRegion");
            await client.CreateStandardFifoQueueAsync(FifoQueueName);

            var batch = new List <BatchMessageRequest>
            {
                new BatchMessageRequest("Hello World!")
            }.ToArray();

            var response = await client.SendMessageBatchAsync(batch, FifoQueueName);

            var receivedTask = client.AwaitMessageProcessedAttempt(FifoQueueName);

            client.StartMessageReceiver(FifoQueueName, new MessageReceiverOptions(),
                                        message =>
            {
                Assert.Equal("Hello World!", message);
                return(true);
            }, new CancellationToken());

            await receivedTask;

            var messages = client.GetMessages(FifoQueueName);

            Assert.Empty(messages);
        }
Example #7
0
        public async Task AwaitMessageProcessedAttempt_ShouldWaitUntilMessageProcessorHasBeenCalled_WhenMessageProcessorFails()
        {
            var client = new SQSClientMock("mockEndpoint", "mockRegion");
            await client.CreateStandardFifoQueueAsync(FifoQueueName);

            var cancellationTokenSource = new CancellationTokenSource();
            var cancellationToken       = cancellationTokenSource.Token;

            client.StartMessageReceiver(FifoQueueName, new MessageReceiverOptions(),
                                        async(message) =>
            {
                await Task.Delay(1000);
                return(false);
            }, cancellationToken);

            await client.SendMessageAsync("Hello World!", FifoQueueName);

            var stopwatch = new Stopwatch();

            stopwatch.Start();
            await client.AwaitMessageProcessedAttempt(FifoQueueName);

            stopwatch.Stop();

            Assert.True(stopwatch.ElapsedMilliseconds > 900);
        }
Example #8
0
        public async Task MockQueue_ShouldNotRemoveMessageFromQueue_IfFalseIsReturned()
        {
            var client = new SQSClientMock("mockEndpoint", "mockRegion");
            await client.CreateStandardFifoQueueAsync(FifoQueueName);

            await client.SendMessageAsync("Hello World!", FifoQueueName);

            var cancellationTokenSource = new CancellationTokenSource();
            var cancellationToken       = cancellationTokenSource.Token;

            client.StartMessageReceiver(FifoQueueName, new MessageReceiverOptions(),
                                        async(message) =>
            {
                Assert.Single(client.GetMessages(FifoQueueName));
                Assert.True(client.GetMessages(FifoQueueName).First().IsLocked);
                Assert.Equal("Hello World!", message);
                _messagePicked = true;
                return(await Task.FromResult(false));
            }, cancellationToken);

            await client.AwaitMessageProcessedAttempt(FifoQueueName);

            cancellationTokenSource.Cancel();
            Assert.True(_messagePicked);
            Assert.Single(client.GetMessages(FifoQueueName));
            Assert.False(client.GetMessages(FifoQueueName).First().IsLocked);
            _messagePicked = false;
        }
Example #9
0
        public async Task MockSendMessageAsync_ShouldPutAMessageOnTheQueue_WhenQueueExists()
        {
            var client = new SQSClientMock("mockEndpoint", "mockRegion");
            await client.CreateStandardFifoQueueAsync("mockQueue.fifo");

            var messageId = await client.SendMessageAsync("Hello World!", "mockQueue.fifo");

            Assert.NotNull(messageId);
        }
Example #10
0
        public void MockStartMessageReceiver_ShouldThrowQueueDoesNotExistException_WhenQueueDoesNotExist()
        {
            var client = new SQSClientMock("mockEndpoint", "mockRegion");

            var cancellationTokenSource = new CancellationTokenSource();
            var cancellationToken       = cancellationTokenSource.Token;

            Assert.ThrowsAsync <QueueDoesNotExistException>(() =>
                                                            client.StartMessageReceiver(FifoQueueName, new MessageReceiverOptions(),
                                                                                        message => true, cancellationToken));
        }
Example #11
0
        public async Task GetNumberOfMessagesOnQueue_ShouldReturnNumberOfMessagesOnQueue_WhenMessageExists()
        {
            var client = new SQSClientMock("mockEndpoint", "mockRegion");
            await client.CreateStandardFifoQueueAsync(FifoQueueName);

            await client.SendMessageAsync("Foo", FifoQueueName);

            var actual = await client.GetNumberOfMessagesOnQueue(FifoQueueName);

            Assert.Equal(FifoQueueName, actual.QueueName);
            Assert.Equal(1, actual.ApproximateNumberOfMessages);
        }
Example #12
0
        public async Task MockGetMessagesOnQueue_ShouldContainSentMessage_WhenQueueExists()
        {
            var queueName       = "mockQueue.fifo";
            var messageContents = "Hello World!";
            var client          = new SQSClientMock("mockEndpoint", "mockRegion");
            await client.CreateStandardFifoQueueAsync(queueName);

            await client.SendMessageAsync(messageContents, queueName);

            var actual = client.GetMessages(queueName);

            Assert.Equal(1, actual.Count);
            Assert.Equal(messageContents, actual.First());
        }
Example #13
0
        public async Task MockDeleteQueue_ShouldDeleteQueue_IfQueueExists()
        {
            var client = new SQSClientMock("mockEndpoint", "mockRegion");
            await client.CreateStandardFifoQueueAsync("mockQueue.fifo");

            var queuesOnClientBeforeDeletion = await client.ListQueuesAsync();

            await client.DeleteQueueAsync("mockQueue.fifo");

            var queuesOnClientAfterDeletion = await client.ListQueuesAsync();

            Assert.Equal(1, queuesOnClientBeforeDeletion.Count);
            Assert.Equal(0, queuesOnClientAfterDeletion.Count);
        }
Example #14
0
        public async Task MockDeleteQueue_ShouldDeleteQueue_IfQueueExists()
        {
            var client = new SQSClientMock("mockEndpoint", "mockRegion");
            await client.CreateStandardFifoQueueAsync(FifoQueueName);

            var queuesOnClientBeforeDeletion = await client.ListQueuesAsync();

            await client.DeleteQueueAsync(FifoQueueName);

            var queuesOnClientAfterDeletion = await client.ListQueuesAsync();

            Assert.Single(queuesOnClientBeforeDeletion);
            Assert.Empty(queuesOnClientAfterDeletion);
        }
Example #15
0
        public async Task SQSMessage_ShouldNotRemoveMessageFromQueue_WhenNotAcked()
        {
            var client = new SQSClientMock("mockEndpoint", "mockRegion");
            await client.CreateStandardFifoQueueAsync(FifoQueueName);

            var cancellationTokenSource = new CancellationTokenSource();
            var cancellationToken       = cancellationTokenSource.Token;

            client.StartMessageReceiver(FifoQueueName, new MessageReceiverOptions(),
                                        async(ISQSMessage message) => { Assert.Equal("Bar", message.Body); }, cancellationToken);

            await client.SendMessageAsync("Bar", FifoQueueName);

            await client.AwaitMessageProcessedAttempt(FifoQueueName);

            cancellationTokenSource.Cancel();
            Assert.Single(client.GetMessages(FifoQueueName));
        }
Example #16
0
        public async Task MockPollQueueAsync_ShouldRetrieveMessageWithAsyncProcessor_WhenQueueAndMessageExists()
        {
            var client = new SQSClientMock("mockEndpoint", "mockRegion");
            await client.CreateStandardFifoQueueAsync("mockQueue.fifo");

            await client.SendMessageAsync("Hello World!", "mockQueue.fifo");

            var cancellationToken = client.PollQueueAsync("mockQueue.fifo", 1, 1, async(message) =>
            {
                Assert.Equal("Hello World!", message);
                _messagePicked = true;
                return(await Task.FromResult(true));
            });

            Task.Delay(1000).Wait();
            cancellationToken.Cancel();
            Assert.True(_messagePicked);
            _messagePicked = false;
        }
Example #17
0
        public async Task MockSendMessageAsync_ShouldThrowQueueDoesNotExistException_WhenQueueDoesNotExist()
        {
            var client = new SQSClientMock("mockEndpoint", "mockRegion");

            await Assert.ThrowsAsync <QueueDoesNotExistException>(() => client.SendMessageAsync("test", "test"));
        }
Example #18
0
        public async Task MockCreateStandardFifoQueueAsync_ShouldThrowArgumentException_WhenQueueNameDoesNotEndWithFifo()
        {
            var client = new SQSClientMock("mockEndpoint", "mockRegion");

            await Assert.ThrowsAsync <ArgumentException>(() => client.CreateStandardFifoQueueAsync("test"));
        }