diff --git a/test/Microsoft.AspNet.Mvc.FunctionalTests/FiltersTest.cs b/test/Microsoft.AspNet.Mvc.FunctionalTests/FiltersTest.cs index 6923c888e8..fa3c8bdff4 100644 --- a/test/Microsoft.AspNet.Mvc.FunctionalTests/FiltersTest.cs +++ b/test/Microsoft.AspNet.Mvc.FunctionalTests/FiltersTest.cs @@ -8,6 +8,7 @@ using System.Net.Http; using System.Text; using System.Threading.Tasks; using Microsoft.AspNet.Builder; +using Microsoft.AspNet.Mvc.Xml; using Microsoft.AspNet.TestHost; using Xunit; @@ -227,7 +228,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests //Assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); - Assert.Equal("10", await response.Content.ReadAsStringAsync()); } @@ -244,7 +245,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests // Assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); - Assert.Equal("120", await response.Content.ReadAsStringAsync()); } diff --git a/test/Microsoft.AspNet.Mvc.FunctionalTests/MvcSampleTests.cs b/test/Microsoft.AspNet.Mvc.FunctionalTests/MvcSampleTests.cs index d65493b00f..5363b087c5 100644 --- a/test/Microsoft.AspNet.Mvc.FunctionalTests/MvcSampleTests.cs +++ b/test/Microsoft.AspNet.Mvc.FunctionalTests/MvcSampleTests.cs @@ -8,6 +8,7 @@ using System.Net.Http; using System.Net.Http.Headers; using System.Threading.Tasks; using Microsoft.AspNet.Builder; +using Microsoft.AspNet.Mvc.Xml; using Microsoft.AspNet.TestHost; using Xunit; @@ -85,7 +86,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests // Assert Assert.NotNull(response); Assert.Equal(HttpStatusCode.OK, response.StatusCode); - Assert.Equal("I like playing Football" + "
My address
13true" + "
Dependents address
0false" + diff --git a/test/Microsoft.AspNet.Mvc.FunctionalTests/RespectBrowserAcceptHeaderTests.cs b/test/Microsoft.AspNet.Mvc.FunctionalTests/RespectBrowserAcceptHeaderTests.cs index b2a81e6c86..ccfcee0155 100644 --- a/test/Microsoft.AspNet.Mvc.FunctionalTests/RespectBrowserAcceptHeaderTests.cs +++ b/test/Microsoft.AspNet.Mvc.FunctionalTests/RespectBrowserAcceptHeaderTests.cs @@ -7,6 +7,7 @@ using System.Net.Http; using System.Text; using System.Threading.Tasks; using Microsoft.AspNet.Builder; +using Microsoft.AspNet.Mvc.Xml; using Microsoft.AspNet.TestHost; using Xunit; @@ -61,7 +62,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests Assert.NotNull(response.Content.Headers.ContentType); Assert.Equal("application/xml; charset=utf-8", response.Content.Headers.ContentType.ToString()); var responseData = await response.Content.ReadAsStringAsync(); - Assert.Equal(expectedResponseData, responseData); + XmlAssert.Equal(expectedResponseData, responseData); } [Theory] diff --git a/test/Microsoft.AspNet.Mvc.FunctionalTests/SerializableErrorTests.cs b/test/Microsoft.AspNet.Mvc.FunctionalTests/SerializableErrorTests.cs index a4cd4d740f..93bbd2b4e0 100644 --- a/test/Microsoft.AspNet.Mvc.FunctionalTests/SerializableErrorTests.cs +++ b/test/Microsoft.AspNet.Mvc.FunctionalTests/SerializableErrorTests.cs @@ -8,6 +8,7 @@ using System.Net.Http.Headers; using System.Text; using System.Threading.Tasks; using Microsoft.AspNet.Builder; +using Microsoft.AspNet.Mvc.Xml; using Microsoft.AspNet.TestHost; using Xunit; @@ -38,7 +39,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests Assert.NotNull(response.Content.Headers.ContentType); Assert.Equal(acceptHeader, response.Content.Headers.ContentType.MediaType); var responseData = await response.Content.ReadAsStringAsync(); - Assert.Equal(expectedXml, responseData); + XmlAssert.Equal(expectedXml, responseData); } [Theory] @@ -62,7 +63,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests Assert.NotNull(response.Content.Headers.ContentType); Assert.Equal(acceptHeader, response.Content.Headers.ContentType.MediaType); var responseData = await response.Content.ReadAsStringAsync(); - Assert.Equal(expectedXml, responseData); + XmlAssert.Equal(expectedXml, responseData); } [Theory] @@ -89,7 +90,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests // Assert Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); var responseData = await response.Content.ReadAsStringAsync(); - Assert.Equal(expected, responseData); + XmlAssert.Equal(expected, responseData); } } } \ No newline at end of file diff --git a/test/Microsoft.AspNet.Mvc.FunctionalTests/XmlDataContractSerializerFormattersWrappingTest.cs b/test/Microsoft.AspNet.Mvc.FunctionalTests/XmlDataContractSerializerFormattersWrappingTest.cs index a36aa61aee..a28f8337a3 100644 --- a/test/Microsoft.AspNet.Mvc.FunctionalTests/XmlDataContractSerializerFormattersWrappingTest.cs +++ b/test/Microsoft.AspNet.Mvc.FunctionalTests/XmlDataContractSerializerFormattersWrappingTest.cs @@ -8,6 +8,7 @@ using System.Net.Http.Headers; using System.Text; using System.Threading.Tasks; using Microsoft.AspNet.Builder; +using Microsoft.AspNet.Mvc.Xml; using Microsoft.AspNet.TestHost; using Xunit; @@ -35,7 +36,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests //Assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); var result = await response.Content.ReadAsStringAsync(); - Assert.Equal("" + "1020", result); @@ -58,7 +59,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests //Assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); var result = await response.Content.ReadAsStringAsync(); - Assert.Equal("" + "value1value2", result); @@ -81,7 +82,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests //Assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); var result = await response.Content.ReadAsStringAsync(); - Assert.Equal("", result); } @@ -103,7 +104,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests //Assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); var result = await response.Content.ReadAsStringAsync(); - Assert.Equal("", result); } @@ -125,7 +126,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests //Assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); var result = await response.Content.ReadAsStringAsync(); - Assert.Equal("" + "3510Mike35" + "11Jimmy", @@ -149,7 +150,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests //Assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); var result = await response.Content.ReadAsStringAsync(); - Assert.Equal("", result); } @@ -171,7 +172,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests //Assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); var result = await response.Content.ReadAsStringAsync(); - Assert.Equal("", result); } @@ -191,7 +192,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests //Assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); var result = await response.Content.ReadAsStringAsync(); - Assert.Equal("" + "key1-errorkey2-error" + "key1-errorkey2-error" + diff --git a/test/Microsoft.AspNet.Mvc.FunctionalTests/XmlSerializerFormattersWrappingTest.cs b/test/Microsoft.AspNet.Mvc.FunctionalTests/XmlSerializerFormattersWrappingTest.cs index b1d7968343..73d46eb2aa 100644 --- a/test/Microsoft.AspNet.Mvc.FunctionalTests/XmlSerializerFormattersWrappingTest.cs +++ b/test/Microsoft.AspNet.Mvc.FunctionalTests/XmlSerializerFormattersWrappingTest.cs @@ -8,6 +8,7 @@ using System.Net.Http.Headers; using System.Text; using System.Threading.Tasks; using Microsoft.AspNet.Builder; +using Microsoft.AspNet.Mvc.Xml; using Microsoft.AspNet.TestHost; using Xunit; @@ -35,7 +36,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests //Assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); var result = await response.Content.ReadAsStringAsync(); - Assert.Equal("10" + "20", result); @@ -58,7 +59,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests //Assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); var result = await response.Content.ReadAsStringAsync(); - Assert.Equal("value1" + "value2", result); @@ -81,7 +82,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests //Assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); var result = await response.Content.ReadAsStringAsync(); - Assert.Equal("", result); } @@ -103,7 +104,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests //Assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); var result = await response.Content.ReadAsStringAsync(); - Assert.Equal("", result); } @@ -125,7 +126,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests //Assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); var result = await response.Content.ReadAsStringAsync(); - Assert.Equal("10" + "Mike3511" + "Jimmy35", @@ -149,7 +150,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests //Assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); var result = await response.Content.ReadAsStringAsync(); - Assert.Equal("", result); } @@ -172,7 +173,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests //Assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); var result = await response.Content.ReadAsStringAsync(); - Assert.Equal("", result); } @@ -192,7 +193,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests //Assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); var result = await response.Content.ReadAsStringAsync(); - Assert.Equal("key1-error" + "key2-errorkey1-error" + "key2-error", diff --git a/test/Microsoft.AspNet.Mvc.FunctionalTests/project.json b/test/Microsoft.AspNet.Mvc.FunctionalTests/project.json index b39ba2771f..dd286a5276 100644 --- a/test/Microsoft.AspNet.Mvc.FunctionalTests/project.json +++ b/test/Microsoft.AspNet.Mvc.FunctionalTests/project.json @@ -1,4 +1,8 @@ { + "code": [ + "**/*.cs", + "../Microsoft.AspNet.Mvc.Xml.Test/XmlAssert.cs" + ], "compilationOptions": { "warningsAsErrors": "true" }, diff --git a/test/Microsoft.AspNet.Mvc.Xml.Test/XmlAssert.cs b/test/Microsoft.AspNet.Mvc.Xml.Test/XmlAssert.cs new file mode 100644 index 0000000000..d22e336a42 --- /dev/null +++ b/test/Microsoft.AspNet.Mvc.Xml.Test/XmlAssert.cs @@ -0,0 +1,49 @@ +// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Linq; +using System.Xml.Linq; +using Xunit.Sdk; + +namespace Microsoft.AspNet.Mvc.Xml +{ + /// + /// Xunit assertions related to Xml content. + /// + public static class XmlAssert + { + /// + /// Compares two xml strings ignoring an element's attribute order. + /// + /// Expected xml string. + /// Actual xml string. + public static void Equal(string expectedXml, string actualXml) + { + var sortedExpectedXDoc = SortAttributes(XDocument.Parse(expectedXml)); + var sortedActualXDoc = SortAttributes(XDocument.Parse(actualXml)); + + bool areEqual = XNode.DeepEquals(sortedExpectedXDoc, sortedActualXDoc); + + if (!areEqual) + { + throw new EqualException(sortedExpectedXDoc, sortedActualXDoc); + } + } + + private static XDocument SortAttributes(XDocument doc) + { + return new XDocument( + doc.Declaration, + SortAttributes(doc.Root)); + } + + private static XElement SortAttributes(XElement element) + { + return new XElement( + element.Name, + element.Attributes().OrderBy(a => a.Name.ToString()), + element.Elements().Select(child => SortAttributes(child))); + } + } +} \ No newline at end of file diff --git a/test/Microsoft.AspNet.Mvc.Xml.Test/XmlDataContractSerializerOutputFormatterTest.cs b/test/Microsoft.AspNet.Mvc.Xml.Test/XmlDataContractSerializerOutputFormatterTest.cs index 31d97a6946..95915ac472 100644 --- a/test/Microsoft.AspNet.Mvc.Xml.Test/XmlDataContractSerializerOutputFormatterTest.cs +++ b/test/Microsoft.AspNet.Mvc.Xml.Test/XmlDataContractSerializerOutputFormatterTest.cs @@ -105,7 +105,7 @@ namespace Microsoft.AspNet.Mvc.Xml // Assert Assert.NotNull(outputFormatterContext.ActionContext.HttpContext.Response.Body); outputFormatterContext.ActionContext.HttpContext.Response.Body.Position = 0; - Assert.Equal(expectedOutput, + XmlAssert.Equal(expectedOutput, new StreamReader(outputFormatterContext.ActionContext.HttpContext.Response.Body, Encoding.UTF8) .ReadToEnd()); Assert.True(outputFormatterContext.ActionContext.HttpContext.Response.Body.CanRead); @@ -147,7 +147,7 @@ namespace Microsoft.AspNet.Mvc.Xml Assert.NotNull(responseStream); responseStream.Position = 0; var actualOutput = new StreamReader(responseStream, Encoding.UTF8).ReadToEnd(); - Assert.Equal(expectedOutput, actualOutput); + XmlAssert.Equal(expectedOutput, actualOutput); } [Fact] @@ -164,7 +164,7 @@ namespace Microsoft.AspNet.Mvc.Xml // Assert Assert.NotNull(outputFormatterContext.ActionContext.HttpContext.Response.Body); outputFormatterContext.ActionContext.HttpContext.Response.Body.Position = 0; - Assert.Equal("" + + XmlAssert.Equal("" + "10", new StreamReader(outputFormatterContext.ActionContext.HttpContext.Response.Body, Encoding.UTF8) .ReadToEnd()); @@ -192,7 +192,7 @@ namespace Microsoft.AspNet.Mvc.Xml // Assert Assert.NotNull(outputFormatterContext.ActionContext.HttpContext.Response.Body); outputFormatterContext.ActionContext.HttpContext.Response.Body.Position = 0; - Assert.Equal("" + + XmlAssert.Equal("" + "TestString" + "10TestLevelOne string" + "", @@ -219,7 +219,7 @@ namespace Microsoft.AspNet.Mvc.Xml // Assert Assert.NotNull(outputFormatterContext.ActionContext.HttpContext.Response.Body); outputFormatterContext.ActionContext.HttpContext.Response.Body.Position = 0; - Assert.Equal("" + + XmlAssert.Equal("" + "" + "10", new StreamReader(outputFormatterContext.ActionContext.HttpContext.Response.Body, @@ -242,7 +242,7 @@ namespace Microsoft.AspNet.Mvc.Xml // Assert Assert.NotNull(outputFormatterContext.ActionContext.HttpContext.Response.Body); outputFormatterContext.ActionContext.HttpContext.Response.Body.Position = 0; - Assert.Equal("" + + XmlAssert.Equal("" + "" + "10", new StreamReader(outputFormatterContext.ActionContext.HttpContext.Response.Body, @@ -266,7 +266,7 @@ namespace Microsoft.AspNet.Mvc.Xml outputFormatterContext.ActionContext.HttpContext.Response.Body.Position = 0; var outputString = new StreamReader(outputFormatterContext.ActionContext.HttpContext.Response.Body, Encoding.UTF8).ReadToEnd(); - Assert.Equal("" + + XmlAssert.Equal("" + "\r\n 10\r\n", outputString); } @@ -436,7 +436,7 @@ namespace Microsoft.AspNet.Mvc.Xml outputFormatterContext.ActionContext.HttpContext.Response.Body.Position = 0; var actualOutput = new StreamReader( outputFormatterContext.ActionContext.HttpContext.Response.Body, Encoding.UTF8).ReadToEnd(); - Assert.Equal(expectedOutput, actualOutput); + XmlAssert.Equal(expectedOutput, actualOutput); } [Fact] @@ -480,7 +480,7 @@ namespace Microsoft.AspNet.Mvc.Xml outputFormatterContext.ActionContext.HttpContext.Response.Body.Position = 0; var actualOutput = new StreamReader( outputFormatterContext.ActionContext.HttpContext.Response.Body, Encoding.UTF8).ReadToEnd(); - Assert.Equal(expectedOutput, actualOutput); + XmlAssert.Equal(expectedOutput, actualOutput); } [Fact] @@ -524,7 +524,7 @@ namespace Microsoft.AspNet.Mvc.Xml outputFormatterContext.ActionContext.HttpContext.Response.Body.Position = 0; var actualOutput = new StreamReader( outputFormatterContext.ActionContext.HttpContext.Response.Body, Encoding.UTF8).ReadToEnd(); - Assert.Equal(expectedOutput, actualOutput); + XmlAssert.Equal(expectedOutput, actualOutput); } private OutputFormatterContext GetOutputFormatterContext(object outputValue, Type outputType, diff --git a/test/Microsoft.AspNet.Mvc.Xml.Test/XmlSerializerOutputFormatterTest.cs b/test/Microsoft.AspNet.Mvc.Xml.Test/XmlSerializerOutputFormatterTest.cs index 0a94a3b23c..4ba727cd2d 100644 --- a/test/Microsoft.AspNet.Mvc.Xml.Test/XmlSerializerOutputFormatterTest.cs +++ b/test/Microsoft.AspNet.Mvc.Xml.Test/XmlSerializerOutputFormatterTest.cs @@ -62,7 +62,7 @@ namespace Microsoft.AspNet.Mvc.Xml // Assert Assert.NotNull(outputFormatterContext.ActionContext.HttpContext.Response.Body); outputFormatterContext.ActionContext.HttpContext.Response.Body.Position = 0; - Assert.Equal(expectedOutput, + XmlAssert.Equal(expectedOutput, new StreamReader(outputFormatterContext.ActionContext.HttpContext.Response.Body, Encoding.UTF8) .ReadToEnd()); Assert.True(outputFormatterContext.ActionContext.HttpContext.Response.Body.CanRead); @@ -104,7 +104,7 @@ namespace Microsoft.AspNet.Mvc.Xml Assert.NotNull(responseStream); responseStream.Position = 0; var actualOutput = new StreamReader(responseStream, Encoding.UTF8).ReadToEnd(); - Assert.Equal(expectedOutput, actualOutput); + XmlAssert.Equal(expectedOutput, actualOutput); } [Fact] @@ -121,7 +121,7 @@ namespace Microsoft.AspNet.Mvc.Xml // Assert Assert.NotNull(outputFormatterContext.ActionContext.HttpContext.Response.Body); outputFormatterContext.ActionContext.HttpContext.Response.Body.Position = 0; - Assert.Equal("10", new StreamReader(outputFormatterContext.ActionContext.HttpContext.Response.Body, Encoding.UTF8) .ReadToEnd()); @@ -150,7 +150,7 @@ namespace Microsoft.AspNet.Mvc.Xml // Assert Assert.NotNull(outputFormatterContext.ActionContext.HttpContext.Response.Body); outputFormatterContext.ActionContext.HttpContext.Response.Body.Position = 0; - Assert.Equal("TestString" + "TestLevelOne string" + "10", @@ -177,7 +177,7 @@ namespace Microsoft.AspNet.Mvc.Xml // Assert Assert.NotNull(outputFormatterContext.ActionContext.HttpContext.Response.Body); outputFormatterContext.ActionContext.HttpContext.Response.Body.Position = 0; - Assert.Equal("" + + XmlAssert.Equal("" + "10", new StreamReader(outputFormatterContext.ActionContext.HttpContext.Response.Body, Encoding.UTF8) @@ -200,7 +200,7 @@ namespace Microsoft.AspNet.Mvc.Xml // Assert Assert.NotNull(outputFormatterContext.ActionContext.HttpContext.Response.Body); outputFormatterContext.ActionContext.HttpContext.Response.Body.Position = 0; - Assert.Equal("" + + XmlAssert.Equal("" + "10", new StreamReader(outputFormatterContext.ActionContext.HttpContext.Response.Body, @@ -224,7 +224,7 @@ namespace Microsoft.AspNet.Mvc.Xml outputFormatterContext.ActionContext.HttpContext.Response.Body.Position = 0; var outputString = new StreamReader(outputFormatterContext.ActionContext.HttpContext.Response.Body, Encoding.UTF8).ReadToEnd(); - Assert.Equal("\r\n 10\r\n", outputString); }