Skip to content

Commit

Permalink
Fix SNS integ test to handle base64 encoded messages.
Browse files Browse the repository at this point in the history
  • Loading branch information
vellozzi committed Jul 21, 2017
1 parent e538f4d commit 8601c3d
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 18 deletions.
24 changes: 15 additions & 9 deletions sdk/test/CoreCLR/IntegrationTests/IntegrationTests/SNS.cs
Original file line number Diff line number Diff line change
Expand Up @@ -225,12 +225,12 @@ public async void IsMessageSignatureValid()
List<Message> messages = await PublishToSNSAndReceiveMessages(GetPublishRequest(topicArn), topicArn, queueUrl);

Assert.Equal(1, messages.Count);
var message = messages[0].Body;
var bodyJson = GetBodyJson(messages[0]);

var validMessage = Amazon.SimpleNotificationService.Util.Message.ParseMessage(message);
var validMessage = Amazon.SimpleNotificationService.Util.Message.ParseMessage(bodyJson);
Assert.True(validMessage.IsMessageSignatureValid());

var invalidMessage = Amazon.SimpleNotificationService.Util.Message.ParseMessage(message.Replace("Test Message", "Hacked Message"));
var invalidMessage = Amazon.SimpleNotificationService.Util.Message.ParseMessage(bodyJson.Replace("Test Message", "Hacked Message"));
Assert.False(invalidMessage.IsMessageSignatureValid());
}

Expand All @@ -247,12 +247,7 @@ public async void TestQueueSubscription()
Assert.Equal(1, messages.Count);
var message = messages[0];

string bodyJson;
// Handle some accounts returning message body as base 64 encoded.
if (message.Body.Trim()[0] == '{')
bodyJson = message.Body;
else
bodyJson = Encoding.UTF8.GetString(Convert.FromBase64String(message.Body));
string bodyJson = GetBodyJson(message);

var json = ThirdParty.Json.LitJson.JsonMapper.ToObject(bodyJson);
var messageText = json["Message"];
Expand Down Expand Up @@ -323,6 +318,17 @@ await Client.PublishAsync(new PublishRequest
Assert.Equal(1, policy.Statements.Count);
}

private static string GetBodyJson(Message message)
{
string bodyJson;
// Handle some accounts returning message body as base 64 encoded.
if (message.Body.Trim()[0] == '{')
bodyJson = message.Body;
else
bodyJson = Encoding.UTF8.GetString(Convert.FromBase64String(message.Body));
return bodyJson;
}

[Trait(CategoryAttribute, "SNS")]
public async void TestMultipleQueueSubscription()
{
Expand Down
24 changes: 15 additions & 9 deletions sdk/test/IntegrationTests/Tests/SNS.cs
Original file line number Diff line number Diff line change
Expand Up @@ -243,12 +243,12 @@ public void IsMessageSignatureValid()
List<Message> messages = PublishToSNSAndReceiveMessages(GetPublishRequest(topicArn), topicArn, queueUrl);

Assert.AreEqual(1, messages.Count);
var message = messages[0].Body;
var bodyJson = GetBodyJson(messages[0]);

var validMessage = Amazon.SimpleNotificationService.Util.Message.ParseMessage(message);
var validMessage = Amazon.SimpleNotificationService.Util.Message.ParseMessage(bodyJson);
Assert.IsTrue(validMessage.IsMessageSignatureValid());

var invalidMessage = Amazon.SimpleNotificationService.Util.Message.ParseMessage(message.Replace("Test Message", "Hacked Message"));
var invalidMessage = Amazon.SimpleNotificationService.Util.Message.ParseMessage(bodyJson.Replace("Test Message", "Hacked Message"));
Assert.IsFalse(invalidMessage.IsMessageSignatureValid());
}
finally
Expand Down Expand Up @@ -280,12 +280,7 @@ public void TestQueueSubscription()
Assert.AreEqual(1, messages.Count);
var message = messages[0];

string bodyJson;
// Handle some accounts returning message body as base 64 encoded.
if (message.Body.Trim()[0] == '{')
bodyJson = message.Body;
else
bodyJson = Encoding.UTF8.GetString(Convert.FromBase64String(message.Body));
string bodyJson = GetBodyJson(message);

var json = ThirdParty.Json.LitJson.JsonMapper.ToObject(bodyJson);
var messageText = json["Message"];
Expand Down Expand Up @@ -428,6 +423,17 @@ public void FindTopic()
}
}

private static string GetBodyJson(Message message)
{
string bodyJson;
// Handle some accounts returning message body as base 64 encoded.
if (message.Body.Trim()[0] == '{')
bodyJson = message.Body;
else
bodyJson = Encoding.UTF8.GetString(Convert.FromBase64String(message.Body));
return bodyJson;
}

private static List<Topic> GetAllTopics()
{
var allTopics = new List<Topic>();
Expand Down

0 comments on commit 8601c3d

Please sign in to comment.