Skip to content

Commit 9aa0eeb

Browse files
authored
Merge pull request #215 from Particular/release-3.3
1.x compatible TransportMessage
2 parents f1b1a6f + 72c43e6 commit 9aa0eeb

10 files changed

+678
-4
lines changed

src/NServiceBus.AmazonSQS.Tests/API/APIApprovals.ApproveSqsTransport.approved.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ namespace NServiceBus
2323
public class static SqsTransportSettings
2424
{
2525
public static NServiceBus.TransportExtensions<NServiceBus.SqsTransport> CredentialSource(this NServiceBus.TransportExtensions<NServiceBus.SqsTransport> transportExtensions, NServiceBus.SqsCredentialSource credentialSource) { }
26+
public static NServiceBus.TransportExtensions<NServiceBus.SqsTransport> EnableV1CompatibilityMode(this NServiceBus.TransportExtensions<NServiceBus.SqsTransport> transportExtensions) { }
2627
public static NServiceBus.TransportExtensions<NServiceBus.SqsTransport> MaxTTLDays(this NServiceBus.TransportExtensions<NServiceBus.SqsTransport> transportExtensions, int maxTtlDays) { }
2728
public static NServiceBus.TransportExtensions<NServiceBus.SqsTransport> NativeDeferral(this NServiceBus.TransportExtensions<NServiceBus.SqsTransport> transportExtensions, bool use = True) { }
2829
public static NServiceBus.TransportExtensions<NServiceBus.SqsTransport> Proxy(this NServiceBus.TransportExtensions<NServiceBus.SqsTransport> transportExtensions, string proxyHost, int proxyPort) { }
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
namespace NServiceBus.AmazonSQS.Tests
2+
{
3+
using System;
4+
using System.Collections.Generic;
5+
using System.Linq;
6+
using System.Text;
7+
using System.Threading.Tasks;
8+
using Extensibility;
9+
using Newtonsoft.Json.Linq;
10+
using NUnit.Framework;
11+
using Routing;
12+
using Settings;
13+
using Transport;
14+
using Transports.SQS;
15+
16+
[TestFixture]
17+
public partial class MessageDispatcherTests
18+
{
19+
static TimeSpan expectedTtbr = TimeSpan.MaxValue.Subtract(TimeSpan.FromHours(1));
20+
const string expectedReplyToAddress = "TestReplyToAddress";
21+
22+
[Test]
23+
public async Task Sends_V1_compatible_payload_when_configured()
24+
{
25+
var settings = new SettingsHolder();
26+
settings.Set(SettingsKeys.V1CompatibilityMode, true);
27+
28+
var mockSqsClient = new MockSqsClient();
29+
30+
var dispatcher = new MessageDispatcher(new ConnectionConfiguration(settings), null, mockSqsClient, new QueueUrlCache(mockSqsClient));
31+
32+
var transportOperations = new TransportOperations(
33+
new TransportOperation(
34+
new OutgoingMessage("1234", new Dictionary<string, string>
35+
{
36+
{TransportHeaders.TimeToBeReceived, expectedTtbr.ToString()},
37+
{Headers.ReplyToAddress, expectedReplyToAddress}
38+
}, Encoding.Default.GetBytes("{}")),
39+
new UnicastAddressTag("address")));
40+
41+
var transportTransaction = new TransportTransaction();
42+
var context = new ContextBag();
43+
44+
await dispatcher.Dispatch(transportOperations, transportTransaction, context);
45+
46+
Assert.IsNotEmpty(mockSqsClient.RequestsSent, "No requests sent");
47+
var request = mockSqsClient.RequestsSent.First();
48+
49+
var bodyJson = JObject.Parse(request.MessageBody);
50+
51+
Assert.IsTrue(bodyJson.ContainsKey("TimeToBeReceived"), "TimeToBeReceived not serialized");
52+
Assert.AreEqual(expectedTtbr.ToString(), bodyJson["TimeToBeReceived"].Value<string>(), "Expected TTBR mismatch");
53+
54+
Assert.IsTrue(bodyJson.ContainsKey("ReplyToAddress"), "ReplyToAddress not serialized");
55+
Assert.AreEqual(expectedReplyToAddress, bodyJson["ReplyToAddress"].Value<string>(), "Expected ReplyToAddress mismatch");
56+
}
57+
58+
59+
[Test]
60+
public async Task Does_not_send_extra_properties_in_payload_by_default()
61+
{
62+
var settings = new SettingsHolder();
63+
64+
var mockSqsClient = new MockSqsClient();
65+
66+
var dispatcher = new MessageDispatcher(new ConnectionConfiguration(settings), null, mockSqsClient, new QueueUrlCache(mockSqsClient));
67+
68+
var transportOperations = new TransportOperations(
69+
new TransportOperation(
70+
new OutgoingMessage("1234", new Dictionary<string, string>
71+
{
72+
{TransportHeaders.TimeToBeReceived, expectedTtbr.ToString()},
73+
{Headers.ReplyToAddress, expectedReplyToAddress}
74+
}, Encoding.Default.GetBytes("{}")),
75+
new UnicastAddressTag("address")));
76+
77+
var transportTransaction = new TransportTransaction();
78+
var context = new ContextBag();
79+
80+
await dispatcher.Dispatch(transportOperations, transportTransaction, context);
81+
82+
Assert.IsNotEmpty(mockSqsClient.RequestsSent, "No requests sent");
83+
var request = mockSqsClient.RequestsSent.First();
84+
85+
var bodyJson = JObject.Parse(request.MessageBody);
86+
87+
Assert.IsFalse(bodyJson.ContainsKey("TimeToBeReceived"), "TimeToBeReceived serialized");
88+
Assert.IsFalse(bodyJson.ContainsKey("ReplyToAddress"), "ReplyToAddress serialized");
89+
}
90+
}
91+
}

0 commit comments

Comments
 (0)