diff options
Diffstat (limited to 'src/DotNetOpenAuth.Test/Messaging/MessagingUtilitiesTests.cs')
-rw-r--r-- | src/DotNetOpenAuth.Test/Messaging/MessagingUtilitiesTests.cs | 63 |
1 files changed, 62 insertions, 1 deletions
diff --git a/src/DotNetOpenAuth.Test/Messaging/MessagingUtilitiesTests.cs b/src/DotNetOpenAuth.Test/Messaging/MessagingUtilitiesTests.cs index a767d53..8620b93 100644 --- a/src/DotNetOpenAuth.Test/Messaging/MessagingUtilitiesTests.cs +++ b/src/DotNetOpenAuth.Test/Messaging/MessagingUtilitiesTests.cs @@ -9,12 +9,17 @@ namespace DotNetOpenAuth.Test.Messaging { using System.Collections.Generic; using System.Collections.Specialized; using System.Diagnostics; + using System.Globalization; using System.IO; + using System.Linq; using System.Net; + using System.Net.Http; + using System.Text; using System.Text.RegularExpressions; using System.Web; using DotNetOpenAuth.Messaging; using DotNetOpenAuth.Test.Mocks; + using Moq; using NUnit.Framework; [TestFixture] @@ -62,6 +67,41 @@ namespace DotNetOpenAuth.Test.Messaging { } [Test] + public void AsHttpResponseMessage() { + var responseContent = new byte[10]; + (new Random()).NextBytes(responseContent); + var responseStream = new MemoryStream(responseContent); + var outgoingResponse = new OutgoingWebResponse(); + outgoingResponse.Headers.Add("X-SOME-HEADER", "value"); + outgoingResponse.Headers.Add("Content-Length", responseContent.Length.ToString(CultureInfo.InvariantCulture)); + outgoingResponse.ResponseStream = responseStream; + + var httpResponseMessage = outgoingResponse.AsHttpResponseMessage(); + Assert.That(httpResponseMessage, Is.Not.Null); + Assert.That(httpResponseMessage.Headers.GetValues("X-SOME-HEADER").ToList(), Is.EqualTo(new[] { "value" })); + Assert.That( + httpResponseMessage.Content.Headers.GetValues("Content-Length").ToList(), + Is.EqualTo(new[] { responseContent.Length.ToString(CultureInfo.InvariantCulture) })); + var actualContent = new byte[responseContent.Length + 1]; // give the opportunity to provide a bit more data than we expect. + var bytesRead = httpResponseMessage.Content.ReadAsStreamAsync().Result.Read(actualContent, 0, actualContent.Length); + Assert.That(bytesRead, Is.EqualTo(responseContent.Length)); // verify that only the data we expected came back. + var trimmedActualContent = new byte[bytesRead]; + Array.Copy(actualContent, trimmedActualContent, bytesRead); + Assert.That(trimmedActualContent, Is.EqualTo(responseContent)); + } + + [Test] + public void AsHttpResponseMessageNoContent() { + var outgoingResponse = new OutgoingWebResponse(); + outgoingResponse.Headers.Add("X-SOME-HEADER", "value"); + + var httpResponseMessage = outgoingResponse.AsHttpResponseMessage(); + Assert.That(httpResponseMessage, Is.Not.Null); + Assert.That(httpResponseMessage.Headers.GetValues("X-SOME-HEADER").ToList(), Is.EqualTo(new[] { "value" })); + Assert.That(httpResponseMessage.Content, Is.Null); + } + + [Test] public void ToDictionary() { NameValueCollection nvc = new NameValueCollection(); nvc["a"] = "b"; @@ -150,7 +190,7 @@ namespace DotNetOpenAuth.Test.Messaging { var httpHandler = new TestWebRequestHandler(); bool callbackTriggered = false; httpHandler.Callback = req => { - Match m = Regex.Match(req.ContentType, "multipart/form-data; boundary=(.+)"); + var m = Regex.Match(req.ContentType, "multipart/form-data; boundary=(.+)"); Assert.IsTrue(m.Success, "Content-Type HTTP header not set correctly."); string boundary = m.Groups[1].Value; boundary = boundary.Substring(0, boundary.IndexOf(';')); // trim off charset @@ -229,6 +269,27 @@ namespace DotNetOpenAuth.Test.Messaging { Assert.AreEqual(PlainText, roundTripped); } + [Test] + public void SerializeAsJsonTest() { + var message = new TestMessageWithDate() { + Age = 18, + Timestamp = DateTime.Parse("4/28/2012"), + Name = "Andrew", + }; + string json = MessagingUtilities.SerializeAsJson(message, this.MessageDescriptions); + Assert.That(json, Is.EqualTo("{\"ts\":\"2012-04-28T00:00:00Z\",\"age\":18,\"Name\":\"Andrew\"}")); + } + + [Test] + public void DeserializeFromJson() { + var message = new TestMessageWithDate(); + string json = "{\"ts\":\"2012-04-28T00:00:00Z\",\"age\":18,\"Name\":\"Andrew\"}"; + MessagingUtilities.DeserializeFromJson(Encoding.UTF8.GetBytes(json), message, this.MessageDescriptions); + Assert.That(message.Age, Is.EqualTo(18)); + Assert.That(message.Timestamp, Is.EqualTo(DateTime.Parse("4/28/2012"))); + Assert.That(message.Name, Is.EqualTo("Andrew")); + } + /// <summary> /// Verifies that the time-independent string equality check works accurately. /// </summary> |