diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Web.Common/Formatters/IgnoreRequiredAttributesResolverUnitTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Web.Common/Formatters/IgnoreRequiredAttributesResolverUnitTests.cs new file mode 100644 index 0000000000..94133c9e27 --- /dev/null +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Web.Common/Formatters/IgnoreRequiredAttributesResolverUnitTests.cs @@ -0,0 +1,41 @@ +using System.ComponentModel.DataAnnotations; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using NUnit.Framework; +using Umbraco.Web.Common.Formatters; + +namespace Umbraco.Tests.UnitTests.Umbraco.Web.Common.Formatters +{ + [TestFixture] + public class IgnoreRequiredAttributesResolverUnitTests + { + + [Test] + public void Test() + { + const string emptyJsonObject = "{}"; + + Assert.Multiple(() => + { + //Ensure the deserialization throws if using default settings + Assert.Throws(() => + JsonConvert.DeserializeObject(emptyJsonObject)); + + var actual = JsonConvert.DeserializeObject(emptyJsonObject,new JsonSerializerSettings + { + ContractResolver = new IgnoreRequiredAttributesResolver() + }); + + Assert.IsNotNull(actual); + Assert.IsNull(actual.Property); + }); + } + + [DataContract(Name = "objectWithRequiredProperty", Namespace = "")] + private class ObjectWithRequiredProperty + { + [DataMember(Name = "property", IsRequired = true)] + public string Property{ get; set; } + } + } +} diff --git a/src/Umbraco.Web.Common/Formatters/IgnoreRequiredAttributesResolver.cs b/src/Umbraco.Web.Common/Formatters/IgnoreRequiredAttributesResolver.cs index d016a023be..49e65d4a3b 100644 --- a/src/Umbraco.Web.Common/Formatters/IgnoreRequiredAttributesResolver.cs +++ b/src/Umbraco.Web.Common/Formatters/IgnoreRequiredAttributesResolver.cs @@ -10,7 +10,6 @@ namespace Umbraco.Web.Common.Formatters { var property = base.CreateProperty(member, memberSerialization); - property.Required = Required.Default; return property;