99 lines
3.6 KiB
C#
99 lines
3.6 KiB
C#
// 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.Globalization;
|
|
using System.IO;
|
|
using System.Runtime.Serialization;
|
|
using System.Text;
|
|
using System.Xml;
|
|
using Microsoft.AspNet.Mvc.ModelBinding;
|
|
using Microsoft.AspNet.Mvc.Xml;
|
|
using Xunit;
|
|
|
|
namespace Microsoft.AspNet.Mvc
|
|
{
|
|
public class SerializableErrorWrapperTests
|
|
{
|
|
[Fact]
|
|
public void DefaultConstructor_CreatesSerializableError()
|
|
{
|
|
// Arrange and Act
|
|
var wrapper = new SerializableErrorWrapper();
|
|
|
|
// Assert
|
|
Assert.NotNull(wrapper.SerializableError);
|
|
Assert.Empty(wrapper.SerializableError);
|
|
}
|
|
|
|
[Fact]
|
|
public void WrappedSerializableErrorInstance_ReturnedFromProperty()
|
|
{
|
|
// Arrange
|
|
var serializableError = new SerializableError();
|
|
serializableError.Add("key1", "key1-error");
|
|
|
|
// Act
|
|
var wrapper = new SerializableErrorWrapper(serializableError);
|
|
|
|
// Assert
|
|
Assert.NotNull(wrapper.SerializableError);
|
|
Assert.Same(serializableError, wrapper.SerializableError);
|
|
Assert.Equal(1, wrapper.SerializableError.Count);
|
|
Assert.True(wrapper.SerializableError.ContainsKey("key1"));
|
|
Assert.Equal("key1-error", wrapper.SerializableError["key1"]);
|
|
}
|
|
|
|
[Fact]
|
|
public void GetSchema_Returns_Null()
|
|
{
|
|
// Arrange
|
|
var serializableError = new SerializableErrorWrapper(new SerializableError(new ModelStateDictionary()));
|
|
|
|
// Act & Assert
|
|
Assert.Null(serializableError.GetSchema());
|
|
}
|
|
|
|
[Fact]
|
|
public void ReadXml_ReadsSerializableErrorXml()
|
|
{
|
|
// Arrange
|
|
var serializableErrorXml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
|
|
"<Error><key1>Test Error 1 Test Error 2</key1><key2>Test Error 3</key2></Error>";
|
|
var serializer = new DataContractSerializer(typeof(SerializableErrorWrapper));
|
|
|
|
// Act
|
|
var wrapper = (SerializableErrorWrapper)serializer.ReadObject(
|
|
new MemoryStream(Encoding.UTF8.GetBytes(serializableErrorXml)));
|
|
var errors = wrapper.SerializableError;
|
|
|
|
// Assert
|
|
Assert.Equal("Test Error 1 Test Error 2", errors["key1"]);
|
|
Assert.Equal("Test Error 3", errors["key2"]);
|
|
}
|
|
|
|
[Fact]
|
|
public void WriteXml_WritesValidXml()
|
|
{
|
|
// Arrange
|
|
var modelState = new ModelStateDictionary();
|
|
modelState.AddModelError("key1", "Test Error 1");
|
|
modelState.AddModelError("key1", "Test Error 2");
|
|
modelState.AddModelError("key2", "Test Error 3");
|
|
var serializableError = new SerializableError(modelState);
|
|
var outputStream = new MemoryStream();
|
|
|
|
// Act
|
|
using (var xmlWriter = XmlWriter.Create(outputStream))
|
|
{
|
|
var dataContractSerializer = new DataContractSerializer(typeof(SerializableErrorWrapper));
|
|
dataContractSerializer.WriteObject(xmlWriter, new SerializableErrorWrapper(serializableError));
|
|
}
|
|
outputStream.Position = 0;
|
|
var res = new StreamReader(outputStream, Encoding.UTF8).ReadToEnd();
|
|
|
|
// Assert
|
|
Assert.Equal("<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
|
|
"<Error><key1>Test Error 1 Test Error 2</key1><key2>Test Error 3</key2></Error>", res);
|
|
}
|
|
}
|
|
} |