public void PeekMessages_RequestItem_DoesNotDequeueTheItem()
        {
            IQueueServiceClient client = new QueueServiceClient(_accountSettings);
            var queueName = GenerateSampleQueueName();
            _util.CreateQueue(queueName);
            _util.AddItemsToQueue(queueName, new List<string>() { "1" });

            var peekResponse = client.PeekMessages(queueName, 1);
            Assert.AreEqual(1, peekResponse.Messages.Count);

            var getResponse = client.GetMessages(queueName, 1);
            Assert.AreEqual(1, getResponse.Messages.Count);
        }
        public void GetMessages_RequestItemWithVisibility_ReturnsItemWithFutureVisibility()
        {
            IQueueServiceClient client = new QueueServiceClient(_accountSettings);
            var queueName = GenerateSampleQueueName();
            _util.CreateQueue(queueName);
            _util.AddItemsToQueue(queueName, new List<string>() { "1" });

            var response = client.GetMessages(queueName, 1, 30);

            Assert.AreEqual(1, response.Messages.Count);
            var message = response.Messages.Single();
            // Give some tolerance because the server's time might be slightly different
            var currentTime = DateTime.UtcNow;
            Assert.Less(message.InsertionTime.Subtract(currentTime).TotalMinutes, 1);
            Assert.Less(message.ExpirationTime.Subtract(currentTime).TotalDays, 8); // could be slightly larger than 7 depending on the server's time
            Assert.Less(message.TimeNextVisible.Subtract(currentTime).TotalMinutes, 2); // could be slightly larger than 1 depending on the server's time
        }
        public void GetMessages_RequestItemFromPopulatedQueue_ReturnsItemWithPopReceiptAndDequeueCount()
        {
            IQueueServiceClient client = new QueueServiceClient(_accountSettings);
            var queueName = GenerateSampleQueueName();
            _util.CreateQueue(queueName);
            _util.AddItemsToQueue(queueName, new List<string>() { "1" });

            var response = client.GetMessages(queueName, 1, 30);

            Assert.AreEqual(1, response.Messages.Count);
            var message = response.Messages.Single();
            Assert.IsNotNullOrEmpty(message.PopReceipt);
            Assert.Greater(message.DequeueCount, 0);
        }
        public void GetMessages_RequestUndefinedNumberOfItemsFromFullQueue_ReturnsOneItem()
        {
            IQueueServiceClient client = new QueueServiceClient(_accountSettings);
            var queueName = GenerateSampleQueueName();
            _util.CreateQueue(queueName);
            _util.AddItemsToQueue(queueName, Enumerable.Range(1, 40).Select(n => n.ToString()).ToList());
            var expectedMessage = "1";

            var response = client.GetMessages(queueName);

            Assert.AreEqual(1, response.Messages.Count);
            var message = response.Messages.Single();
            // Base 64 encode the expected message since Azure SDK did so when enqueueing it
            Assert.AreEqual(Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes(expectedMessage)), message.MessageText);
        }
        public void GetMessages_Request32ItemsFromFullQueue_Returns32Items()
        {
            IQueueServiceClient client = new QueueServiceClient(_accountSettings);
            var queueName = GenerateSampleQueueName();
            _util.CreateQueue(queueName);
            _util.AddItemsToQueue(queueName, Enumerable.Range(1, 40).Select(n => n.ToString()).ToList());

            var response = client.GetMessages(queueName, 32);

            Assert.AreEqual(32, response.Messages.Count);
            for (int i = 1; i <= 32; i++)
            {
                // Base 64 encode the expected message since Azure SDK did so when enqueueing it
                var expectedMessage = Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes(i.ToString()));
                Assert.IsTrue(response.Messages.Any(m => m.MessageText.Equals(expectedMessage)));
            }
        }
        public void GetMessages_NonExistentQueue_ThrowsQueueDoesNotExistException()
        {
            IQueueServiceClient client = new QueueServiceClient(_accountSettings);
            var queueName = GenerateSampleQueueName();

            var response = client.GetMessages(queueName, 32);

            // expects exception
        }
        public void GetMessages_EmptyQueue_ReturnsEmptyCollection()
        {
            IQueueServiceClient client = new QueueServiceClient(_accountSettings);
            var queueName = GenerateSampleQueueName();
            _util.CreateQueue(queueName);

            var response = client.GetMessages(queueName, 32);

            Assert.IsEmpty(response.Messages);
        }
        public void GetMessages_RequestItemWithVisibility_ReturnsItemWithFutureVisibility()
        {
            IQueueServiceClient client = new QueueServiceClient(_accountSettings);
            var queueName = GenerateSampleQueueName();
            CreateQueue(queueName);
            AddItemsToQueue(queueName, new List<string>() { "1" });

            var response = client.GetMessages(queueName, 1, 30);

            Assert.AreEqual(1, response.Messages.Count);
            var message = response.Messages.Single();
            Assert.Less(message.InsertionTime, DateTime.UtcNow);
            Assert.Greater(message.ExpirationTime, DateTime.UtcNow);
            Assert.Greater(message.TimeNextVisible, DateTime.UtcNow);
        }