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 address13true" +
"Dependents address0false" +
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);
}