[Fixes #1878] Investigate Xml formatters tests failures on Windows 2008 R2 OS

This commit is contained in:
Kiran Challa 2015-02-05 11:12:52 -08:00
parent 3f28a14c17
commit 2e938a51f8
10 changed files with 99 additions and 40 deletions

View File

@ -8,6 +8,7 @@ using System.Net.Http;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNet.Builder; using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Mvc.Xml;
using Microsoft.AspNet.TestHost; using Microsoft.AspNet.TestHost;
using Xunit; using Xunit;
@ -227,7 +228,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
//Assert //Assert
Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal(HttpStatusCode.OK, response.StatusCode);
Assert.Equal("<DummyClass xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " + XmlAssert.Equal("<DummyClass xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " +
"xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"><SampleInt>10</SampleInt></DummyClass>", "xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"><SampleInt>10</SampleInt></DummyClass>",
await response.Content.ReadAsStringAsync()); await response.Content.ReadAsStringAsync());
} }
@ -244,7 +245,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
// Assert // Assert
Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal(HttpStatusCode.OK, response.StatusCode);
Assert.Equal("<DummyClass xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " + XmlAssert.Equal("<DummyClass xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " +
"xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"><SampleInt>120</SampleInt></DummyClass>", "xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"><SampleInt>120</SampleInt></DummyClass>",
await response.Content.ReadAsStringAsync()); await response.Content.ReadAsStringAsync());
} }

View File

@ -8,6 +8,7 @@ using System.Net.Http;
using System.Net.Http.Headers; using System.Net.Http.Headers;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNet.Builder; using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Mvc.Xml;
using Microsoft.AspNet.TestHost; using Microsoft.AspNet.TestHost;
using Xunit; using Xunit;
@ -85,7 +86,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
// Assert // Assert
Assert.NotNull(response); Assert.NotNull(response);
Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal(HttpStatusCode.OK, response.StatusCode);
Assert.Equal("<User xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=" + XmlAssert.Equal("<User xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=" +
"\"http://schemas.datacontract.org/2004/07/MvcSample.Web.Models\"><About>I like playing Football" + "\"http://schemas.datacontract.org/2004/07/MvcSample.Web.Models\"><About>I like playing Football" +
"</About><Address>My address</Address><Age>13</Age><Alive>true</Alive><Dependent><About i:nil=\"true\" />" + "</About><Address>My address</Address><Age>13</Age><Alive>true</Alive><Dependent><About i:nil=\"true\" />" +
"<Address>Dependents address</Address><Age>0</Age><Alive>false</Alive><Dependent i:nil=\"true\" />" + "<Address>Dependents address</Address><Age>0</Age><Alive>false</Alive><Dependent i:nil=\"true\" />" +

View File

@ -7,6 +7,7 @@ using System.Net.Http;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNet.Builder; using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Mvc.Xml;
using Microsoft.AspNet.TestHost; using Microsoft.AspNet.TestHost;
using Xunit; using Xunit;
@ -61,7 +62,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
Assert.NotNull(response.Content.Headers.ContentType); Assert.NotNull(response.Content.Headers.ContentType);
Assert.Equal("application/xml; charset=utf-8", response.Content.Headers.ContentType.ToString()); Assert.Equal("application/xml; charset=utf-8", response.Content.Headers.ContentType.ToString());
var responseData = await response.Content.ReadAsStringAsync(); var responseData = await response.Content.ReadAsStringAsync();
Assert.Equal(expectedResponseData, responseData); XmlAssert.Equal(expectedResponseData, responseData);
} }
[Theory] [Theory]

View File

