diff --git a/src/Umbraco.Core/Models/ContentEditing/ContentItemDisplay.cs b/src/Umbraco.Core/Models/ContentEditing/ContentItemDisplay.cs index d1a8d10970..ca4ea3eb94 100644 --- a/src/Umbraco.Core/Models/ContentEditing/ContentItemDisplay.cs +++ b/src/Umbraco.Core/Models/ContentEditing/ContentItemDisplay.cs @@ -1,6 +1,7 @@ using System.ComponentModel; using System.ComponentModel.DataAnnotations; using System.Runtime.Serialization; +using System.Text.Json.Serialization; using Umbraco.Cms.Core.Routing; namespace Umbraco.Cms.Core.Models.ContentEditing; @@ -135,6 +136,7 @@ public class ContentItemDisplay : public DateTime UpdateDate { get; set; } [DataMember(Name = "template")] + [JsonPropertyName("template")] public string? TemplateAlias { get; set; } [DataMember(Name = "templateId")] @@ -172,6 +174,7 @@ public class ContentItemDisplay : public bool IsBlueprint { get; set; } [DataMember(Name = "apps")] + [JsonPropertyName("apps")] public IEnumerable ContentApps { get; set; } /// @@ -200,6 +203,7 @@ public class ContentItemDisplay : /// A collection of extra data that is available for this specific entity/entity type /// [DataMember(Name = "metaData")] + [JsonPropertyName("metaData")] [ReadOnly(true)] public IDictionary AdditionalData { get; private set; } = new Dictionary(); @@ -213,6 +217,7 @@ public class ContentItemDisplay : /// NOTE: The ProperCase is important because when we return ModeState normally it will always be proper case. /// [DataMember(Name = "ModelState")] + [JsonPropertyName("ModelState")] [ReadOnly(true)] public IDictionary Errors { get; set; } diff --git a/src/Umbraco.Core/Models/ContentEditing/Language.cs b/src/Umbraco.Core/Models/ContentEditing/Language.cs index 12ecbc372f..3c58dea942 100644 --- a/src/Umbraco.Core/Models/ContentEditing/Language.cs +++ b/src/Umbraco.Core/Models/ContentEditing/Language.cs @@ -1,5 +1,6 @@ using System.ComponentModel.DataAnnotations; using System.Runtime.Serialization; +using System.Text.Json.Serialization; namespace Umbraco.Cms.Core.Models.ContentEditing; @@ -10,6 +11,7 @@ public class Language public int Id { get; set; } [DataMember(Name = "culture", IsRequired = true)] + [JsonPropertyName("culture")] [Required(AllowEmptyStrings = false)] public string IsoCode { get; set; } = null!; @@ -17,11 +19,14 @@ public class Language public string? Name { get; set; } [DataMember(Name = "isDefault")] + [JsonPropertyName("isDefault")] public bool IsDefault { get; set; } [DataMember(Name = "isMandatory")] + [JsonPropertyName("isMandatory")] public bool IsMandatory { get; set; } [DataMember(Name = "fallbackIsoCode")] + [JsonPropertyName("fallbackIsoCode")] public string? FallbackIsoCode { get; set; } } diff --git a/src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/ColorPickerValueConverter.cs b/src/Umbraco.Core/PropertyEditors/ValueConverters/ColorPickerValueConverter.cs similarity index 69% rename from src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/ColorPickerValueConverter.cs rename to src/Umbraco.Core/PropertyEditors/ValueConverters/ColorPickerValueConverter.cs index 69c1331c24..6b6181f67a 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/ColorPickerValueConverter.cs +++ b/src/Umbraco.Core/PropertyEditors/ValueConverters/ColorPickerValueConverter.cs @@ -1,9 +1,9 @@ // Copyright (c) Umbraco. // See LICENSE for more details. -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; +using System.Text.Json.Serialization; using Umbraco.Cms.Core.Models.PublishedContent; +using Umbraco.Cms.Core.Serialization; using Umbraco.Extensions; namespace Umbraco.Cms.Core.PropertyEditors.ValueConverters; @@ -11,6 +11,13 @@ namespace Umbraco.Cms.Core.PropertyEditors.ValueConverters; [DefaultPropertyValueConverter] public class ColorPickerValueConverter : PropertyValueConverterBase { + private readonly IJsonSerializer _jsonSerializer; + + public ColorPickerValueConverter(IJsonSerializer jsonSerializer) + { + _jsonSerializer = jsonSerializer; + } + public override bool IsConverter(IPublishedPropertyType propertyType) => propertyType.EditorAlias.InvariantEquals(Constants.PropertyEditors.Aliases.ColorPicker); @@ -24,36 +31,25 @@ public class ColorPickerValueConverter : PropertyValueConverterBase { var useLabel = UseLabel(propertyType); - if (source == null) + if (source is null) { return useLabel ? null : string.Empty; } - var ssource = source.ToString()!; - if (ssource.DetectIsJson()) + var value = source.ToString()!; + if (value.DetectIsJson()) { - try - { - JObject? jo = JsonConvert.DeserializeObject(ssource); - if (useLabel) - { - return new PickedColor(jo!["value"]!.ToString(), jo["label"]!.ToString()); - } - - return jo!["value"]!.ToString(); - } - catch - { - /* not json finally */ - } + PickedColor? convertedValue = _jsonSerializer.Deserialize(value); + return useLabel ? convertedValue : convertedValue?.Color; } + // This seems to be something old old where it may not be json at all. if (useLabel) { - return new PickedColor(ssource, ssource); + return new PickedColor(value, value); } - return ssource; + return value; } private bool UseLabel(IPublishedPropertyType propertyType) => ConfigurationEditor @@ -67,6 +63,7 @@ public class ColorPickerValueConverter : PropertyValueConverterBase Label = label; } + [JsonPropertyName("value")] public string Color { get; } public string Label { get; } diff --git a/src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/FlexibleDropdownPropertyValueConverter.cs b/src/Umbraco.Core/PropertyEditors/ValueConverters/FlexibleDropdownPropertyValueConverter.cs similarity index 75% rename from src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/FlexibleDropdownPropertyValueConverter.cs rename to src/Umbraco.Core/PropertyEditors/ValueConverters/FlexibleDropdownPropertyValueConverter.cs index f4f9e3fdea..3e2f5e73c9 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/FlexibleDropdownPropertyValueConverter.cs +++ b/src/Umbraco.Core/PropertyEditors/ValueConverters/FlexibleDropdownPropertyValueConverter.cs @@ -1,30 +1,38 @@ // Copyright (c) Umbraco. // See LICENSE for more details. -using Newtonsoft.Json; using Umbraco.Cms.Core.Models.PublishedContent; +using Umbraco.Cms.Core.Serialization; namespace Umbraco.Cms.Core.PropertyEditors.ValueConverters; [DefaultPropertyValueConverter] public class FlexibleDropdownPropertyValueConverter : PropertyValueConverterBase { + private readonly IJsonSerializer _jsonSerializer; + + public FlexibleDropdownPropertyValueConverter(IJsonSerializer jsonSerializer) => _jsonSerializer = jsonSerializer; + public override bool IsConverter(IPublishedPropertyType propertyType) => propertyType.EditorAlias.Equals(Constants.PropertyEditors.Aliases.DropDownListFlexible); public override object ConvertSourceToIntermediate(IPublishedElement owner, IPublishedPropertyType propertyType, object? source, bool preview) { - if (source == null) + if (source is null) { return Array.Empty(); } - return JsonConvert.DeserializeObject(source.ToString()!) ?? Array.Empty(); + var sourceString = source.ToString(); + + return string.IsNullOrWhiteSpace(sourceString) + ? Array.Empty() + : _jsonSerializer.Deserialize(source.ToString()!) ?? Array.Empty(); } public override object? ConvertIntermediateToObject(IPublishedElement owner, IPublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object? inter, bool preview) { - if (inter == null) + if (inter is null) { return null; } diff --git a/src/Umbraco.Core/Serialization/IJsonSerializer.cs b/src/Umbraco.Core/Serialization/IJsonSerializer.cs index 889dbbd0a0..86cf54abb5 100644 --- a/src/Umbraco.Core/Serialization/IJsonSerializer.cs +++ b/src/Umbraco.Core/Serialization/IJsonSerializer.cs @@ -5,7 +5,4 @@ public interface IJsonSerializer string Serialize(object? input); T? Deserialize(string input); - - [Obsolete("This will be removed in v13")] - T? DeserializeSubset(string input, string key); } diff --git a/src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.CoreServices.cs b/src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.CoreServices.cs index 307f153099..5f0f86e2ad 100644 --- a/src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.CoreServices.cs +++ b/src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.CoreServices.cs @@ -125,8 +125,8 @@ public static partial class UmbracoBuilderExtensions builder.Services.AddScoped(); - builder.Services.AddSingleton(); - builder.Services.AddSingleton(); + builder.Services.AddSingleton(); + builder.Services.AddSingleton(); builder.Services.AddSingleton(); // register database builder diff --git a/src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/ImageCropperValueConverter.cs b/src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/ImageCropperValueConverter.cs index 1f6dfc9578..60594fd9e8 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/ImageCropperValueConverter.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/ImageCropperValueConverter.cs @@ -1,12 +1,13 @@ // Copyright (c) Umbraco. // See LICENSE for more details. -using System.Globalization; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; -using Newtonsoft.Json; +using Umbraco.Cms.Core.DependencyInjection; using Umbraco.Cms.Core.Models.DeliveryApi; using Umbraco.Cms.Core.Models.PublishedContent; using Umbraco.Cms.Core.PropertyEditors.DeliveryApi; +using Umbraco.Cms.Core.Serialization; using Umbraco.Extensions; namespace Umbraco.Cms.Core.PropertyEditors.ValueConverters; @@ -17,15 +18,21 @@ namespace Umbraco.Cms.Core.PropertyEditors.ValueConverters; [DefaultPropertyValueConverter(typeof(JsonValueConverter))] public class ImageCropperValueConverter : PropertyValueConverterBase, IDeliveryApiPropertyValueConverter { - private static readonly JsonSerializerSettings _imageCropperValueJsonSerializerSettings = new() - { - Culture = CultureInfo.InvariantCulture, - FloatParseHandling = FloatParseHandling.Decimal, - }; + private readonly IJsonSerializer _jsonSerializer; private readonly ILogger _logger; - public ImageCropperValueConverter(ILogger logger) => _logger = logger; + public ImageCropperValueConverter(ILogger logger, IJsonSerializer jsonSerializer) + { + _logger = logger; + _jsonSerializer = jsonSerializer; + } + + [Obsolete("Use the constructor specifying all dependencies, scheduled for removal in V16")] + public ImageCropperValueConverter(ILogger logger) + : this(logger, StaticServiceProvider.Instance.GetRequiredService()) + { + } /// public override bool IsConverter(IPublishedPropertyType propertyType) @@ -52,9 +59,7 @@ public class ImageCropperValueConverter : PropertyValueConverterBase, IDeliveryA ImageCropperValue? value; try { - value = JsonConvert.DeserializeObject( - sourceString, - _imageCropperValueJsonSerializerSettings); + value = _jsonSerializer.Deserialize(sourceString); } catch (Exception ex) { diff --git a/src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/JsonValueConverter.cs b/src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/JsonValueConverter.cs index e6345ab61d..a12d4a82f8 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/JsonValueConverter.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/JsonValueConverter.cs @@ -1,10 +1,9 @@ // Copyright (c) Umbraco. // See LICENSE for more details. +using System.Text.Json; using System.Text.Json.Nodes; using Microsoft.Extensions.Logging; -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; using Umbraco.Cms.Core.Models.PublishedContent; using Umbraco.Cms.Core.PropertyEditors.DeliveryApi; using Umbraco.Extensions; @@ -46,8 +45,9 @@ public class JsonValueConverter : PropertyValueConverterBase, IDeliveryApiProper && editor.GetValueEditor().ValueType.InvariantEquals(ValueTypes.Json) && _excludedPropertyEditors.Contains(propertyType.EditorAlias) == false; + // We return a JsonDocument here because it's readonly and faster than JsonNode. public override Type GetPropertyValueType(IPublishedPropertyType propertyType) - => typeof(JToken); + => typeof(JsonDocument); public override PropertyCacheLevel GetPropertyCacheLevel(IPublishedPropertyType propertyType) => PropertyCacheLevel.Element; @@ -65,8 +65,7 @@ public class JsonValueConverter : PropertyValueConverterBase, IDeliveryApiProper { try { - var obj = JsonConvert.DeserializeObject(sourceString); - return obj; + return JsonDocument.Parse(sourceString); } catch (Exception ex) { @@ -85,7 +84,7 @@ public class JsonValueConverter : PropertyValueConverterBase, IDeliveryApiProper => typeof(JsonNode); public object? ConvertIntermediateToDeliveryApiObject(IPublishedElement owner, IPublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object? inter, bool preview, bool expanding) - => inter is JObject jObject - ? JsonNode.Parse(jObject.ToString()) - : null; + => inter is not JsonDocument jsonDocument + ? null + : JsonNode.Parse(jsonDocument.RootElement.ToString()); } diff --git a/src/Umbraco.Infrastructure/Serialization/ConfigurationEditorJsonSerializer.cs b/src/Umbraco.Infrastructure/Serialization/ConfigurationEditorJsonSerializer.cs deleted file mode 100644 index 8c94cb53c1..0000000000 --- a/src/Umbraco.Infrastructure/Serialization/ConfigurationEditorJsonSerializer.cs +++ /dev/null @@ -1,42 +0,0 @@ -using System.Reflection; -using Newtonsoft.Json; -using Newtonsoft.Json.Serialization; -using Umbraco.Cms.Core.PropertyEditors; -using Umbraco.Cms.Core.Serialization; - -namespace Umbraco.Cms.Infrastructure.Serialization; - -public class ConfigurationEditorJsonSerializer : JsonNetSerializer, IConfigurationEditorJsonSerializer -{ - public ConfigurationEditorJsonSerializer() - { - Settings.Converters.Add(new FuzzyBooleanConverter()); - Settings.ContractResolver = new ConfigurationCustomContractResolver(); - } - - private class ConfigurationCustomContractResolver : DefaultContractResolver - { - protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization) - { - // base.CreateProperty deals with [JsonProperty("name")] - JsonProperty property = base.CreateProperty(member, memberSerialization); - - // override with our custom attribute, if any - ConfigurationFieldAttribute? attribute = member.GetCustomAttribute(); - if (attribute != null) - { - property.PropertyName = attribute.Key; - } - - // for value types, - // don't try to deserialize nulls (in legacy json) - // no impact on serialization (value cannot be null) - if (member is PropertyInfo propertyInfo && propertyInfo.PropertyType.IsValueType) - { - property.NullValueHandling = NullValueHandling.Ignore; - } - - return property; - } - } -} diff --git a/src/Umbraco.Infrastructure/Serialization/ContextualConfigurationEditorJsonSerializer.cs b/src/Umbraco.Infrastructure/Serialization/ContextualConfigurationEditorJsonSerializer.cs deleted file mode 100644 index 6f735a875d..0000000000 --- a/src/Umbraco.Infrastructure/Serialization/ContextualConfigurationEditorJsonSerializer.cs +++ /dev/null @@ -1,47 +0,0 @@ -using Umbraco.Cms.Core.Serialization; -using Umbraco.Cms.Core.Web; - -namespace Umbraco.Cms.Infrastructure.Serialization; - -public class ContextualConfigurationEditorJsonSerializer : IConfigurationEditorJsonSerializer -{ - private readonly IRequestAccessor _requestAccessor; - private readonly ConfigurationEditorJsonSerializer _configurationEditorJsonSerializer; - private readonly SystemTextConfigurationEditorJsonSerializer _systemTextConfigurationEditorJsonSerializer; - - public ContextualConfigurationEditorJsonSerializer(IRequestAccessor requestAccessor) - { - _requestAccessor = requestAccessor; - _configurationEditorJsonSerializer = new ConfigurationEditorJsonSerializer(); - _systemTextConfigurationEditorJsonSerializer = new SystemTextConfigurationEditorJsonSerializer(); - } - - public string Serialize(object? input) => ContextualizedSerializer().Serialize(input); - - public T? Deserialize(string input) => ContextualizedSerializer().Deserialize(input); - - public T? DeserializeSubset(string input, string key) => throw new NotSupportedException(); - - private IConfigurationEditorJsonSerializer ContextualizedSerializer() - { - try - { - var requestedPath = _requestAccessor.GetRequestUrl()?.AbsolutePath; - if (requestedPath != null) - { - // add white listed paths for the System.Text.Json config serializer here - // - always use it for the new management API - if (requestedPath.Contains("/umbraco/management/api/")) - { - return _systemTextConfigurationEditorJsonSerializer; - } - } - } - catch (Exception ex) - { - // ignore - this whole thing is a temporary workaround, let's not make a fuss - } - - return _configurationEditorJsonSerializer; - } -} diff --git a/src/Umbraco.Infrastructure/Serialization/ContextualJsonSerializer.cs b/src/Umbraco.Infrastructure/Serialization/ContextualJsonSerializer.cs deleted file mode 100644 index 2880611ccb..0000000000 --- a/src/Umbraco.Infrastructure/Serialization/ContextualJsonSerializer.cs +++ /dev/null @@ -1,50 +0,0 @@ -using Umbraco.Cms.Core.Serialization; -using Umbraco.Cms.Core.Web; - -namespace Umbraco.Cms.Infrastructure.Serialization; - -// FIXME: move away from Json.NET; this is a temporary fix that attempts to use System.Text.Json for management API operations, Json.NET for other operations -public class ContextualJsonSerializer : IJsonSerializer -{ - private readonly IRequestAccessor _requestAccessor; - private readonly IJsonSerializer _jsonNetSerializer; - private readonly IJsonSerializer _systemTextSerializer; - - public ContextualJsonSerializer(IRequestAccessor requestAccessor) - { - _requestAccessor = requestAccessor; - _jsonNetSerializer = new JsonNetSerializer(); - _systemTextSerializer = new SystemTextJsonSerializer(); - } - - public string Serialize(object? input) => ContextualizedSerializer().Serialize(input); - - public T? Deserialize(string input) => ContextualizedSerializer().Deserialize(input); - - public T? DeserializeSubset(string input, string key) => throw new NotSupportedException(); - - private IJsonSerializer ContextualizedSerializer() - { - try - { - var requestedPath = _requestAccessor.GetRequestUrl()?.AbsolutePath; - if (requestedPath != null) - { - // add white listed paths for the System.Text.Json config serializer here - // - always use it for the new management API - if (requestedPath.Contains("/umbraco/management/api/")) - { - return _systemTextSerializer; - } - } - } - catch (Exception ex) - { - // ignore - this whole thing is a temporary workaround, let's not make a fuss - } - - return _jsonNetSerializer; - } -} - - diff --git a/src/Umbraco.Infrastructure/Serialization/JsonNetSerializer.cs b/src/Umbraco.Infrastructure/Serialization/JsonNetSerializer.cs deleted file mode 100644 index 8057ba6168..0000000000 --- a/src/Umbraco.Infrastructure/Serialization/JsonNetSerializer.cs +++ /dev/null @@ -1,35 +0,0 @@ -using Newtonsoft.Json; -using Newtonsoft.Json.Converters; -using Newtonsoft.Json.Linq; -using Umbraco.Cms.Core.Serialization; - -namespace Umbraco.Cms.Infrastructure.Serialization; - -public class JsonNetSerializer : IJsonSerializer -{ - protected JsonSerializerSettings Settings { get; } = new() - { - Converters = new List { new StringEnumConverter() }, - Formatting = Formatting.None, - NullValueHandling = NullValueHandling.Ignore, - }; - - public string Serialize(object? input) => JsonConvert.SerializeObject(input, Settings); - - public T? Deserialize(string input) => JsonConvert.DeserializeObject(input, Settings); - - public T? DeserializeSubset(string input, string key) - { - ArgumentNullException.ThrowIfNull(key); - - JObject? root = Deserialize(input); - JToken? jToken = root?.SelectToken(key); - - return jToken switch - { - JArray jArray => jArray.ToObject(), - JObject jObject => jObject.ToObject(), - _ => jToken is null ? default : jToken.Value(), - }; - } -} diff --git a/src/Umbraco.Infrastructure/Serialization/SystemTextConfigurationEditorJsonSerializer.cs b/src/Umbraco.Infrastructure/Serialization/SystemTextConfigurationEditorJsonSerializer.cs index 1141622cb0..102b6a72fa 100644 --- a/src/Umbraco.Infrastructure/Serialization/SystemTextConfigurationEditorJsonSerializer.cs +++ b/src/Umbraco.Infrastructure/Serialization/SystemTextConfigurationEditorJsonSerializer.cs @@ -33,6 +33,4 @@ public class SystemTextConfigurationEditorJsonSerializer : IConfigurationEditorJ public string Serialize(object? input) => JsonSerializer.Serialize(input, _jsonSerializerOptions); public T? Deserialize(string input) => JsonSerializer.Deserialize(input, _jsonSerializerOptions); - - public T? DeserializeSubset(string input, string key) => throw new NotSupportedException(); } diff --git a/src/Umbraco.Infrastructure/Serialization/SystemTextJsonSerializer.cs b/src/Umbraco.Infrastructure/Serialization/SystemTextJsonSerializer.cs index cff63cf552..90b72e2db3 100644 --- a/src/Umbraco.Infrastructure/Serialization/SystemTextJsonSerializer.cs +++ b/src/Umbraco.Infrastructure/Serialization/SystemTextJsonSerializer.cs @@ -21,6 +21,4 @@ public class SystemTextJsonSerializer : IJsonSerializer public string Serialize(object? input) => JsonSerializer.Serialize(input, _jsonSerializerOptions); public T? Deserialize(string input) => JsonSerializer.Deserialize(input, _jsonSerializerOptions); - - public T? DeserializeSubset(string input, string key) => throw new NotSupportedException(); } diff --git a/src/Umbraco.Web.Common/Filters/JsonDateTimeFormatAttribute.cs b/src/Umbraco.Web.Common/Filters/JsonDateTimeFormatAttribute.cs index 0e0cf5587d..7e1b08e0e4 100644 --- a/src/Umbraco.Web.Common/Filters/JsonDateTimeFormatAttribute.cs +++ b/src/Umbraco.Web.Common/Filters/JsonDateTimeFormatAttribute.cs @@ -24,7 +24,7 @@ public sealed class JsonDateTimeFormatAttribute : TypeFilterAttribute private class JsonDateTimeFormatFilter : IResultFilter { private readonly ArrayPool _arrayPool; - private readonly string _format = "yyyy-MM-dd HH:mm:ss"; + private readonly string _format = "yyyy-MM-ddTHH:mm:ss"; private readonly MvcOptions _options; public JsonDateTimeFormatFilter(ArrayPool arrayPool, IOptionsSnapshot options) diff --git a/tests/Umbraco.TestData/UmbracoTestDataController.cs b/tests/Umbraco.TestData/UmbracoTestDataController.cs index 5fe7e0e254..794ea6cfa2 100644 --- a/tests/Umbraco.TestData/UmbracoTestDataController.cs +++ b/tests/Umbraco.TestData/UmbracoTestDataController.cs @@ -299,7 +299,7 @@ public class UmbracoTestDataController : SurfaceController throw new InvalidOperationException($"No {editorAlias} editor found"); } - var serializer = new ConfigurationEditorJsonSerializer(); + var serializer = new SystemTextConfigurationEditorJsonSerializer(); dt = new DataType(editor, serializer) { diff --git a/tests/Umbraco.Tests.Common/Builders/DataTypeBuilder.cs b/tests/Umbraco.Tests.Common/Builders/DataTypeBuilder.cs index ea3da76b42..9df232a5fd 100644 --- a/tests/Umbraco.Tests.Common/Builders/DataTypeBuilder.cs +++ b/tests/Umbraco.Tests.Common/Builders/DataTypeBuilder.cs @@ -135,7 +135,7 @@ public class DataTypeBuilder var creatorId = _creatorId ?? 1; var databaseType = _databaseType ?? ValueStorageType.Ntext; var sortOrder = _sortOrder ?? 0; - var serializer = new ConfigurationEditorJsonSerializer(); + var serializer = new SystemTextConfigurationEditorJsonSerializer(); return new DataType(editor, serializer, parentId) { diff --git a/tests/Umbraco.Tests.Common/Published/PublishedContentXmlAdapter.cs b/tests/Umbraco.Tests.Common/Published/PublishedContentXmlAdapter.cs index ea02bce244..d7eb030140 100644 --- a/tests/Umbraco.Tests.Common/Published/PublishedContentXmlAdapter.cs +++ b/tests/Umbraco.Tests.Common/Published/PublishedContentXmlAdapter.cs @@ -45,7 +45,7 @@ public static class PublishedContentXmlAdapter { // use the label data type for all data for these tests except in the case // where a property is named 'content', in which case use the RTE. - var serializer = new ConfigurationEditorJsonSerializer(); + var serializer = new SystemTextConfigurationEditorJsonSerializer(); var labelDataType = new DataType(new VoidEditor("Label", Mock.Of()), serializer) { Id = 3 }; var rteDataType = new DataType(new VoidEditor("RTE", Mock.Of()), serializer) { Id = 4 }; diff --git a/tests/Umbraco.Tests.Common/TestHelperBase.cs b/tests/Umbraco.Tests.Common/TestHelperBase.cs index 844a25e8c6..b44d9c2e00 100644 --- a/tests/Umbraco.Tests.Common/TestHelperBase.cs +++ b/tests/Umbraco.Tests.Common/TestHelperBase.cs @@ -137,7 +137,7 @@ public abstract class TestHelperBase } } - public IJsonSerializer JsonSerializer { get; } = new JsonNetSerializer(); + public IJsonSerializer JsonSerializer { get; } = new SystemTextJsonSerializer(); public IVariationContextAccessor VariationContextAccessor { get; } = new TestVariationContextAccessor(); diff --git a/tests/Umbraco.Tests.Common/TestHelpers/MockedValueEditors.cs b/tests/Umbraco.Tests.Common/TestHelpers/MockedValueEditors.cs index e309a5f232..3051385ca1 100644 --- a/tests/Umbraco.Tests.Common/TestHelpers/MockedValueEditors.cs +++ b/tests/Umbraco.Tests.Common/TestHelpers/MockedValueEditors.cs @@ -17,7 +17,7 @@ public class MockedValueEditors return new DataValueEditor( Mock.Of(), - new JsonNetSerializer(), + new SystemTextJsonSerializer(), Mock.Of(), new DataEditorAttribute(name) { ValueType = valueType }); } diff --git a/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/TemplateRepositoryTest.cs b/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/TemplateRepositoryTest.cs index ce267555e4..8e4a68af70 100644 --- a/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/TemplateRepositoryTest.cs +++ b/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/TemplateRepositoryTest.cs @@ -260,7 +260,7 @@ public class TemplateRepositoryTest : UmbracoIntegrationTest { var templateRepository = CreateRepository(provider); var globalSettings = new GlobalSettings(); - var serializer = new JsonNetSerializer(); + var serializer = new SystemTextJsonSerializer(); var tagRepository = new TagRepository(scopeAccessor, AppCaches.Disabled, LoggerFactory.CreateLogger()); var commonRepository = new ContentTypeCommonRepository(scopeAccessor, templateRepository, AppCaches, ShortStringHelper); diff --git a/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/UserRepositoryTest.cs b/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/UserRepositoryTest.cs index fc37f72c79..58a1c73019 100644 --- a/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/UserRepositoryTest.cs +++ b/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/UserRepositoryTest.cs @@ -51,7 +51,7 @@ public class UserRepositoryTest : UmbracoIntegrationTest Mappers, Options.Create(GlobalSettings), Options.Create(new UserPasswordConfigurationSettings()), - new JsonNetSerializer(), + new SystemTextJsonSerializer(), mockRuntimeState.Object); return repository; } @@ -157,7 +157,7 @@ public class UserRepositoryTest : UmbracoIntegrationTest Mock.Of(), Options.Create(GlobalSettings), Options.Create(new UserPasswordConfigurationSettings()), - new JsonNetSerializer(), + new SystemTextJsonSerializer(), mockRuntimeState.Object); repository2.Delete(user); diff --git a/tests/Umbraco.Tests.UnitTests/TestHelpers/PublishedSnapshotServiceTestBase.cs b/tests/Umbraco.Tests.UnitTests/TestHelpers/PublishedSnapshotServiceTestBase.cs index 46f950ee60..54b6abea9a 100644 --- a/tests/Umbraco.Tests.UnitTests/TestHelpers/PublishedSnapshotServiceTestBase.cs +++ b/tests/Umbraco.Tests.UnitTests/TestHelpers/PublishedSnapshotServiceTestBase.cs @@ -159,7 +159,7 @@ public class PublishedSnapshotServiceTestBase protected static DataType[] GetDefaultDataTypes() { - var serializer = new ConfigurationEditorJsonSerializer(); + var serializer = new SystemTextConfigurationEditorJsonSerializer(); // create data types, property types and content types var dataType = diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/DeliveryApi/ImageCropperValueConverterTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/DeliveryApi/ImageCropperValueConverterTests.cs index fedb71cac6..fc70ae5f19 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/DeliveryApi/ImageCropperValueConverterTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/DeliveryApi/ImageCropperValueConverterTests.cs @@ -29,10 +29,10 @@ public class ImageCropperValueConverterTests : PropertyValueConverterTests var publishedPropertyType = new Mock(); publishedPropertyType.SetupGet(p => p.DataType).Returns(publishedDataType); - var valueConverter = new ImageCropperValueConverter(Mock.Of>()); + var valueConverter = new ImageCropperValueConverter(Mock.Of>(), new SystemTextJsonSerializer()); Assert.AreEqual(typeof(ApiImageCropperValue), valueConverter.GetDeliveryApiPropertyValueType(publishedPropertyType.Object)); - var serializer = new JsonNetSerializer(); + var serializer = new SystemTextJsonSerializer(); var source = serializer.Serialize(new ImageCropperValue { Src = "/some/file.jpg", diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/DeliveryApi/MediaPickerWithCropsValueConverterTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/DeliveryApi/MediaPickerWithCropsValueConverterTests.cs index 365e48a325..c1a0f6a7c2 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/DeliveryApi/MediaPickerWithCropsValueConverterTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/DeliveryApi/MediaPickerWithCropsValueConverterTests.cs @@ -16,7 +16,7 @@ public class MediaPickerWithCropsValueConverterTests : PropertyValueConverterTes { private MediaPickerWithCropsValueConverter MediaPickerWithCropsValueConverter() { - var serializer = new JsonNetSerializer(); + var serializer = new SystemTextJsonSerializer(); var publishedValueFallback = Mock.Of(); var apiUrlProvider = new ApiMediaUrlProvider(PublishedUrlProvider); var apiMediaWithCropsBuilder = new ApiMediaWithCropsBuilder( @@ -40,7 +40,7 @@ public class MediaPickerWithCropsValueConverterTests : PropertyValueConverterTes var publishedPropertyType = SetupMediaPropertyType(false); var mediaKey = SetupMedia("My media", ".jpg", 200, 400, "My alt text", 800); - var serializer = new JsonNetSerializer(); + var serializer = new SystemTextJsonSerializer(); var valueConverter = MediaPickerWithCropsValueConverter(); Assert.AreEqual(typeof(IEnumerable), valueConverter.GetDeliveryApiPropertyValueType(publishedPropertyType)); @@ -84,7 +84,7 @@ public class MediaPickerWithCropsValueConverterTests : PropertyValueConverterTes var mediaKey1 = SetupMedia("My media", ".jpg", 200, 400, "My alt text", 800); var mediaKey2 = SetupMedia("My other media", ".png", 800, 600, "My other alt text", 200); - var serializer = new JsonNetSerializer(); + var serializer = new SystemTextJsonSerializer(); var valueConverter = MediaPickerWithCropsValueConverter(); Assert.AreEqual(typeof(IEnumerable), valueConverter.GetDeliveryApiPropertyValueType(publishedPropertyType)); @@ -166,7 +166,7 @@ public class MediaPickerWithCropsValueConverterTests : PropertyValueConverterTes }; var mediaKey = SetupMedia("Some media", ".123", 123, 456, "My alt text", 789, mediaCrops); - var serializer = new JsonNetSerializer(); + var serializer = new SystemTextJsonSerializer(); var valueConverter = MediaPickerWithCropsValueConverter(); Assert.AreEqual(typeof(IEnumerable), valueConverter.GetDeliveryApiPropertyValueType(publishedPropertyType)); @@ -226,7 +226,7 @@ public class MediaPickerWithCropsValueConverterTests : PropertyValueConverterTes }; var mediaKey = SetupMedia("Some media", ".123", 123, 456, "My alt text", 789, mediaCrops); - var serializer = new JsonNetSerializer(); + var serializer = new SystemTextJsonSerializer(); var valueConverter = MediaPickerWithCropsValueConverter(); Assert.AreEqual(typeof(IEnumerable), valueConverter.GetDeliveryApiPropertyValueType(publishedPropertyType)); diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/DeliveryApi/MultiUrlPickerValueConverterTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/DeliveryApi/MultiUrlPickerValueConverterTests.cs index a3bd140ce6..74f269f0ea 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/DeliveryApi/MultiUrlPickerValueConverterTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/DeliveryApi/MultiUrlPickerValueConverterTests.cs @@ -306,5 +306,5 @@ public class MultiUrlPickerValueConverterTests : PropertyValueConverterTests routeBuilder); } - private IJsonSerializer Serializer() => new JsonNetSerializer(); + private IJsonSerializer Serializer() => new SystemTextJsonSerializer(); } diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/DeliveryApi/OutputExpansionStrategyTestBase.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/DeliveryApi/OutputExpansionStrategyTestBase.cs index 44ea797058..90f78a225e 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/DeliveryApi/OutputExpansionStrategyTestBase.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/DeliveryApi/OutputExpansionStrategyTestBase.cs @@ -386,7 +386,7 @@ public abstract class OutputExpansionStrategyTestBase : PropertyValueConverterTe var publishedValueFallback = Mock.Of(); var apiMediaWithCropsBuilder = new ApiMediaWithCropsBuilder(mediaBuilder, publishedValueFallback); - MediaPickerWithCropsValueConverter mediaPickerValueConverter = new MediaPickerWithCropsValueConverter(PublishedSnapshotAccessor, PublishedUrlProvider, publishedValueFallback, new JsonNetSerializer(), apiMediaWithCropsBuilder); + MediaPickerWithCropsValueConverter mediaPickerValueConverter = new MediaPickerWithCropsValueConverter(PublishedSnapshotAccessor, PublishedUrlProvider, publishedValueFallback, new SystemTextJsonSerializer(), apiMediaWithCropsBuilder); var mediaPickerPropertyType = SetupPublishedPropertyType(mediaPickerValueConverter, propertyTypeAlias, Constants.PropertyEditors.Aliases.MediaPicker3, new MediaPicker3Configuration()); return new PublishedElementPropertyBase(mediaPickerPropertyType, parent, false, PropertyCacheLevel.None, new GuidUdi(Constants.UdiEntityType.Media, pickedMediaKey).ToString()); @@ -394,7 +394,7 @@ public abstract class OutputExpansionStrategyTestBase : PropertyValueConverterTe internal PublishedElementPropertyBase CreateMediaPicker3Property(IPublishedElement parent, Guid pickedMediaKey, string propertyTypeAlias, IApiMediaBuilder mediaBuilder) { - var serializer = new JsonNetSerializer(); + var serializer = new SystemTextJsonSerializer(); var value = serializer.Serialize(new[] { new MediaPicker3PropertyEditor.MediaPicker3PropertyValueEditor.MediaWithCropsDto @@ -406,7 +406,7 @@ public abstract class OutputExpansionStrategyTestBase : PropertyValueConverterTe var publishedValueFallback = Mock.Of(); var apiMediaWithCropsBuilder = new ApiMediaWithCropsBuilder(mediaBuilder, publishedValueFallback); - MediaPickerWithCropsValueConverter mediaPickerValueConverter = new MediaPickerWithCropsValueConverter(PublishedSnapshotAccessor, PublishedUrlProvider, publishedValueFallback, new JsonNetSerializer(), apiMediaWithCropsBuilder); + MediaPickerWithCropsValueConverter mediaPickerValueConverter = new MediaPickerWithCropsValueConverter(PublishedSnapshotAccessor, PublishedUrlProvider, publishedValueFallback, new SystemTextJsonSerializer(), apiMediaWithCropsBuilder); var mediaPickerPropertyType = SetupPublishedPropertyType(mediaPickerValueConverter, propertyTypeAlias, Constants.PropertyEditors.Aliases.MediaPicker3, new MediaPicker3Configuration()); return new PublishedElementPropertyBase(mediaPickerPropertyType, parent, false, PropertyCacheLevel.None, value); diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Manifest/LegacyManifestParserTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Manifest/LegacyManifestParserTests.cs index 219d74c00a..132103403d 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Manifest/LegacyManifestParserTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Manifest/LegacyManifestParserTests.cs @@ -43,7 +43,7 @@ public class LegacyManifestParserTests loggerFactory.CreateLogger(), _ioHelper, TestHelper.GetHostingEnvironment(), - new JsonNetSerializer(), + new SystemTextJsonSerializer(), Mock.Of(), Mock.Of(), Mock.Of(), diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Models/VariationTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Models/VariationTests.cs index ecaaa1b61e..2598f0a559 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Models/VariationTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Models/VariationTests.cs @@ -630,14 +630,14 @@ public class VariationTests => x.Create(It.IsAny()) == new TextOnlyValueEditor( attribute, Mock.Of(), - new JsonNetSerializer(), + new SystemTextJsonSerializer(), Mock.Of())); var textBoxEditor = new TextboxPropertyEditor( dataValueEditorFactory, ioHelper); - var serializer = new ConfigurationEditorJsonSerializer(); + var serializer = new SystemTextConfigurationEditorJsonSerializer(); var mockDataTypeService = new Mock(); Mock.Get(dataTypeService).Setup(x => x.GetDataType(It.Is(y => y == Constants.DataTypes.Textbox))) diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/BlockGridPropertyValueConverterTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/BlockGridPropertyValueConverterTests.cs index 2d65ff5093..2187731f5a 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/BlockGridPropertyValueConverterTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/BlockGridPropertyValueConverterTests.cs @@ -36,7 +36,7 @@ public class BlockGridPropertyValueConverterTests : BlockPropertyValueConverterT var editor = new BlockGridPropertyValueConverter( Mock.Of(), new BlockEditorConverter(publishedSnapshotAccessor, publishedModelFactory), - new JsonNetSerializer(), + new SystemTextJsonSerializer(), new ApiElementBuilder(Mock.Of()), new BlockGridPropertyValueConstructorCache()); return editor; diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/ConvertersTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/ConvertersTests.cs index 0e8138e60c..031d229a86 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/ConvertersTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/ConvertersTests.cs @@ -61,7 +61,7 @@ public class ConvertersTests var converters = registerFactory.GetRequiredService(); - var serializer = new ConfigurationEditorJsonSerializer(); + var serializer = new SystemTextConfigurationEditorJsonSerializer(); var dataTypeServiceMock = new Mock(); var dataType1 = new DataType( new VoidEditor( diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/DataValueReferenceFactoryCollectionTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/DataValueReferenceFactoryCollectionTests.cs index 7e9cc1ba85..cfaefed8b1 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/DataValueReferenceFactoryCollectionTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/DataValueReferenceFactoryCollectionTests.cs @@ -56,7 +56,7 @@ public class DataValueReferenceFactoryCollectionTests var trackedUdi2 = Udi.Create(Constants.UdiEntityType.Media, Guid.NewGuid()).ToString(); var trackedUdi3 = Udi.Create(Constants.UdiEntityType.Media, Guid.NewGuid()).ToString(); var trackedUdi4 = Udi.Create(Constants.UdiEntityType.Media, Guid.NewGuid()).ToString(); - var serializer = new ConfigurationEditorJsonSerializer(); + var serializer = new SystemTextConfigurationEditorJsonSerializer(); var property = new Property( new PropertyType(ShortStringHelper, new DataType(labelEditor, serializer)) @@ -100,7 +100,7 @@ public class DataValueReferenceFactoryCollectionTests var trackedUdi2 = Udi.Create(Constants.UdiEntityType.Media, Guid.NewGuid()).ToString(); var trackedUdi3 = Udi.Create(Constants.UdiEntityType.Media, Guid.NewGuid()).ToString(); var trackedUdi4 = Udi.Create(Constants.UdiEntityType.Media, Guid.NewGuid()).ToString(); - var serializer = new ConfigurationEditorJsonSerializer(); + var serializer = new SystemTextConfigurationEditorJsonSerializer(); var property = new Property( new PropertyType(ShortStringHelper, new DataType(mediaPicker, serializer)) @@ -144,7 +144,7 @@ public class DataValueReferenceFactoryCollectionTests var trackedUdi2 = Udi.Create(Constants.UdiEntityType.Media, Guid.NewGuid()).ToString(); var trackedUdi3 = Udi.Create(Constants.UdiEntityType.Media, Guid.NewGuid()).ToString(); var trackedUdi4 = Udi.Create(Constants.UdiEntityType.Media, Guid.NewGuid()).ToString(); - var serializer = new ConfigurationEditorJsonSerializer(); + var serializer = new SystemTextConfigurationEditorJsonSerializer(); var property = new Property(new PropertyType(ShortStringHelper, new DataType(mediaPicker, serializer)) { @@ -193,7 +193,7 @@ public class DataValueReferenceFactoryCollectionTests var labelPropertyEditor = new LabelPropertyEditor(DataValueEditorFactory, IOHelper); var propertyEditors = new PropertyEditorCollection(new DataEditorCollection(() => labelPropertyEditor.Yield())); - var serializer = new ConfigurationEditorJsonSerializer(); + var serializer = new SystemTextConfigurationEditorJsonSerializer(); var result = collection.GetAllAutomaticRelationTypesAliases(propertyEditors).ToArray(); diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/MultiValuePropertyEditorTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/MultiValuePropertyEditorTests.cs index c31ddb88bc..e5c6809c3e 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/MultiValuePropertyEditorTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/MultiValuePropertyEditorTests.cs @@ -30,7 +30,7 @@ public class MultiValuePropertyEditorTests public void DropDownMultipleValueEditor_Format_Data_For_Cache() { var dataValueEditorFactoryMock = new Mock(); - var serializer = new ConfigurationEditorJsonSerializer(); + var serializer = new SystemTextConfigurationEditorJsonSerializer(); var checkBoxListPropertyEditor = new CheckBoxListPropertyEditor( dataValueEditorFactoryMock.Object, Mock.Of(), serializer); @@ -86,7 +86,7 @@ public class MultiValuePropertyEditorTests { var dataValueEditorFactoryMock = new Mock(); - var serializer = new ConfigurationEditorJsonSerializer(); + var serializer = new SystemTextConfigurationEditorJsonSerializer(); var checkBoxListPropertyEditor = new CheckBoxListPropertyEditor( dataValueEditorFactoryMock.Object, Mock.Of(), serializer); @@ -140,7 +140,7 @@ public class MultiValuePropertyEditorTests { var dataValueEditorFactoryMock = new Mock(); - var serializer = new ConfigurationEditorJsonSerializer(); + var serializer = new SystemTextConfigurationEditorJsonSerializer(); var checkBoxListPropertyEditor = new CheckBoxListPropertyEditor( dataValueEditorFactoryMock.Object, Mock.Of(), serializer); diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/PropertyEditorValueConverterTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/PropertyEditorValueConverterTests.cs index f84f08d8aa..461edeef69 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/PropertyEditorValueConverterTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/PropertyEditorValueConverterTests.cs @@ -77,7 +77,7 @@ public class PropertyEditorValueConverterTests [TestCase(null, new string[] { })] public void CanConvertCheckboxListPropertyEditor(object value, IEnumerable expected) { - var converter = new CheckboxListValueConverter(new JsonNetSerializer()); + var converter = new CheckboxListValueConverter(new SystemTextJsonSerializer()); var result = converter.ConvertIntermediateToObject(null, null, PropertyCacheLevel.Unknown, value, false); Assert.AreEqual(expected, result); @@ -103,7 +103,7 @@ public class PropertyEditorValueConverterTests Mock.Of(), mockPublishedContentTypeFactory.Object); - var converter = new FlexibleDropdownPropertyValueConverter(); + var converter = new FlexibleDropdownPropertyValueConverter(new SystemTextJsonSerializer()); var inter = converter.ConvertSourceToIntermediate(null, publishedPropType, value, false); var result = converter.ConvertIntermediateToObject(null, publishedPropType, PropertyCacheLevel.Unknown, inter, false); diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/PropertyEditorValueEditorTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/PropertyEditorValueEditorTests.cs index 3fe9445eca..93133ff66f 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/PropertyEditorValueEditorTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/PropertyEditorValueEditorTests.cs @@ -14,7 +14,7 @@ namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Core.PropertyEditors; [TestFixture] public class PropertyEditorValueEditorTests { - [TestCase("{prop1: 'val1', prop2: 'val2'}", true)] + [TestCase("{\"prop1\": \"val1\", \"prop2\": \"val2\"}", true)] [TestCase("{1,2,3,4}", false)] [TestCase("[1,2,3,4]", true)] [TestCase("hello world", false)] diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/PropertyEditorValueTypeConverterTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/PropertyEditorValueTypeConverterTests.cs index 9ad49dfc61..3b646d5e53 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/PropertyEditorValueTypeConverterTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/PropertyEditorValueTypeConverterTests.cs @@ -1,8 +1,7 @@ -using System.Xml.Linq; +using System.Text.Json; +using System.Xml.Linq; using Microsoft.Extensions.Logging; using Moq; -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; using NUnit.Framework; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Models.PublishedContent; @@ -197,11 +196,11 @@ public class PropertyEditorValueTypeConverterTests Assert.IsTrue(converter.IsConverter(propertyType)); - var result = converter.ConvertSourceToIntermediate(null, propertyType, source, false) as JToken; + var result = converter.ConvertSourceToIntermediate(null, propertyType, source, false) as JsonDocument; if (expectsSuccess) { Assert.IsNotNull(result); - Assert.AreEqual(source, result.ToString(Formatting.None)); + Assert.AreEqual(source, result.RootElement.ToString()); } else { diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/RichTextPropertyEditorHelperTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/RichTextPropertyEditorHelperTests.cs index 120254a305..6f760de9f6 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/RichTextPropertyEditorHelperTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/RichTextPropertyEditorHelperTests.cs @@ -86,7 +86,7 @@ public class RichTextPropertyEditorHelperTests "layout": { "Umbraco.TinyMCE": [{ "contentUdi": "umb://element/36cc710ad8a645d0a07f7bbd8742cf02", - "settingsUdi": "umb://element/d2eeef66411142f4a1647a523eaffbc2", + "settingsUdi": "umb://element/d2eeef66411142f4a1647a523eaffbc2" } ] }, @@ -172,7 +172,7 @@ public class RichTextPropertyEditorHelperTests Assert.AreEqual(0, value.Blocks.SettingsData.Count); } - private IJsonSerializer JsonSerializer() => new JsonNetSerializer(); + private IJsonSerializer JsonSerializer() => new SystemTextJsonSerializer(); private ILogger Logger() => Mock.Of(); } diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Published/ConvertersTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Published/ConvertersTests.cs index eac0efc11d..2a2f59a32b 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Published/ConvertersTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Published/ConvertersTests.cs @@ -25,7 +25,7 @@ public class ConvertersTests var converters = new PropertyValueConverterCollection(() => new IPropertyValueConverter[] { new SimpleConverter1() }); - var serializer = new ConfigurationEditorJsonSerializer(); + var serializer = new SystemTextConfigurationEditorJsonSerializer(); var dataTypeServiceMock = new Mock(); var dataType = new DataType( new VoidEditor(Mock.Of()), serializer) @@ -108,7 +108,7 @@ public class ConvertersTests new SimpleConverter2(publishedSnapshotAccessor), }); - var serializer = new ConfigurationEditorJsonSerializer(); + var serializer = new SystemTextConfigurationEditorJsonSerializer(); var dataTypeServiceMock = new Mock(); var dataType = new DataType( new VoidEditor(Mock.Of()), serializer) diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Published/PropertyCacheLevelTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Published/PropertyCacheLevelTests.cs index 6c971f6a7a..bf786bbc98 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Published/PropertyCacheLevelTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Published/PropertyCacheLevelTests.cs @@ -28,7 +28,7 @@ public class PropertyCacheLevelTests var converters = new PropertyValueConverterCollection(() => new IPropertyValueConverter[] { converter }); - var configurationEditorJsonSerializer = new ConfigurationEditorJsonSerializer(); + var configurationEditorJsonSerializer = new SystemTextConfigurationEditorJsonSerializer(); var dataTypeServiceMock = new Mock(); var dataType = new DataType( new VoidEditor(Mock.Of()), configurationEditorJsonSerializer) @@ -115,7 +115,7 @@ public class PropertyCacheLevelTests var dataTypeServiceMock = new Mock(); var dataType = new DataType( - new VoidEditor(Mock.Of()), new ConfigurationEditorJsonSerializer()) + new VoidEditor(Mock.Of()), new SystemTextConfigurationEditorJsonSerializer()) { Id = 1 }; dataTypeServiceMock.Setup(x => x.GetAll()).Returns(dataType.Yield); @@ -201,7 +201,7 @@ public class PropertyCacheLevelTests var dataTypeServiceMock = new Mock(); var dataType = new DataType( - new VoidEditor(Mock.Of()), new ConfigurationEditorJsonSerializer()) + new VoidEditor(Mock.Of()), new SystemTextConfigurationEditorJsonSerializer()) { Id = 1 }; dataTypeServiceMock.Setup(x => x.GetAll()).Returns(dataType.Yield); diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Persistence/Querying/ExpressionTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Persistence/Querying/ExpressionTests.cs index e6f2243147..c4504deb2c 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Persistence/Querying/ExpressionTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Persistence/Querying/ExpressionTests.cs @@ -26,7 +26,7 @@ public class ExpressionTests : BaseUsingSqlSyntax { var dataType = new DataType( new VoidEditor(Mock.Of()), - new ConfigurationEditorJsonSerializer()) + new SystemTextConfigurationEditorJsonSerializer()) { Id = 12345 }; Expression> predicate = p => p.DataTypeId == dataType.Id; var modelToSqlExpressionHelper = new ModelToSqlExpressionVisitor(SqlContext.SqlSyntax, Mappers); diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/PublishedCache/PublishedMediaTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/PublishedCache/PublishedMediaTests.cs index 38a8395bf8..dfd94e624b 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/PublishedCache/PublishedMediaTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/PublishedCache/PublishedMediaTests.cs @@ -26,7 +26,7 @@ public class PublishedMediaTests : PublishedSnapshotServiceTestBase base.Setup(); var dataTypes = GetDefaultDataTypes().ToList(); - var serializer = new ConfigurationEditorJsonSerializer(); + var serializer = new SystemTextConfigurationEditorJsonSerializer(); var rteDataType = new DataType(new VoidEditor("RTE", Mock.Of()), serializer) { Id = 4 }; dataTypes.Add(rteDataType); _dataTypes = dataTypes.ToArray(); diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Security/MemberPasswordHasherTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Security/MemberPasswordHasherTests.cs index 9d26be6ab6..b7748f8caf 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Security/MemberPasswordHasherTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Security/MemberPasswordHasherTests.cs @@ -104,7 +104,7 @@ public class MemberPasswordHasherTests var sut = new MemberPasswordHasher( new LegacyPasswordSecurity(), - new JsonNetSerializer(), + new SystemTextJsonSerializer(), Options.Create(new LegacyPasswordMigrationSettings { MachineKeyDecryptionKey = decryptionKey }), NullLoggerFactory.Instance.CreateLogger()); diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Serialization/JsonNetSerializerTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Serialization/JsonNetSerializerTests.cs deleted file mode 100644 index 6f5f143891..0000000000 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Serialization/JsonNetSerializerTests.cs +++ /dev/null @@ -1,81 +0,0 @@ -// Copyright (c) Umbraco. -// See LICENSE for more details. - -using Newtonsoft.Json; -using NUnit.Framework; -using Umbraco.Cms.Core.Serialization; -using Umbraco.Cms.Infrastructure.Serialization; - -namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Infrastructure.Serialization; - -[TestFixture] -public class JsonNetSerializerTests -{ - private IJsonSerializer Sut => new JsonNetSerializer(); - - [Test] - public void DeserializeSubset__Subset_as_integer() - { - var expected = 3; - var key = "int"; - var full = $"{{\"{key}\": {expected}}}"; - - var actual = Sut.DeserializeSubset(full, key); - - Assert.AreEqual(expected, actual); - } - - [Test] - public void DeserializeSubset__Subset_as_string() - { - var expected = "test"; - var key = "text"; - var full = $"{{\"{key}\": \"{expected}\"}}"; - - var actual = Sut.DeserializeSubset(full, key); - - Assert.AreEqual(expected, actual); - } - - [Test] - public void DeserializeSubset__Subset_nested_value_as_string() - { - var expected = "test"; - var key = "text"; - var key2 = "text2"; - var full = $"{{\"{key}\": {{\"{key2}\": \"{expected}\"}}}}"; - - var actual = Sut.DeserializeSubset(full, key + "." + key2); - - Assert.AreEqual(expected, actual); - } - - [Test] - public void DeserializeSubset__Subset_value_as_object() - { - var expected = new MyStruct { Key = "Test" }; - var key = nameof(MyStruct.Key); - var full = $"{{\"{key}\": {JsonConvert.SerializeObject(expected)}"; - - var actual = Sut.DeserializeSubset(full, key); - - Assert.AreEqual(expected, actual); - } - - [Test] - public void DeserializeSubset__Subset_value_as_array() - { - var expected = new[] { "test" }; - var key = "text"; - var full = $"{{\"{key}\": {JsonConvert.SerializeObject(expected)}"; - - var actual = Sut.DeserializeSubset(full, key); - - Assert.AreEqual(expected, actual); - } - - private struct MyStruct - { - public string Key { get; set; } - } -} diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Services/PropertyValidationServiceTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Services/PropertyValidationServiceTests.cs index 0900965319..4bf81cd88d 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Services/PropertyValidationServiceTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Services/PropertyValidationServiceTests.cs @@ -38,7 +38,7 @@ public class PropertyValidationServiceTests .Returns(new CustomTextOnlyValueEditor( new DataEditorAttribute(Constants.PropertyEditors.Aliases.TextBox), Mock.Of(), - new JsonNetSerializer(), + new SystemTextJsonSerializer(), Mock.Of())); var propEditors = new PropertyEditorCollection(new DataEditorCollection(() => new[] { dataEditor })); diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Web.BackOffice/Controllers/MemberControllerUnitTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Web.BackOffice/Controllers/MemberControllerUnitTests.cs index 91c21f7625..e4be3621e3 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Web.BackOffice/Controllers/MemberControllerUnitTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Web.BackOffice/Controllers/MemberControllerUnitTests.cs @@ -618,7 +618,7 @@ public class MemberControllerUnitTests (IMemberManager)membersUserManager, dataTypeService, backOfficeSecurityAccessor, - new ConfigurationEditorJsonSerializer(), + new SystemTextConfigurationEditorJsonSerializer(), passwordChanger, scopeProvider, twoFactorLoginService);