示例#1
0
        public void CreateMessage_GetSystemProperties_Succeeds()
        {
            // Arrange
            Order order = OrderGenerator.Generate();
            ServiceBusReceivedMessage message = order.AsServiceBusReceivedMessage();

            // Act
            AzureServiceBusSystemProperties systemProperties = message.GetSystemProperties();

            // Assert
            Assert.NotNull(systemProperties);
        }
示例#2
0
        public void CreateProperties_FromMessage_AssignsIsReceivedCorrectly()
        {
            // Arrange
            long expected = BogusGenerator.Random.Long(min: 0);

            AmqpAnnotatedMessage amqpMessage = CreateAmqpMessage();

            amqpMessage.MessageAnnotations["x-opt-enqueue-sequence-number"] = expected;
            ServiceBusReceivedMessage message = CreateServiceBusReceivedMessage(amqpMessage);

            // Act
            var systemProperties = AzureServiceBusSystemProperties.CreateFrom(message);

            // Assert
            Assert.True(systemProperties.IsReceived);
        }
示例#3
0
        public void CreateProperties_FromMessage_AssignsContentTypeCorrectly()
        {
            // Arrange
            string expected = BogusGenerator.Random.String();

            AmqpAnnotatedMessage amqpMessage = CreateAmqpMessage();

            amqpMessage.Properties.ContentType = expected;
            ServiceBusReceivedMessage message = CreateServiceBusReceivedMessage(amqpMessage);

            // Act
            var systemProperties = AzureServiceBusSystemProperties.CreateFrom(message);

            // Assert
            Assert.Equal(expected, systemProperties.ContentType);
        }
示例#4
0
        public void CreateProperties_FromMessage_AssignsDeadLetterSourceCorrectly()
        {
            // Arrange
            string expected = BogusGenerator.Random.String();

            AmqpAnnotatedMessage amqpMessage = CreateAmqpMessage();

            amqpMessage.MessageAnnotations["x-opt-deadletter-source"] = expected;
            ServiceBusReceivedMessage message = CreateServiceBusReceivedMessage(amqpMessage);

            // Act
            var systemProperties = AzureServiceBusSystemProperties.CreateFrom(message);

            // Assert
            Assert.Equal(expected, systemProperties.DeadLetterSource);
        }
示例#5
0
        public void CreateProperties_FromMessage_AssignsDeliveryCountCorrectly()
        {
            // Arrange
            uint expected = BogusGenerator.Random.UInt();

            AmqpAnnotatedMessage amqpMessage = CreateAmqpMessage();

            amqpMessage.Header.DeliveryCount = expected;
            ServiceBusReceivedMessage message = CreateServiceBusReceivedMessage(amqpMessage);

            // Act
            var systemProperties = AzureServiceBusSystemProperties.CreateFrom(message);

            // Assert
            Assert.Equal((int)expected, systemProperties.DeliveryCount);
        }
示例#6
0
        public void CreateProperties_FromMessage_AssignsLockedUntilCorrectly()
        {
            // Arrange
            DateTime expected = BogusGenerator.Date.Past();

            AmqpAnnotatedMessage amqpMessage = CreateAmqpMessage();

            amqpMessage.MessageAnnotations["x-opt-locked-until"] = expected;
            ServiceBusReceivedMessage message = CreateServiceBusReceivedMessage(amqpMessage);

            // Act
            var systemProperties = AzureServiceBusSystemProperties.CreateFrom(message);

            // Assert
            Assert.Equal(expected, systemProperties.LockedUntil);
        }
示例#7
0
        public void CreateProperties_FromMessage_AssignsLockTokenCorrectly(string lockToken)
        {
            // Arrange
            Guid.TryParse(lockToken, out Guid expected);
            AmqpAnnotatedMessage      amqpMessage = CreateAmqpMessage();
            ServiceBusReceivedMessage message     = CreateServiceBusReceivedMessage(amqpMessage);

            SetLockToken(message, expected);

            // Act
            var systemProperties = AzureServiceBusSystemProperties.CreateFrom(message);

            // Assert
            Assert.Equal(expected, Guid.Parse(systemProperties.LockToken));
            Assert.Equal(expected != null, systemProperties.IsLockTokenSet);
        }
示例#8
0
        public void CreateProperties_FromMessage_AssignsEnqueuedTimeCorrectly()
        {
            // Arrange
            DateTime expected = BogusGenerator.Date.Recent();

            AmqpAnnotatedMessage amqpMessage = CreateAmqpMessage();

            amqpMessage.MessageAnnotations["x-opt-enqueued-time"] = expected;
            ServiceBusReceivedMessage message = CreateServiceBusReceivedMessage(amqpMessage);

            // Act
            var systemProperties = AzureServiceBusSystemProperties.CreateFrom(message);

            // Assert
            Assert.Equal(expected, systemProperties.EnqueuedTime);
        }
示例#9
0
        /// <summary>
        /// Generates a valid <see cref="AzureServiceBusMessageContext"/> instance.
        /// </summary>
        public static AzureServiceBusMessageContext Generate()
        {
            var amqp = new AmqpAnnotatedMessage(new AmqpMessageBody(new ReadOnlyMemory <byte> [0]));

            amqp.Header.DeliveryCount = BogusGenerator.Random.UInt();

            var message = (ServiceBusReceivedMessage)Activator.CreateInstance(typeof(ServiceBusReceivedMessage),
                                                                              BindingFlags.NonPublic | BindingFlags.Instance,
                                                                              args: new object[] { amqp },
                                                                              binder: null,
                                                                              culture: null,
                                                                              activationAttributes: null);

            AzureServiceBusSystemProperties systemProperties = message.GetSystemProperties();

            var context = new AzureServiceBusMessageContext(
                $"message-id-{Guid.NewGuid()}",
                $"job-id-{Guid.NewGuid()}",
                systemProperties,
                new Dictionary <string, object>());

            return(context);
        }
示例#10
0
        /// <summary>
        /// Gets the <see cref="AzureServiceBusSystemProperties"/>, which is used to store properties that are set by the system.
        /// </summary>
        /// <param name="message">The received Azure Service Bus message to extract the system properties from.</param>
        /// <exception cref="ArgumentNullException">Thrown when the <paramref name="message"/> is <c>null</c>.</exception>
        public static AzureServiceBusSystemProperties GetSystemProperties(this ServiceBusReceivedMessage message)
        {
            Guard.NotNull(message, nameof(message), "Requires an Azure Service Bus received message to construct a set of Azure Service Bus system properties");

            return(AzureServiceBusSystemProperties.CreateFrom(message));
        }
示例#11
0
 public void CreateProperties_WithoutServiceBusMessage_Fails()
 {
     Assert.ThrowsAny <ArgumentException>(
         () => AzureServiceBusSystemProperties.CreateFrom(message: null));
 }