@ -8,6 +8,7 @@ using System.Net.Http.Headers;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNet.Builder; using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Mvc.Xml;
using Microsoft.AspNet.TestHost; using Microsoft.AspNet.TestHost;
using Xunit; using Xunit;
@ -38,7 +39,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
Assert.NotNull(response.Content.Headers.ContentType); Assert.NotNull(response.Content.Headers.ContentType);
Assert.Equal(acceptHeader, response.Content.Headers.ContentType.MediaType); Assert.Equal(acceptHeader, response.Content.Headers.ContentType.MediaType);
var responseData = await response.Content.ReadAsStringAsync(); var responseData = await response.Content.ReadAsStringAsync();
Assert.Equal(expectedXml, responseData); XmlAssert.Equal(expectedXml, responseData);
} }
[Theory] [Theory]
@ -62,7 +63,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
Assert.NotNull(response.Content.Headers.ContentType); Assert.NotNull(response.Content.Headers.ContentType);
Assert.Equal(acceptHeader, response.Content.Headers.ContentType.MediaType); Assert.Equal(acceptHeader, response.Content.Headers.ContentType.MediaType);
var responseData = await response.Content.ReadAsStringAsync(); var responseData = await response.Content.ReadAsStringAsync();
Assert.Equal(expectedXml, responseData); XmlAssert.Equal(expectedXml, responseData);
} }
[Theory] [Theory]
@ -89,7 +90,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
// Assert // Assert
Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
var responseData = await response.Content.ReadAsStringAsync(); var responseData = await response.Content.ReadAsStringAsync();
Assert.Equal(expected, responseData); XmlAssert.Equal(expected, responseData);
} }
} }
} }

View File

