|
6 | 6 | using System.Linq; |
7 | 7 | using System.Text; |
8 | 8 | using Azure.Core; |
| 9 | +using Azure.Core.Amqp; |
9 | 10 | using NUnit.Framework; |
10 | 11 |
|
11 | 12 | namespace Azure.Messaging.ServiceBus.Tests.Message |
@@ -264,5 +265,47 @@ public void CreateReceivedMessageViaFactory() |
264 | 265 | Assert.AreEqual(7632, receivedMessage.EnqueuedSequenceNumber); |
265 | 266 | Assert.AreEqual(new DateTimeOffset(fixedDate, TimeSpan.FromSeconds(120)).UtcDateTime, receivedMessage.EnqueuedTime.UtcDateTime); |
266 | 267 | } |
| 268 | + |
| 269 | + [Test] |
| 270 | + [TestCase(true)] |
| 271 | + [TestCase(false)] |
| 272 | + public void CanSerializeDeserializeAmqpBytes(bool useSession) |
| 273 | + { |
| 274 | + var message = new ServiceBusMessage(new BinaryData(ServiceBusTestUtilities.GetRandomBuffer(100))); |
| 275 | + message.ContentType = "contenttype"; |
| 276 | + message.CorrelationId = "correlationid"; |
| 277 | + message.Subject = "label"; |
| 278 | + message.MessageId = "messageId"; |
| 279 | + message.PartitionKey = "key"; |
| 280 | + message.ApplicationProperties.Add("testProp", "my prop"); |
| 281 | + message.ReplyTo = "replyto"; |
| 282 | + |
| 283 | + message.ScheduledEnqueueTime = DateTimeOffset.Now; |
| 284 | + if (useSession) |
| 285 | + { |
| 286 | + message.SessionId = "key"; |
| 287 | + message.ReplyToSessionId = "replytosession"; |
| 288 | + } |
| 289 | + |
| 290 | + message.TimeToLive = TimeSpan.FromSeconds(60); |
| 291 | + message.To = "to"; |
| 292 | + |
| 293 | + var serialized = message.GetRawAmqpMessage().ToBytes(); |
| 294 | + |
| 295 | + var deserialized = new ServiceBusMessage(AmqpAnnotatedMessage.FromBytes(serialized)); |
| 296 | + Assert.AreEqual(message.ContentType, deserialized.ContentType); |
| 297 | + Assert.AreEqual(message.CorrelationId, deserialized.CorrelationId); |
| 298 | + Assert.AreEqual(message.Subject, deserialized.Subject); |
| 299 | + Assert.AreEqual(message.MessageId, deserialized.MessageId); |
| 300 | + Assert.AreEqual(message.PartitionKey, deserialized.PartitionKey); |
| 301 | + Assert.AreEqual(message.ApplicationProperties["testProp"], deserialized.ApplicationProperties["testProp"]); |
| 302 | + Assert.AreEqual(message.ReplyTo, deserialized.ReplyTo); |
| 303 | + Assert.AreEqual(message.ReplyToSessionId, deserialized.ReplyToSessionId); |
| 304 | + // because AMQP only has millisecond resolution, allow for up to a 1ms difference when round-tripping |
| 305 | + Assert.That(deserialized.ScheduledEnqueueTime, Is.EqualTo(message.ScheduledEnqueueTime).Within(1).Milliseconds); |
| 306 | + Assert.AreEqual(message.SessionId, deserialized.SessionId); |
| 307 | + Assert.AreEqual(message.TimeToLive, deserialized.TimeToLive); |
| 308 | + Assert.AreEqual(message.To, deserialized.To); |
| 309 | + } |
267 | 310 | } |
268 | 311 | } |
0 commit comments