@ -8,6 +8,7 @@ using System.Net.Http.Headers;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNet.Builder; using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Mvc.Xml;
using Microsoft.AspNet.TestHost; using Microsoft.AspNet.TestHost;
using Xunit; using Xunit;
@ -35,7 +36,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
//Assert //Assert
Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal(HttpStatusCode.OK, response.StatusCode);
var result = await response.Content.ReadAsStringAsync(); var result = await response.Content.ReadAsStringAsync();
Assert.Equal("<ArrayOfint xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\"" + XmlAssert.Equal("<ArrayOfint xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\"" +
" xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\">" + " xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\">" +
"<int>10</int><int>20</int></ArrayOfint>", "<int>10</int><int>20</int></ArrayOfint>",
result); result);
@ -58,7 +59,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
//Assert //Assert
Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal(HttpStatusCode.OK, response.StatusCode);
var result = await response.Content.ReadAsStringAsync(); var result = await response.Content.ReadAsStringAsync();
Assert.Equal("<ArrayOfstring xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\"" + XmlAssert.Equal("<ArrayOfstring xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\"" +
" xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\">" + " xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\">" +
"<string>value1</string><string>value2</string></ArrayOfstring>", "<string>value1</string><string>value2</string></ArrayOfstring>",
result); result);
@ -81,7 +82,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
//Assert //Assert
Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal(HttpStatusCode.OK, response.StatusCode);
var result = await response.Content.ReadAsStringAsync(); var result = await response.Content.ReadAsStringAsync();
Assert.Equal("<ArrayOfstring xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\"" + XmlAssert.Equal("<ArrayOfstring xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\"" +
" xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\" />", " xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\" />",
result); result);
} }
@ -103,7 +104,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
//Assert //Assert
Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal(HttpStatusCode.OK, response.StatusCode);
var result = await response.Content.ReadAsStringAsync(); var result = await response.Content.ReadAsStringAsync();
Assert.Equal("<ArrayOfstring i:nil=\"true\" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\"" + XmlAssert.Equal("<ArrayOfstring i:nil=\"true\" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\"" +
" xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\" />", " xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\" />",
result); result);
} }
@ -125,7 +126,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
//Assert //Assert
Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal(HttpStatusCode.OK, response.StatusCode);
var result = await response.Content.ReadAsStringAsync(); var result = await response.Content.ReadAsStringAsync();
Assert.Equal("<ArrayOfPersonWrapper xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\"" + XmlAssert.Equal("<ArrayOfPersonWrapper xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\"" +
" xmlns=\"http://schemas.datacontract.org/2004/07/XmlFormattersWebSite\"><PersonWrapper>" + " xmlns=\"http://schemas.datacontract.org/2004/07/XmlFormattersWebSite\"><PersonWrapper>" +
"<Age>35</Age><Id>10</Id><Name>Mike</Name></PersonWrapper><PersonWrapper><Age>35</Age><Id>" + "<Age>35</Age><Id>10</Id><Name>Mike</Name></PersonWrapper><PersonWrapper><Age>35</Age><Id>" +
"11</Id><Name>Jimmy</Name></PersonWrapper></ArrayOfPersonWrapper>", "11</Id><Name>Jimmy</Name></PersonWrapper></ArrayOfPersonWrapper>",
@ -149,7 +150,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
//Assert //Assert
Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal(HttpStatusCode.OK, response.StatusCode);
var result = await response.Content.ReadAsStringAsync(); var result = await response.Content.ReadAsStringAsync();
Assert.Equal("<ArrayOfPersonWrapper xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\"" + XmlAssert.Equal("<ArrayOfPersonWrapper xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\"" +
" xmlns=\"http://schemas.datacontract.org/2004/07/XmlFormattersWebSite\" />", " xmlns=\"http://schemas.datacontract.org/2004/07/XmlFormattersWebSite\" />",
result); result);
} }
@ -171,7 +172,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
//Assert //Assert
Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal(HttpStatusCode.OK, response.StatusCode);
var result = await response.Content.ReadAsStringAsync(); var result = await response.Content.ReadAsStringAsync();
Assert.Equal("<ArrayOfPersonWrapper i:nil=\"true\" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\"" + XmlAssert.Equal("<ArrayOfPersonWrapper i:nil=\"true\" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\"" +
" xmlns=\"http://schemas.datacontract.org/2004/07/XmlFormattersWebSite\" />", " xmlns=\"http://schemas.datacontract.org/2004/07/XmlFormattersWebSite\" />",
result); result);
} }
@ -191,7 +192,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
//Assert //Assert
Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal(HttpStatusCode.OK, response.StatusCode);
var result = await response.Content.ReadAsStringAsync(); var result = await response.Content.ReadAsStringAsync();
Assert.Equal("<ArrayOfSerializableErrorWrapper xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\"" + XmlAssert.Equal("<ArrayOfSerializableErrorWrapper xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\"" +
" xmlns=\"http://schemas.datacontract.org/2004/07/Microsoft.AspNet.Mvc.Xml\"><SerializableErrorWrapper>" + " xmlns=\"http://schemas.datacontract.org/2004/07/Microsoft.AspNet.Mvc.Xml\"><SerializableErrorWrapper>" +
"<key1>key1-error</key1><key2>key2-error</key2></SerializableErrorWrapper><SerializableErrorWrapper>" + "<key1>key1-error</key1><key2>key2-error</key2></SerializableErrorWrapper><SerializableErrorWrapper>" +
"<key3>key1-error</key3><key4>key2-error</key4></SerializableErrorWrapper>" + "<key3>key1-error</key3><key4>key2-error</key4></SerializableErrorWrapper>" +

View File

@ -8,6 +8,7 @@ using System.Net.Http.Headers;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNet.Builder; using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Mvc.Xml;
using Microsoft.AspNet.TestHost; using Microsoft.AspNet.TestHost;
using Xunit; using Xunit;
@ -35,7 +36,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
//Assert //Assert
Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal(HttpStatusCode.OK, response.StatusCode);
var result = await response.Content.ReadAsStringAsync(); var result = await response.Content.ReadAsStringAsync();
Assert.Equal("<ArrayOfInt xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " + XmlAssert.Equal("<ArrayOfInt xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " +
"xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"><int>10</int>" + "xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"><int>10</int>" +
"<int>20</int></ArrayOfInt>", "<int>20</int></ArrayOfInt>",
result); result);
@ -58,7 +59,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
//Assert //Assert
Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal(HttpStatusCode.OK, response.StatusCode);
var result = await response.Content.ReadAsStringAsync(); var result = await response.Content.ReadAsStringAsync();
Assert.Equal("<ArrayOfString xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " + XmlAssert.Equal("<ArrayOfString xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " +
"xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"><string>value1</string>" + "xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"><string>value1</string>" +
"<string>value2</string></ArrayOfString>", "<string>value2</string></ArrayOfString>",
result); result);
@ -81,7 +82,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
//Assert //Assert
Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal(HttpStatusCode.OK, response.StatusCode);
var result = await response.Content.ReadAsStringAsync(); var result = await response.Content.ReadAsStringAsync();
Assert.Equal("<ArrayOfString xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" + XmlAssert.Equal("<ArrayOfString xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" +
" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xsi:nil=\"true\" />", " xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xsi:nil=\"true\" />",
result); result);
} }
@ -103,7 +104,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
//Assert //Assert
Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal(HttpStatusCode.OK, response.StatusCode);
var result = await response.Content.ReadAsStringAsync(); var result = await response.Content.ReadAsStringAsync();
Assert.Equal("<ArrayOfString xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" + XmlAssert.Equal("<ArrayOfString xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" +
" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" />", " xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" />",
result); result);
} }
@ -125,7 +126,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
//Assert //Assert
Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal(HttpStatusCode.OK, response.StatusCode);
var result = await response.Content.ReadAsStringAsync(); var result = await response.Content.ReadAsStringAsync();
Assert.Equal("<ArrayOfPersonWrapper xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " + XmlAssert.Equal("<ArrayOfPersonWrapper xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " +
"xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"><PersonWrapper><Id>10</Id>" + "xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"><PersonWrapper><Id>10</Id>" +
"<Name>Mike</Name><Age>35</Age></PersonWrapper><PersonWrapper><Id>11</Id>" + "<Name>Mike</Name><Age>35</Age></PersonWrapper><PersonWrapper><Id>11</Id>" +
"<Name>Jimmy</Name><Age>35</Age></PersonWrapper></ArrayOfPersonWrapper>", "<Name>Jimmy</Name><Age>35</Age></PersonWrapper></ArrayOfPersonWrapper>",
@ -149,7 +150,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
//Assert //Assert
Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal(HttpStatusCode.OK, response.StatusCode);
var result = await response.Content.ReadAsStringAsync(); var result = await response.Content.ReadAsStringAsync();
Assert.Equal("<ArrayOfPersonWrapper xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" + XmlAssert.Equal("<ArrayOfPersonWrapper xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" +
" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" />", " xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" />",
result); result);
} }
@ -172,7 +173,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
//Assert //Assert
Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal(HttpStatusCode.OK, response.StatusCode);
var result = await response.Content.ReadAsStringAsync(); var result = await response.Content.ReadAsStringAsync();
Assert.Equal("<ArrayOfPersonWrapper xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" + XmlAssert.Equal("<ArrayOfPersonWrapper xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" +
" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xsi:nil=\"true\" />", " xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xsi:nil=\"true\" />",
result); result);
} }
@ -192,7 +193,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
//Assert //Assert
Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal(HttpStatusCode.OK, response.StatusCode);
var result = await response.Content.ReadAsStringAsync(); var result = await response.Content.ReadAsStringAsync();
Assert.Equal("<ArrayOfSerializableErrorWrapper xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" + XmlAssert.Equal("<ArrayOfSerializableErrorWrapper xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" +
" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"><SerializableErrorWrapper><key1>key1-error</key1>" + " xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"><SerializableErrorWrapper><key1>key1-error</key1>" +
"<key2>key2-error</key2></SerializableErrorWrapper><SerializableErrorWrapper><key3>key1-error</key3>" + "<key2>key2-error</key2></SerializableErrorWrapper><SerializableErrorWrapper><key3>key1-error</key3>" +
"<key4>key2-error</key4></SerializableErrorWrapper></ArrayOfSerializableErrorWrapper>", "<key4>key2-error</key4></SerializableErrorWrapper></ArrayOfSerializableErrorWrapper>",

View File

@ -1,4 +1,8 @@
{ {
"code": [
"**/*.cs",
"../Microsoft.AspNet.Mvc.Xml.Test/XmlAssert.cs"
],
"compilationOptions": { "compilationOptions": {
"warningsAsErrors": "true" "warningsAsErrors": "true"
}, },

View File

@ -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
{
/// <summary>
/// Xunit assertions related to Xml content.
/// </summary>
public static class XmlAssert
{
/// <summary>
/// Compares two xml strings ignoring an element's attribute order.
/// </summary>
/// <param name="expectedXml">Expected xml string.</param>
/// <param name="actualXml">Actual xml string.</param>
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)));
}
}
}

View File

@ -105,7 +105,7 @@ namespace Microsoft.AspNet.Mvc.Xml
// Assert // Assert
Assert.NotNull(outputFormatterContext.ActionContext.HttpContext.Response.Body); Assert.NotNull(outputFormatterContext.ActionContext.HttpContext.Response.Body);
outputFormatterContext.ActionContext.HttpContext.Response.Body.Position = 0; outputFormatterContext.ActionContext.HttpContext.Response.Body.Position = 0;
Assert.Equal(expectedOutput, XmlAssert.Equal(expectedOutput,
new StreamReader(outputFormatterContext.ActionContext.HttpContext.Response.Body, Encoding.UTF8) new StreamReader(outputFormatterContext.ActionContext.HttpContext.Response.Body, Encoding.UTF8)
.ReadToEnd()); .ReadToEnd());
Assert.True(outputFormatterContext.ActionContext.HttpContext.Response.Body.CanRead); Assert.True(outputFormatterContext.ActionContext.HttpContext.Response.Body.CanRead);
@ -147,7 +147,7 @@ namespace Microsoft.AspNet.Mvc.Xml
Assert.NotNull(responseStream); Assert.NotNull(responseStream);
responseStream.Position = 0; responseStream.Position = 0;
var actualOutput = new StreamReader(responseStream, Encoding.UTF8).ReadToEnd(); var actualOutput = new StreamReader(responseStream, Encoding.UTF8).ReadToEnd();
Assert.Equal(expectedOutput, actualOutput); XmlAssert.Equal(expectedOutput, actualOutput);
} }
[Fact] [Fact]
@ -164,7 +164,7 @@ namespace Microsoft.AspNet.Mvc.Xml
// Assert // Assert
Assert.NotNull(outputFormatterContext.ActionContext.HttpContext.Response.Body); Assert.NotNull(outputFormatterContext.ActionContext.HttpContext.Response.Body);
outputFormatterContext.ActionContext.HttpContext.Response.Body.Position = 0; outputFormatterContext.ActionContext.HttpContext.Response.Body.Position = 0;
Assert.Equal("<DummyClass xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\">" + XmlAssert.Equal("<DummyClass xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\">" +
"<SampleInt>10</SampleInt></DummyClass>", "<SampleInt>10</SampleInt></DummyClass>",
new StreamReader(outputFormatterContext.ActionContext.HttpContext.Response.Body, Encoding.UTF8) new StreamReader(outputFormatterContext.ActionContext.HttpContext.Response.Body, Encoding.UTF8)
.ReadToEnd()); .ReadToEnd());
@ -192,7 +192,7 @@ namespace Microsoft.AspNet.Mvc.Xml
// Assert // Assert
Assert.NotNull(outputFormatterContext.ActionContext.HttpContext.Response.Body); Assert.NotNull(outputFormatterContext.ActionContext.HttpContext.Response.Body);
outputFormatterContext.ActionContext.HttpContext.Response.Body.Position = 0; outputFormatterContext.ActionContext.HttpContext.Response.Body.Position = 0;
Assert.Equal("<TestLevelTwo xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\">" + XmlAssert.Equal("<TestLevelTwo xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\">" +
"<SampleString>TestString</SampleString>" + "<SampleString>TestString</SampleString>" +
"<TestOne><SampleInt>10</SampleInt><sampleString>TestLevelOne string</sampleString>" + "<TestOne><SampleInt>10</SampleInt><sampleString>TestLevelOne string</sampleString>" +
"</TestOne></TestLevelTwo>", "</TestOne></TestLevelTwo>",
@ -219,7 +219,7 @@ namespace Microsoft.AspNet.Mvc.Xml
// Assert // Assert
Assert.NotNull(outputFormatterContext.ActionContext.HttpContext.Response.Body); Assert.NotNull(outputFormatterContext.ActionContext.HttpContext.Response.Body);
outputFormatterContext.ActionContext.HttpContext.Response.Body.Position = 0; outputFormatterContext.ActionContext.HttpContext.Response.Body.Position = 0;
Assert.Equal("<?xml version=\"1.0\" encoding=\"utf-8\"?>" + XmlAssert.Equal("<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
"<DummyClass xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\">" + "<DummyClass xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\">" +
"<SampleInt>10</SampleInt></DummyClass>", "<SampleInt>10</SampleInt></DummyClass>",
new StreamReader(outputFormatterContext.ActionContext.HttpContext.Response.Body, new StreamReader(outputFormatterContext.ActionContext.HttpContext.Response.Body,
@ -242,7 +242,7 @@ namespace Microsoft.AspNet.Mvc.Xml
// Assert // Assert
Assert.NotNull(outputFormatterContext.ActionContext.HttpContext.Response.Body); Assert.NotNull(outputFormatterContext.ActionContext.HttpContext.Response.Body);
outputFormatterContext.ActionContext.HttpContext.Response.Body.Position = 0; outputFormatterContext.ActionContext.HttpContext.Response.Body.Position = 0;
Assert.Equal("<?xml version=\"1.0\" encoding=\"utf-16\"?>" + XmlAssert.Equal("<?xml version=\"1.0\" encoding=\"utf-16\"?>" +
"<DummyClass xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\">" + "<DummyClass xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\">" +
"<SampleInt>10</SampleInt></DummyClass>", "<SampleInt>10</SampleInt></DummyClass>",
new StreamReader(outputFormatterContext.ActionContext.HttpContext.Response.Body, new StreamReader(outputFormatterContext.ActionContext.HttpContext.Response.Body,
@ -266,7 +266,7 @@ namespace Microsoft.AspNet.Mvc.Xml
outputFormatterContext.ActionContext.HttpContext.Response.Body.Position = 0; outputFormatterContext.ActionContext.HttpContext.Response.Body.Position = 0;
var outputString = new StreamReader(outputFormatterContext.ActionContext.HttpContext.Response.Body, var outputString = new StreamReader(outputFormatterContext.ActionContext.HttpContext.Response.Body,
Encoding.UTF8).ReadToEnd(); Encoding.UTF8).ReadToEnd();
Assert.Equal("<DummyClass xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\">" + XmlAssert.Equal("<DummyClass xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\">" +
"\r\n <SampleInt>10</SampleInt>\r\n</DummyClass>", "\r\n <SampleInt>10</SampleInt>\r\n</DummyClass>",
outputString); outputString);
} }
@ -436,7 +436,7 @@ namespace Microsoft.AspNet.Mvc.Xml
outputFormatterContext.ActionContext.HttpContext.Response.Body.Position = 0; outputFormatterContext.ActionContext.HttpContext.Response.Body.Position = 0;
var actualOutput = new StreamReader( var actualOutput = new StreamReader(
outputFormatterContext.ActionContext.HttpContext.Response.Body, Encoding.UTF8).ReadToEnd(); outputFormatterContext.ActionContext.HttpContext.Response.Body, Encoding.UTF8).ReadToEnd();
Assert.Equal(expectedOutput, actualOutput); XmlAssert.Equal(expectedOutput, actualOutput);
} }
[Fact] [Fact]
@ -480,7 +480,7 @@ namespace Microsoft.AspNet.Mvc.Xml
outputFormatterContext.ActionContext.HttpContext.Response.Body.Position = 0; outputFormatterContext.ActionContext.HttpContext.Response.Body.Position = 0;
var actualOutput = new StreamReader( var actualOutput = new StreamReader(
outputFormatterContext.ActionContext.HttpContext.Response.Body, Encoding.UTF8).ReadToEnd(); outputFormatterContext.ActionContext.HttpContext.Response.Body, Encoding.UTF8).ReadToEnd();
Assert.Equal(expectedOutput, actualOutput); XmlAssert.Equal(expectedOutput, actualOutput);
} }
[Fact] [Fact]
@ -524,7 +524,7 @@ namespace Microsoft.AspNet.Mvc.Xml
outputFormatterContext.ActionContext.HttpContext.Response.Body.Position = 0; outputFormatterContext.ActionContext.HttpContext.Response.Body.Position = 0;
var actualOutput = new StreamReader( var actualOutput = new StreamReader(
outputFormatterContext.ActionContext.HttpContext.Response.Body, Encoding.UTF8).ReadToEnd(); outputFormatterContext.ActionContext.HttpContext.Response.Body, Encoding.UTF8).ReadToEnd();
Assert.Equal(expectedOutput, actualOutput); XmlAssert.Equal(expectedOutput, actualOutput);
} }
private OutputFormatterContext GetOutputFormatterContext(object outputValue, Type outputType, private OutputFormatterContext GetOutputFormatterContext(object outputValue, Type outputType,

View File

@ -62,7 +62,7 @@ namespace Microsoft.AspNet.Mvc.Xml
// Assert // Assert
Assert.NotNull(outputFormatterContext.ActionContext.HttpContext.Response.Body); Assert.NotNull(outputFormatterContext.ActionContext.HttpContext.Response.Body);
outputFormatterContext.ActionContext.HttpContext.Response.Body.Position = 0; outputFormatterContext.ActionContext.HttpContext.Response.Body.Position = 0;
Assert.Equal(expectedOutput, XmlAssert.Equal(expectedOutput,
new StreamReader(outputFormatterContext.ActionContext.HttpContext.Response.Body, Encoding.UTF8) new StreamReader(outputFormatterContext.ActionContext.HttpContext.Response.Body, Encoding.UTF8)
.ReadToEnd()); .ReadToEnd());
Assert.True(outputFormatterContext.ActionContext.HttpContext.Response.Body.CanRead); Assert.True(outputFormatterContext.ActionContext.HttpContext.Response.Body.CanRead);
@ -104,7 +104,7 @@ namespace Microsoft.AspNet.Mvc.Xml
Assert.NotNull(responseStream); Assert.NotNull(responseStream);
responseStream.Position = 0; responseStream.Position = 0;
var actualOutput = new StreamReader(responseStream, Encoding.UTF8).ReadToEnd(); var actualOutput = new StreamReader(responseStream, Encoding.UTF8).ReadToEnd();
Assert.Equal(expectedOutput, actualOutput); XmlAssert.Equal(expectedOutput, actualOutput);
} }
[Fact] [Fact]
@ -121,7 +121,7 @@ namespace Microsoft.AspNet.Mvc.Xml
// Assert // Assert
Assert.NotNull(outputFormatterContext.ActionContext.HttpContext.Response.Body); Assert.NotNull(outputFormatterContext.ActionContext.HttpContext.Response.Body);
outputFormatterContext.ActionContext.HttpContext.Response.Body.Position = 0; outputFormatterContext.ActionContext.HttpContext.Response.Body.Position = 0;
Assert.Equal("<DummyClass xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " + XmlAssert.Equal("<DummyClass xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " +
"xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"><SampleInt>10</SampleInt></DummyClass>", "xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"><SampleInt>10</SampleInt></DummyClass>",
new StreamReader(outputFormatterContext.ActionContext.HttpContext.Response.Body, Encoding.UTF8) new StreamReader(outputFormatterContext.ActionContext.HttpContext.Response.Body, Encoding.UTF8)
.ReadToEnd()); .ReadToEnd());
@ -150,7 +150,7 @@ namespace Microsoft.AspNet.Mvc.Xml
// Assert // Assert
Assert.NotNull(outputFormatterContext.ActionContext.HttpContext.Response.Body); Assert.NotNull(outputFormatterContext.ActionContext.HttpContext.Response.Body);
outputFormatterContext.ActionContext.HttpContext.Response.Body.Position = 0; outputFormatterContext.ActionContext.HttpContext.Response.Body.Position = 0;
Assert.Equal("<TestLevelTwo xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " + XmlAssert.Equal("<TestLevelTwo xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " +
"xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"><SampleString>TestString</SampleString>" + "xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"><SampleString>TestString</SampleString>" +
"<TestOne><sampleString>TestLevelOne string</sampleString>" + "<TestOne><sampleString>TestLevelOne string</sampleString>" +
"<SampleInt>10</SampleInt></TestOne></TestLevelTwo>", "<SampleInt>10</SampleInt></TestOne></TestLevelTwo>",
@ -177,7 +177,7 @@ namespace Microsoft.AspNet.Mvc.Xml
// Assert // Assert
Assert.NotNull(outputFormatterContext.ActionContext.HttpContext.Response.Body); Assert.NotNull(outputFormatterContext.ActionContext.HttpContext.Response.Body);
outputFormatterContext.ActionContext.HttpContext.Response.Body.Position = 0; outputFormatterContext.ActionContext.HttpContext.Response.Body.Position = 0;
Assert.Equal("<?xml version=\"1.0\" encoding=\"utf-8\"?>" + XmlAssert.Equal("<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
"<DummyClass xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " + "<DummyClass xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " +
"xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"><SampleInt>10</SampleInt></DummyClass>", "xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"><SampleInt>10</SampleInt></DummyClass>",
new StreamReader(outputFormatterContext.ActionContext.HttpContext.Response.Body, Encoding.UTF8) new StreamReader(outputFormatterContext.ActionContext.HttpContext.Response.Body, Encoding.UTF8)
@ -200,7 +200,7 @@ namespace Microsoft.AspNet.Mvc.Xml
// Assert // Assert
Assert.NotNull(outputFormatterContext.ActionContext.HttpContext.Response.Body); Assert.NotNull(outputFormatterContext.ActionContext.HttpContext.Response.Body);
outputFormatterContext.ActionContext.HttpContext.Response.Body.Position = 0; outputFormatterContext.ActionContext.HttpContext.Response.Body.Position = 0;
Assert.Equal("<?xml version=\"1.0\" encoding=\"utf-16\"?>" + XmlAssert.Equal("<?xml version=\"1.0\" encoding=\"utf-16\"?>" +
"<DummyClass xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " + "<DummyClass xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " +
"xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"><SampleInt>10</SampleInt></DummyClass>", "xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"><SampleInt>10</SampleInt></DummyClass>",
new StreamReader(outputFormatterContext.ActionContext.HttpContext.Response.Body, new StreamReader(outputFormatterContext.ActionContext.HttpContext.Response.Body,
@ -224,7 +224,7 @@ namespace Microsoft.AspNet.Mvc.Xml
outputFormatterContext.ActionContext.HttpContext.Response.Body.Position = 0; outputFormatterContext.ActionContext.HttpContext.Response.Body.Position = 0;
var outputString = new StreamReader(outputFormatterContext.ActionContext.HttpContext.Response.Body, var outputString = new StreamReader(outputFormatterContext.ActionContext.HttpContext.Response.Body,
Encoding.UTF8).ReadToEnd(); Encoding.UTF8).ReadToEnd();
Assert.Equal("<DummyClass xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " + XmlAssert.Equal("<DummyClass xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " +
"xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\r\n <SampleInt>10</SampleInt>\r\n</DummyClass>", "xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\r\n <SampleInt>10</SampleInt>\r\n</DummyClass>",
outputString); outputString);
} }