diff --git a/src/Umbraco.Core/Serialization/IJsonSerializer.cs b/src/Umbraco.Core/Serialization/IJsonSerializer.cs index 27bd956f41..54ac7aa02c 100644 --- a/src/Umbraco.Core/Serialization/IJsonSerializer.cs +++ b/src/Umbraco.Core/Serialization/IJsonSerializer.cs @@ -16,7 +16,6 @@ public interface IJsonSerializer /// string Serialize(object? input); - /// /// Parses the text representing a single JSON value into an instance of the type specified by a generic type parameter. /// diff --git a/src/Umbraco.Core/Serialization/IJsonSerializerEncoderFactory.cs b/src/Umbraco.Core/Serialization/IJsonSerializerEncoderFactory.cs new file mode 100644 index 0000000000..43d096a2e8 --- /dev/null +++ b/src/Umbraco.Core/Serialization/IJsonSerializerEncoderFactory.cs @@ -0,0 +1,17 @@ +using System.Text.Encodings.Web; + +namespace Umbraco.Cms.Core.Serialization; + +/// +/// Provides a factory method for creating a for use in instantiating JSON serializers. +/// +public interface IJsonSerializerEncoderFactory +{ + /// + /// Creates a for use in the serialization of configuration editor JSON. + /// + /// The type of the serializer for which the encoder is being created. + /// A instance. + JavaScriptEncoder CreateEncoder() + where TSerializer : IJsonSerializer; +} diff --git a/src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.CoreServices.cs b/src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.CoreServices.cs index 8068b074fb..70e5969d04 100644 --- a/src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.CoreServices.cs +++ b/src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.CoreServices.cs @@ -127,6 +127,7 @@ public static partial class UmbracoBuilderExtensions builder.Services.AddSingleton(); builder.Services.AddSingleton(); + builder.Services.AddUnique(); builder.Services.AddUnique(); // register database builder diff --git a/src/Umbraco.Infrastructure/Serialization/DefaultJsonSerializerEncoderFactory.cs b/src/Umbraco.Infrastructure/Serialization/DefaultJsonSerializerEncoderFactory.cs new file mode 100644 index 0000000000..cf91b91f61 --- /dev/null +++ b/src/Umbraco.Infrastructure/Serialization/DefaultJsonSerializerEncoderFactory.cs @@ -0,0 +1,14 @@ +using System.Text.Encodings.Web; +using System.Text.Unicode; +using Umbraco.Cms.Core.Serialization; + +namespace Umbraco.Cms.Infrastructure.Serialization; + +/// +public sealed class DefaultJsonSerializerEncoderFactory : IJsonSerializerEncoderFactory +{ + /// + public JavaScriptEncoder CreateEncoder() + where TSerializer : IJsonSerializer + => JavaScriptEncoder.Create(UnicodeRanges.BasicLatin); +} diff --git a/src/Umbraco.Infrastructure/Serialization/SystemTextConfigurationEditorJsonSerializer.cs b/src/Umbraco.Infrastructure/Serialization/SystemTextConfigurationEditorJsonSerializer.cs index 180687b1a4..98185d74a6 100644 --- a/src/Umbraco.Infrastructure/Serialization/SystemTextConfigurationEditorJsonSerializer.cs +++ b/src/Umbraco.Infrastructure/Serialization/SystemTextConfigurationEditorJsonSerializer.cs @@ -1,6 +1,8 @@ using System.Text.Json; using System.Text.Json.Serialization; using System.Text.Json.Serialization.Metadata; +using Microsoft.Extensions.DependencyInjection; +using Umbraco.Cms.Core.DependencyInjection; using Umbraco.Cms.Core.PropertyEditors; using Umbraco.Cms.Core.Serialization; @@ -14,11 +16,24 @@ public sealed class SystemTextConfigurationEditorJsonSerializer : SystemTextJson /// /// Initializes a new instance of the class. /// + [Obsolete("Please use the constructor taking all parameters. Scheduled for removal in Umbraco 18.")] public SystemTextConfigurationEditorJsonSerializer() + : this( + StaticServiceProvider.Instance.GetRequiredService()) + { + } + + /// + /// Initializes a new instance of the class. + /// + public SystemTextConfigurationEditorJsonSerializer(IJsonSerializerEncoderFactory jsonSerializerEncoderFactory) + : base(jsonSerializerEncoderFactory) => _jsonSerializerOptions = new JsonSerializerOptions() { PropertyNamingPolicy = JsonNamingPolicy.CamelCase, + Encoder = jsonSerializerEncoderFactory.CreateEncoder(), + // In some cases, configs aren't camel cased in the DB, so we have to resort to case insensitive // property name resolving when creating configuration objects (deserializing DB configs). PropertyNameCaseInsensitive = true, @@ -40,6 +55,7 @@ public sealed class SystemTextConfigurationEditorJsonSerializer : SystemTextJson .WithAddedModifier(UseAttributeConfiguredPropertyNames()), }; + /// protected override JsonSerializerOptions JsonSerializerOptions => _jsonSerializerOptions; /// diff --git a/src/Umbraco.Infrastructure/Serialization/SystemTextJsonSerializer.cs b/src/Umbraco.Infrastructure/Serialization/SystemTextJsonSerializer.cs index 3edd4d2fc3..c363f5459b 100644 --- a/src/Umbraco.Infrastructure/Serialization/SystemTextJsonSerializer.cs +++ b/src/Umbraco.Infrastructure/Serialization/SystemTextJsonSerializer.cs @@ -1,5 +1,8 @@ using System.Text.Json; using System.Text.Json.Serialization; +using Microsoft.Extensions.DependencyInjection; +using Umbraco.Cms.Core.DependencyInjection; +using Umbraco.Cms.Core.Serialization; namespace Umbraco.Cms.Infrastructure.Serialization; @@ -8,13 +11,27 @@ public sealed class SystemTextJsonSerializer : SystemTextJsonSerializerBase { private readonly JsonSerializerOptions _jsonSerializerOptions; + /// + /// Initializes a new instance of the class. + /// + [Obsolete("Please use the constructor taking all parameters. Scheduled for removal in Umbraco 18.")] + public SystemTextJsonSerializer() + : this( + StaticServiceProvider.Instance.GetRequiredService()) + { + } + /// /// Initializes a new instance of the class. /// - public SystemTextJsonSerializer() + public SystemTextJsonSerializer(IJsonSerializerEncoderFactory jsonSerializerEncoderFactory) + : base(jsonSerializerEncoderFactory) => _jsonSerializerOptions = new JsonSerializerOptions { PropertyNamingPolicy = JsonNamingPolicy.CamelCase, + + Encoder = jsonSerializerEncoderFactory.CreateEncoder(), + Converters = { new JsonStringEnumConverter(), @@ -25,5 +42,6 @@ public sealed class SystemTextJsonSerializer : SystemTextJsonSerializerBase } }; + /// protected override JsonSerializerOptions JsonSerializerOptions => _jsonSerializerOptions; } diff --git a/src/Umbraco.Infrastructure/Serialization/SystemTextJsonSerializerBase.cs b/src/Umbraco.Infrastructure/Serialization/SystemTextJsonSerializerBase.cs index cfffb32a99..264a61eb91 100644 --- a/src/Umbraco.Infrastructure/Serialization/SystemTextJsonSerializerBase.cs +++ b/src/Umbraco.Infrastructure/Serialization/SystemTextJsonSerializerBase.cs @@ -1,6 +1,9 @@ -using System.Diagnostics.CodeAnalysis; +using System.Diagnostics.CodeAnalysis; +using System.Text.Encodings.Web; using System.Text.Json; using System.Text.Json.Nodes; +using Microsoft.Extensions.DependencyInjection; +using Umbraco.Cms.Core.DependencyInjection; using Umbraco.Cms.Core.Serialization; using Umbraco.Extensions; @@ -8,6 +11,28 @@ namespace Umbraco.Cms.Infrastructure.Serialization; public abstract class SystemTextJsonSerializerBase : IJsonSerializer { + private readonly IJsonSerializerEncoderFactory _jsonSerializerEncoderFactory; + + /// + /// Initializes a new instance of the class. + /// + [Obsolete("Please use the constructor taking all parameters. Scheduled for removal in Umbraco 18.")] + protected SystemTextJsonSerializerBase() + : this( + StaticServiceProvider.Instance.GetRequiredService()) + { + } + + /// + /// Initializes a new instance of the class. + /// + /// The for creating the . + protected SystemTextJsonSerializerBase(IJsonSerializerEncoderFactory jsonSerializerEncoderFactory) + => _jsonSerializerEncoderFactory = jsonSerializerEncoderFactory; + + /// + /// Gets the . + /// protected abstract JsonSerializerOptions JsonSerializerOptions { get; } /// diff --git a/src/Umbraco.Infrastructure/Serialization/SystemTextWebhookJsonSerializer.cs b/src/Umbraco.Infrastructure/Serialization/SystemTextWebhookJsonSerializer.cs index b75c92073c..b4dc6a1c2b 100644 --- a/src/Umbraco.Infrastructure/Serialization/SystemTextWebhookJsonSerializer.cs +++ b/src/Umbraco.Infrastructure/Serialization/SystemTextWebhookJsonSerializer.cs @@ -1,5 +1,7 @@ -using System.Text.Json; +using System.Text.Json; using System.Text.Json.Serialization; +using Microsoft.Extensions.DependencyInjection; +using Umbraco.Cms.Core.DependencyInjection; using Umbraco.Cms.Core.Serialization; namespace Umbraco.Cms.Infrastructure.Serialization; @@ -9,23 +11,38 @@ public sealed class SystemTextWebhookJsonSerializer : SystemTextJsonSerializerBa { private readonly JsonSerializerOptions _jsonSerializerOptions; + /// + /// Initializes a new instance of the class. + /// + [Obsolete("Please use the constructor taking all parameters. Scheduled for removal in Umbraco 18.")] + public SystemTextWebhookJsonSerializer() + : this( + StaticServiceProvider.Instance.GetRequiredService()) + { + } + /// /// Initializes a new instance of the class. /// - public SystemTextWebhookJsonSerializer() + public SystemTextWebhookJsonSerializer(IJsonSerializerEncoderFactory jsonSerializerEncoderFactory) + : base(jsonSerializerEncoderFactory) => _jsonSerializerOptions = new JsonSerializerOptions() { PropertyNamingPolicy = JsonNamingPolicy.CamelCase, + + Encoder = jsonSerializerEncoderFactory.CreateEncoder(), + Converters = { new JsonStringEnumConverter(), new JsonUdiConverter(), new JsonUdiRangeConverter(), new JsonObjectConverter(), // Required for block editor values - new JsonBlockValueConverter() + new JsonBlockValueConverter(), }, TypeInfoResolver = new WebhookJsonTypeResolver(), }; + /// protected override JsonSerializerOptions JsonSerializerOptions => _jsonSerializerOptions; } diff --git a/tests/Umbraco.TestData/UmbracoTestDataController.cs b/tests/Umbraco.TestData/UmbracoTestDataController.cs index 9f10d992ed..3fd3754cc5 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 SystemTextConfigurationEditorJsonSerializer(); + var serializer = new SystemTextConfigurationEditorJsonSerializer(new DefaultJsonSerializerEncoderFactory()); dt = new DataType(editor, serializer) { diff --git a/tests/Umbraco.Tests.Common/Builders/DataTypeBuilder.cs b/tests/Umbraco.Tests.Common/Builders/DataTypeBuilder.cs index 284e68592f..39b36b7ee1 100644 --- a/tests/Umbraco.Tests.Common/Builders/DataTypeBuilder.cs +++ b/tests/Umbraco.Tests.Common/Builders/DataTypeBuilder.cs @@ -138,7 +138,7 @@ public class DataTypeBuilder var creatorId = _creatorId ?? 1; var databaseType = _databaseType ?? ValueStorageType.Ntext; var sortOrder = _sortOrder ?? 0; - var serializer = new SystemTextConfigurationEditorJsonSerializer(); + var serializer = new SystemTextConfigurationEditorJsonSerializer(new DefaultJsonSerializerEncoderFactory()); var dataType = new DataType(editor, serializer, parentId) { diff --git a/tests/Umbraco.Tests.Common/TestHelperBase.cs b/tests/Umbraco.Tests.Common/TestHelperBase.cs index 8983887523..822be248ec 100644 --- a/tests/Umbraco.Tests.Common/TestHelperBase.cs +++ b/tests/Umbraco.Tests.Common/TestHelperBase.cs @@ -136,7 +136,7 @@ public abstract class TestHelperBase } } - public IJsonSerializer JsonSerializer { get; } = new SystemTextJsonSerializer(); + public IJsonSerializer JsonSerializer { get; } = new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory()); 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 3051385ca1..1e82cd8e03 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 SystemTextJsonSerializer(), + new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory()), 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 bcef116a97..13c4db5c3f 100644 --- a/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/TemplateRepositoryTest.cs +++ b/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/TemplateRepositoryTest.cs @@ -261,7 +261,7 @@ internal sealed class TemplateRepositoryTest : UmbracoIntegrationTest { var templateRepository = CreateRepository(provider); var globalSettings = new GlobalSettings(); - var serializer = new SystemTextJsonSerializer(); + var serializer = new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory()); 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 b7c8f1ce3c..87c458621f 100644 --- a/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/UserRepositoryTest.cs +++ b/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/UserRepositoryTest.cs @@ -55,7 +55,7 @@ internal sealed class UserRepositoryTest : UmbracoIntegrationTest Mappers, Options.Create(GlobalSettings), Options.Create(new UserPasswordConfigurationSettings()), - new SystemTextJsonSerializer(), + new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory()), mockRuntimeState.Object, PermissionMappers); return repository; @@ -162,7 +162,7 @@ internal sealed class UserRepositoryTest : UmbracoIntegrationTest Mock.Of(), Options.Create(GlobalSettings), Options.Create(new UserPasswordConfigurationSettings()), - new SystemTextJsonSerializer(), + new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory()), mockRuntimeState.Object, PermissionMappers); diff --git a/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Scoping/ScopedRepositoryTests.cs b/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Scoping/ScopedRepositoryTests.cs index e7fb41baad..db41399984 100644 --- a/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Scoping/ScopedRepositoryTests.cs +++ b/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Scoping/ScopedRepositoryTests.cs @@ -324,7 +324,7 @@ internal sealed class ScopedRepositoryTests : UmbracoIntegrationTest public class LocalServerMessenger : ServerMessengerBase { public LocalServerMessenger() - : base(false, new SystemTextJsonSerializer()) + : base(false, new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory())) { } diff --git a/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentEventsTests.cs b/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentEventsTests.cs index 4b35534de0..f993f70009 100644 --- a/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentEventsTests.cs +++ b/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentEventsTests.cs @@ -2089,7 +2089,7 @@ namespace Umbraco.Cms.Tests.Integration.Umbraco.Infrastructure.Services internal sealed class LocalServerMessenger : ServerMessengerBase { public LocalServerMessenger() - : base(false, new SystemTextJsonSerializer()) + : base(false, new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory())) { } diff --git a/tests/Umbraco.Tests.UnitTests/TestHelpers/PublishedSnapshotServiceTestBase.cs b/tests/Umbraco.Tests.UnitTests/TestHelpers/PublishedSnapshotServiceTestBase.cs index 571b5929ea..88182e38b9 100644 --- a/tests/Umbraco.Tests.UnitTests/TestHelpers/PublishedSnapshotServiceTestBase.cs +++ b/tests/Umbraco.Tests.UnitTests/TestHelpers/PublishedSnapshotServiceTestBase.cs @@ -165,7 +165,7 @@ // // protected static DataType[] GetDefaultDataTypes() // { -// var serializer = new SystemTextConfigurationEditorJsonSerializer(); +// var serializer = new SystemTextConfigurationEditorJsonSerializer(new DefaultConfigurationEditorJsonSerializerEncoderFactory()); // // // 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 dc77dedfd8..97304529fa 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>(), new SystemTextJsonSerializer()); + var valueConverter = new ImageCropperValueConverter(Mock.Of>(), new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory())); Assert.AreEqual(typeof(ApiImageCropperValue), valueConverter.GetDeliveryApiPropertyValueType(publishedPropertyType.Object)); - var serializer = new SystemTextJsonSerializer(); + var serializer = new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory()); 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 2f43f51bd6..cad05ed653 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 SystemTextJsonSerializer(); + var serializer = new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory()); 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 SystemTextJsonSerializer(); + var serializer = new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory()); 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 SystemTextJsonSerializer(); + var serializer = new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory()); 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 SystemTextJsonSerializer(); + var serializer = new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory()); 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 SystemTextJsonSerializer(); + var serializer = new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory()); 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 454aa358b4..03008704ae 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 CacheManager.Media); } - private IJsonSerializer Serializer() => new SystemTextJsonSerializer(); + private IJsonSerializer Serializer() => new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory()); } diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/DeliveryApi/OutputExpansionStrategyTestBase.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/DeliveryApi/OutputExpansionStrategyTestBase.cs index 0f6c3eb168..33f335d6e2 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(CacheManager.Media, PublishedUrlProvider, publishedValueFallback, new SystemTextJsonSerializer(), apiMediaWithCropsBuilder); + MediaPickerWithCropsValueConverter mediaPickerValueConverter = new MediaPickerWithCropsValueConverter(CacheManager.Media, PublishedUrlProvider, publishedValueFallback, new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory()), apiMediaWithCropsBuilder); var mediaPickerPropertyType = SetupPublishedPropertyType(mediaPickerValueConverter, propertyTypeAlias, Constants.PropertyEditors.Aliases.MediaPicker3, new MediaPicker3Configuration()); return new PublishedElementPropertyBase(mediaPickerPropertyType, parent, false, PropertyCacheLevel.None, VariationContext, CacheManager, 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 SystemTextJsonSerializer(); + var serializer = new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory()); 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(CacheManager.Media, PublishedUrlProvider, publishedValueFallback, new SystemTextJsonSerializer(), apiMediaWithCropsBuilder); + MediaPickerWithCropsValueConverter mediaPickerValueConverter = new MediaPickerWithCropsValueConverter(CacheManager.Media, PublishedUrlProvider, publishedValueFallback, new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory()), apiMediaWithCropsBuilder); var mediaPickerPropertyType = SetupPublishedPropertyType(mediaPickerValueConverter, propertyTypeAlias, Constants.PropertyEditors.Aliases.MediaPicker3, new MediaPicker3Configuration()); return new PublishedElementPropertyBase(mediaPickerPropertyType, parent, false, PropertyCacheLevel.None, VariationContext, CacheManager, value); diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Manifest/PackageManifestReaderTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Manifest/PackageManifestReaderTests.cs index e1c52d075f..db23529c67 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Manifest/PackageManifestReaderTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Manifest/PackageManifestReaderTests.cs @@ -1,4 +1,4 @@ -using System.Text; +using System.Text; using System.Text.Json; using System.Text.Json.Nodes; using Microsoft.Extensions.FileProviders; @@ -32,7 +32,7 @@ public class PackageManifestReaderTests fileProviderFactoryMock.Setup(m => m.Create()).Returns(_fileProviderMock.Object); _loggerMock = new Mock>(); - _reader = new AppPluginsPackageManifestReader(fileProviderFactoryMock.Object, new SystemTextJsonSerializer(), _loggerMock.Object); + _reader = new AppPluginsPackageManifestReader(fileProviderFactoryMock.Object, new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory()), _loggerMock.Object); } [Test] diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Models/VariationTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Models/VariationTests.cs index ec4204c5be..6f7049a6d0 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Models/VariationTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Models/VariationTests.cs @@ -637,14 +637,14 @@ public class VariationTests attribute, Mock.Of(), Mock.Of(), - new SystemTextJsonSerializer(), + new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory()), Mock.Of())); var textBoxEditor = new TextboxPropertyEditor( dataValueEditorFactory, ioHelper); - var serializer = new SystemTextConfigurationEditorJsonSerializer(); + var serializer = new SystemTextConfigurationEditorJsonSerializer(new DefaultJsonSerializerEncoderFactory()); 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/BlockEditorComponentTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/BlockEditorComponentTests.cs index 719c0885c8..5cbe05aebb 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/BlockEditorComponentTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/BlockEditorComponentTests.cs @@ -22,7 +22,7 @@ public class BlockEditorComponentTests private const string SubContentGuid2 = "68606a64-a03a-4b78-bcb1-39daee0c590d"; private const string SubSettingsGuid1 = "5ce1b7da-7c9f-491e-9b95-5510fd28c50c"; - private readonly IJsonSerializer _jsonSerializer = new SystemTextJsonSerializer(); + private readonly IJsonSerializer _jsonSerializer = new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory()); [Test] public void Cannot_Have_Null_Udi() diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/BlockGridPropertyValueConverterTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/BlockGridPropertyValueConverterTests.cs index 8f88564599..72aa111082 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/BlockGridPropertyValueConverterTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/BlockGridPropertyValueConverterTests.cs @@ -1,4 +1,4 @@ -using Moq; +using Moq; using NUnit.Framework; using Umbraco.Cms.Core; using Umbraco.Cms.Core.DeliveryApi; @@ -191,7 +191,7 @@ public class BlockGridPropertyValueConverterTests : BlockPropertyValueConverterT var editor = new BlockGridPropertyValueConverter( Mock.Of(), new BlockEditorConverter(GetPublishedContentTypeCache(), Mock.Of(), publishedModelFactory, Mock.Of(), blockVarianceHandler), - new SystemTextJsonSerializer(), + new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory()), new ApiElementBuilder(Mock.Of()), new BlockGridPropertyValueConstructorCache(), Mock.Of(), diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/BlockListEditorPropertyValueEditorTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/BlockListEditorPropertyValueEditorTests.cs index 32655e88b2..6759daece2 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/BlockListEditorPropertyValueEditorTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/BlockListEditorPropertyValueEditorTests.cs @@ -235,7 +235,7 @@ public class BlockListEditorPropertyValueEditorTests It.IsAny>())) .Returns((string key, string alias, CultureInfo culture, IDictionary args) => $"{key}_{alias}"); - var jsonSerializer = new SystemTextJsonSerializer(); + var jsonSerializer = new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory()); var languageService = Mock.Of(); var dataValueEditorFactoryMock = new Mock(); @@ -248,7 +248,7 @@ public class BlockListEditorPropertyValueEditorTests .Setup(x => x.Create(It.IsAny())) .Returns(new ConcatenatingTextValueEditor( Mock.Of(), - new SystemTextJsonSerializer())); + new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory()))); textBoxEditor = new ConcatenatingTextboxPropertyEditor( dataValueEditorFactoryMock.Object); @@ -260,7 +260,7 @@ public class BlockListEditorPropertyValueEditorTests new DataEditorAttribute("a"), Mock.Of(), Mock.Of(), - new SystemTextJsonSerializer(), + new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory()), Mock.Of())); textBoxEditor = new TextboxPropertyEditor( dataValueEditorFactoryMock.Object, diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/BlockListPropertyValueConverterTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/BlockListPropertyValueConverterTests.cs index 2af6f28bab..88a08d055b 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/BlockListPropertyValueConverterTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/BlockListPropertyValueConverterTests.cs @@ -30,7 +30,7 @@ public class BlockListPropertyValueConverterTests : BlockPropertyValueConverterT new BlockEditorConverter(GetPublishedContentTypeCache(), Mock.Of(), publishedModelFactory, Mock.Of(), blockVarianceHandler), Mock.Of(), new ApiElementBuilder(Mock.Of()), - new SystemTextJsonSerializer(), + new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory()), new BlockListPropertyValueConstructorCache(), Mock.Of(), blockVarianceHandler); diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/ColorListValidatorTest.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/ColorListValidatorTest.cs index 5ed3a5de3b..72de48631f 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/ColorListValidatorTest.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/ColorListValidatorTest.cs @@ -14,7 +14,7 @@ namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Core.PropertyEditors; public class ColorListValidatorTest { private IConfigurationEditorJsonSerializer ConfigurationEditorJsonSerializer() - => new SystemTextConfigurationEditorJsonSerializer(); + => new SystemTextConfigurationEditorJsonSerializer(new DefaultJsonSerializerEncoderFactory()); [Test] public void Expects_Array_Of_ColorPickerItems_Not_Single_String() diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/ConvertersTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/ConvertersTests.cs index 95b7fc0b2e..3ac7492df1 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/ConvertersTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/ConvertersTests.cs @@ -57,7 +57,7 @@ public class ConvertersTests var converters = registerFactory.GetRequiredService(); - var serializer = new SystemTextConfigurationEditorJsonSerializer(); + var serializer = new SystemTextConfigurationEditorJsonSerializer(new DefaultJsonSerializerEncoderFactory()); 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 43757f064c..953301f74f 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/DataValueReferenceFactoryCollectionTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/DataValueReferenceFactoryCollectionTests.cs @@ -61,7 +61,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 SystemTextConfigurationEditorJsonSerializer(); + var serializer = new SystemTextConfigurationEditorJsonSerializer(new DefaultJsonSerializerEncoderFactory()); var property = new Property( new PropertyType(ShortStringHelper, new DataType(labelEditor, serializer)) @@ -105,7 +105,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 SystemTextConfigurationEditorJsonSerializer(); + var serializer = new SystemTextConfigurationEditorJsonSerializer(new DefaultJsonSerializerEncoderFactory()); var property = new Property( new PropertyType(ShortStringHelper, new DataType(mediaPicker, serializer)) @@ -149,7 +149,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 SystemTextConfigurationEditorJsonSerializer(); + var serializer = new SystemTextConfigurationEditorJsonSerializer(new DefaultJsonSerializerEncoderFactory()); var property = new Property(new PropertyType(ShortStringHelper, new DataType(mediaPicker, serializer)) { @@ -198,7 +198,7 @@ public class DataValueReferenceFactoryCollectionTests var labelPropertyEditor = new LabelPropertyEditor(DataValueEditorFactory, IOHelper); var propertyEditors = new PropertyEditorCollection(new DataEditorCollection(() => labelPropertyEditor.Yield())); - var serializer = new SystemTextConfigurationEditorJsonSerializer(); + var serializer = new SystemTextConfigurationEditorJsonSerializer(new DefaultJsonSerializerEncoderFactory()); var result = collection.GetAllAutomaticRelationTypesAliases(propertyEditors).ToArray(); diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/EnsureUniqueValuesValidatorTest.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/EnsureUniqueValuesValidatorTest.cs index efb61bb0f2..ddb3c7091e 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/EnsureUniqueValuesValidatorTest.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/EnsureUniqueValuesValidatorTest.cs @@ -14,7 +14,7 @@ namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Core.PropertyEditors; public class EnsureUniqueValuesValidatorTest { private IConfigurationEditorJsonSerializer ConfigurationEditorJsonSerializer() - => new SystemTextConfigurationEditorJsonSerializer(); + => new SystemTextConfigurationEditorJsonSerializer(new DefaultJsonSerializerEncoderFactory()); [Test] public void Expects_Array_Of_String_Not_Single_String() diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/MediaPicker3ValueEditorValidationTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/MediaPicker3ValueEditorValidationTests.cs index ad82ce3179..6816b17615 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/MediaPicker3ValueEditorValidationTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/MediaPicker3ValueEditorValidationTests.cs @@ -207,7 +207,7 @@ internal class MediaPicker3ValueEditorValidationTests var mediaNavigationQueryServiceMock = new Mock(); var valueEditor = new MediaPicker3PropertyEditor.MediaPicker3PropertyValueEditor( Mock.Of(), - new SystemTextJsonSerializer(), + new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory()), Mock.Of(), new DataEditorAttribute("alias"), Mock.Of(), diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/MultiNodeTreePickerTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/MultiNodeTreePickerTests.cs index f381e845ec..f6374a6a1a 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/MultiNodeTreePickerTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/MultiNodeTreePickerTests.cs @@ -1,4 +1,4 @@ -using System.Data; +using System.Data; using System.Text.Json.Nodes; using Moq; using NUnit.Framework; @@ -75,7 +75,7 @@ public class MultiNodeTreePickerTests var value = new GuidUdi(Constants.UdiEntityType.Document, Guid.NewGuid()); var editorValue = $"[{{\"type\" :\"{value.EntityType}\",\"unique\":\"{value.Guid}\"}}]"; var fromEditor = - FromEditor(JsonNode.Parse(editorValue), jsonSerializer: new SystemTextJsonSerializer()) as string; + FromEditor(JsonNode.Parse(editorValue), jsonSerializer: new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory())) as string; Assert.AreEqual(value.ToString(), fromEditor); } @@ -92,7 +92,7 @@ public class MultiNodeTreePickerTests var editorValue = $"[{{\"type\" :\"{values[0].EntityType}\",\"unique\":\"{values[0].Guid}\"}},{{\"type\" :\"{values[1].EntityType}\",\"unique\":\"{values[1].Guid}\"}},{{\"type\" :\"{values[2].EntityType}\",\"unique\":\"{values[2].Guid}\"}}]"; - var fromEditor = FromEditor(JsonNode.Parse(editorValue), jsonSerializer: new SystemTextJsonSerializer()) as string; + var fromEditor = FromEditor(JsonNode.Parse(editorValue), jsonSerializer: new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory())) as string; Assert.AreEqual(string.Join(",", values.Select(v => v.ToString())), fromEditor); } @@ -109,7 +109,7 @@ public class MultiNodeTreePickerTests var editorValue = $"[{{\"type\" :\"{expectedValues[0].EntityType}\",\"unique\":\"{expectedValues[0].Guid}\"}},{{\"type\" :\"{expectedValues[1].EntityType}\",\"unique\":\"{expectedValues[1].Guid}\"}},{{\"type\" :\"{expectedValues[2].EntityType}\",\"unique\":\"{expectedValues[2].Guid}\"}}]"; - var fromEditor = FromEditor(JsonNode.Parse(editorValue), jsonSerializer: new SystemTextJsonSerializer()) as string; + var fromEditor = FromEditor(JsonNode.Parse(editorValue), jsonSerializer: new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory())) as string; Assert.AreEqual(string.Join(",", expectedValues.Select(v => v.ToString())), fromEditor); } @@ -126,7 +126,7 @@ public class MultiNodeTreePickerTests $"[{{\"type\" :\"{values[0].EntityType}\",\"unique\":\"{values[0].Guid}\"}},{{\"invalidProperty\" :\"nonsenseValue\",\"otherWeirdProperty\":\"definitelyNotAGuid\"}},{{\"type\" :\"{values[1].EntityType}\",\"unique\":\"{values[1].Guid}\"}}]"; Assert.Catch(() => - FromEditor(JsonNode.Parse(editorValue), jsonSerializer: new SystemTextJsonSerializer())); + FromEditor(JsonNode.Parse(editorValue), jsonSerializer: new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory()))); } [Test] diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/MultiNodeTreePickerValidationTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/MultiNodeTreePickerValidationTests.cs index d9d4fda2c5..79cc1f2517 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/MultiNodeTreePickerValidationTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/MultiNodeTreePickerValidationTests.cs @@ -199,7 +199,7 @@ public class MultiNodeTreePickerValidationTests var valueEditor = new MultiNodeTreePickerPropertyEditor.MultiNodeTreePickerPropertyValueEditor( Mock.Of(), - new SystemTextJsonSerializer(), + new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory()), Mock.Of(), new DataEditorAttribute("alias"), Mock.Of(), diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/MultiValuePropertyEditorTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/MultiValuePropertyEditorTests.cs index 1075510c91..599a047c16 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/MultiValuePropertyEditorTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/MultiValuePropertyEditorTests.cs @@ -31,7 +31,7 @@ public class MultiValuePropertyEditorTests public void MultipleValueEditor_WithMultipleValues_Format_Data_For_Cache() { var dataValueEditorFactoryMock = new Mock(); - var serializer = new SystemTextConfigurationEditorJsonSerializer(); + var serializer = new SystemTextConfigurationEditorJsonSerializer(new DefaultJsonSerializerEncoderFactory()); var checkBoxListPropertyEditor = new CheckBoxListPropertyEditor( dataValueEditorFactoryMock.Object, Mock.Of(), @@ -66,7 +66,7 @@ public class MultiValuePropertyEditorTests public void MultipleValueEditor_WithSingleValue_Format_Data_For_Cache() { var dataValueEditorFactoryMock = new Mock(); - var serializer = new SystemTextConfigurationEditorJsonSerializer(); + var serializer = new SystemTextConfigurationEditorJsonSerializer(new DefaultJsonSerializerEncoderFactory()); var checkBoxListPropertyEditor = new CheckBoxListPropertyEditor( dataValueEditorFactoryMock.Object, Mock.Of(), @@ -100,7 +100,7 @@ public class MultiValuePropertyEditorTests { var dataValueEditorFactoryMock = new Mock(); - var serializer = new SystemTextConfigurationEditorJsonSerializer(); + var serializer = new SystemTextConfigurationEditorJsonSerializer(new DefaultJsonSerializerEncoderFactory()); var checkBoxListPropertyEditor = new CheckBoxListPropertyEditor( dataValueEditorFactoryMock.Object, Mock.Of(), diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/PropertyEditorValueConverterTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/PropertyEditorValueConverterTests.cs index 3b38fcbc9d..2a5c7c62df 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 SystemTextJsonSerializer()); + var converter = new CheckboxListValueConverter(new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory())); var result = converter.ConvertIntermediateToObject(null, null, PropertyCacheLevel.Unknown, value, false); Assert.AreEqual(expected, result); @@ -102,7 +102,7 @@ public class PropertyEditorValueConverterTests Mock.Of(), mockPublishedContentTypeFactory.Object); - var converter = new FlexibleDropdownPropertyValueConverter(new SystemTextJsonSerializer()); + var converter = new FlexibleDropdownPropertyValueConverter(new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory())); 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/RichTextPropertyEditorHelperTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/RichTextPropertyEditorHelperTests.cs index daeed11a52..892e08cdd2 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/RichTextPropertyEditorHelperTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/RichTextPropertyEditorHelperTests.cs @@ -284,7 +284,7 @@ public class RichTextPropertyEditorHelperTests Assert.AreEqual(0, value.Blocks.SettingsData.Count); } - private IJsonSerializer JsonSerializer() => new SystemTextJsonSerializer(); + private IJsonSerializer JsonSerializer() => new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory()); private ILogger Logger() => Mock.Of(); } diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/SliderPropertyValueEditorTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/SliderPropertyValueEditorTests.cs index e677fb16c7..739c51a1ce 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/SliderPropertyValueEditorTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/SliderPropertyValueEditorTests.cs @@ -270,7 +270,7 @@ public class SliderPropertyValueEditorTests .Returns((string key, string alias, CultureInfo culture, IDictionary args) => $"{key}_{alias}"); return new SliderPropertyEditor.SliderPropertyValueEditor( Mock.Of(), - new SystemTextJsonSerializer(), + new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory()), Mock.Of(), new DataEditorAttribute("alias"), localizedTextServiceMock.Object) diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/Validators/BlockListValueRequiredValidatorTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/Validators/BlockListValueRequiredValidatorTests.cs index 3256f9d15d..c3b43c230a 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/Validators/BlockListValueRequiredValidatorTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/Validators/BlockListValueRequiredValidatorTests.cs @@ -16,7 +16,7 @@ public class BlockListValueRequiredValidatorTests [Test] public void Validates_Empty_Block_List_As_Not_Provided() { - var validator = new BlockListValueRequiredValidator(new SystemTextJsonSerializer()); + var validator = new BlockListValueRequiredValidator(new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory())); var value = JsonNode.Parse("{ \"contentData\": [], \"settingsData\": [] }"); var result = validator.ValidateRequired(value, ValueTypes.Json); @@ -26,7 +26,7 @@ public class BlockListValueRequiredValidatorTests [Test] public void Validates_Populated_Block_List_As_Provided() { - var validator = new BlockListValueRequiredValidator(new SystemTextJsonSerializer()); + var validator = new BlockListValueRequiredValidator(new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory())); var value = JsonNode.Parse("{ \"contentData\": [ {} ], \"settingsData\": [] }"); var result = validator.ValidateRequired(value, ValueTypes.Json); diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/Validators/MultiUrlPickerValueEditorValidationTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/Validators/MultiUrlPickerValueEditorValidationTests.cs index c2d4120ef3..dae1d885b2 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/Validators/MultiUrlPickerValueEditorValidationTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/Validators/MultiUrlPickerValueEditorValidationTests.cs @@ -1,4 +1,4 @@ -using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations; using Microsoft.Extensions.Logging; using Moq; using NUnit.Framework; @@ -65,7 +65,7 @@ internal class MultiUrlPickerValueEditorValidationTests Mock.Of(), new DataEditorAttribute("alias"), Mock.Of(), - new SystemTextJsonSerializer(), + new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory()), Mock.Of(), Mock.Of(), Mock.Of()) diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/Validators/TextOnlyValueEditorValidatorTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/Validators/TextOnlyValueEditorValidatorTests.cs index 14fa669b72..c385530860 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/Validators/TextOnlyValueEditorValidatorTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/Validators/TextOnlyValueEditorValidatorTests.cs @@ -61,6 +61,6 @@ internal class TextOnlyValueEditorValidatorTests new DataEditorAttribute("alias"), Mock.Of(), Mock.Of(), - new SystemTextJsonSerializer(), + new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory()), 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 8117e83a35..2682ab0e10 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Published/ConvertersTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Published/ConvertersTests.cs @@ -26,7 +26,7 @@ public class ConvertersTests var converters = new PropertyValueConverterCollection(() => new IPropertyValueConverter[] { new SimpleConverter1() }); - var serializer = new SystemTextConfigurationEditorJsonSerializer(); + var serializer = new SystemTextConfigurationEditorJsonSerializer(new DefaultJsonSerializerEncoderFactory()); var dataTypeServiceMock = new Mock(); var dataType = new DataType( new VoidEditor(Mock.Of()), serializer) @@ -103,7 +103,7 @@ public class ConvertersTests new SimpleConverter2(cacheMock.Object) ]); - var serializer = new SystemTextConfigurationEditorJsonSerializer(); + var serializer = new SystemTextConfigurationEditorJsonSerializer(new DefaultJsonSerializerEncoderFactory()); 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 81ada421de..14ddbedc9f 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 SystemTextConfigurationEditorJsonSerializer(); + var configurationEditorJsonSerializer = new SystemTextConfigurationEditorJsonSerializer(new DefaultJsonSerializerEncoderFactory()); var dataTypeServiceMock = new Mock(); var dataType = new DataType( new VoidEditor(Mock.Of()), configurationEditorJsonSerializer) @@ -103,7 +103,7 @@ public class PropertyCacheLevelTests var dataTypeServiceMock = new Mock(); var dataType = new DataType( - new VoidEditor(Mock.Of()), new SystemTextConfigurationEditorJsonSerializer()) + new VoidEditor(Mock.Of()), new SystemTextConfigurationEditorJsonSerializer(new DefaultJsonSerializerEncoderFactory())) { Id = 1 }; dataTypeServiceMock.Setup(x => x.GetAll()).Returns(dataType.Yield); @@ -171,7 +171,7 @@ public class PropertyCacheLevelTests var dataTypeServiceMock = new Mock(); var dataType = new DataType( - new VoidEditor(Mock.Of()), new SystemTextConfigurationEditorJsonSerializer()) + new VoidEditor(Mock.Of()), new SystemTextConfigurationEditorJsonSerializer(new DefaultJsonSerializerEncoderFactory())) { 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 c4504deb2c..dcf7d9c67f 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 SystemTextConfigurationEditorJsonSerializer()) + new SystemTextConfigurationEditorJsonSerializer(new DefaultJsonSerializerEncoderFactory())) { 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 979618144f..01e72ce3c9 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/PublishedCache/PublishedMediaTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/PublishedCache/PublishedMediaTests.cs @@ -27,7 +27,7 @@ // base.Setup(); // // var dataTypes = GetDefaultDataTypes().ToList(); -// var serializer = new SystemTextConfigurationEditorJsonSerializer(); +// var serializer = new SystemTextConfigurationEditorJsonSerializer(new DefaultConfigurationEditorJsonSerializerEncoderFactory()); // 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 b7748f8caf..7bb88f5a0c 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 SystemTextJsonSerializer(), + new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory()), Options.Create(new LegacyPasswordMigrationSettings { MachineKeyDecryptionKey = decryptionKey }), NullLoggerFactory.Instance.CreateLogger()); diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Serialization/JsonBlockValueConverterTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Serialization/JsonBlockValueConverterTests.cs index 7a4599540e..f48c286a91 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Serialization/JsonBlockValueConverterTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Serialization/JsonBlockValueConverterTests.cs @@ -83,7 +83,7 @@ public class JsonBlockValueConverterTests ] }; - var serializer = new SystemTextJsonSerializer(); + var serializer = new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory()); var serialized = serializer.Serialize(blockGridValue); var deserialized = serializer.Deserialize(serialized); @@ -173,7 +173,7 @@ public class JsonBlockValueConverterTests public void Can_Serialize_BlockGrid_Without_Blocks() { var blockGridValue = new BlockGridValue(); - var serializer = new SystemTextJsonSerializer(); + var serializer = new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory()); var serialized = serializer.Serialize(blockGridValue); var deserialized = serializer.Deserialize(serialized); @@ -217,7 +217,7 @@ public class JsonBlockValueConverterTests ] }; - var serializer = new SystemTextJsonSerializer(); + var serializer = new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory()); var serialized = serializer.Serialize(blockListValue); var deserialized = serializer.Deserialize(serialized); @@ -265,7 +265,7 @@ public class JsonBlockValueConverterTests public void Can_Serialize_BlockList_Without_Blocks() { var blockListValue = new BlockListValue(); - var serializer = new SystemTextJsonSerializer(); + var serializer = new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory()); var serialized = serializer.Serialize(blockListValue); var deserialized = serializer.Deserialize(serialized); @@ -315,7 +315,7 @@ public class JsonBlockValueConverterTests Markup = "

This is some markup

" }; - var serializer = new SystemTextJsonSerializer(); + var serializer = new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory()); var serialized = serializer.Serialize(richTextEditorValue); var deserialized = serializer.Deserialize(serialized); @@ -371,7 +371,7 @@ public class JsonBlockValueConverterTests Markup = "

This is some markup

" }; - var serializer = new SystemTextJsonSerializer(); + var serializer = new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory()); var serialized = serializer.Serialize(richTextEditorValue); var deserialized = serializer.Deserialize(serialized); @@ -425,7 +425,7 @@ public class JsonBlockValueConverterTests ] }; - var serializer = new SystemTextJsonSerializer(); + var serializer = new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory()); var serialized = serializer.Serialize(blockListValue); var deserialized = serializer.Deserialize(serialized); @@ -467,7 +467,7 @@ public class JsonBlockValueConverterTests } """; - var serializer = new SystemTextJsonSerializer(); + var serializer = new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory()); Assert.DoesNotThrow(() => serializer.Deserialize(json)); } } diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Serialization/SystemTextJsonSerializerTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Serialization/SystemTextJsonSerializerTests.cs index fff2509f8a..0cfd79120b 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Serialization/SystemTextJsonSerializerTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Serialization/SystemTextJsonSerializerTests.cs @@ -1,4 +1,4 @@ -using System.Text.Json.Nodes; +using System.Text.Json.Nodes; using NUnit.Framework; using Umbraco.Cms.Infrastructure.Serialization; @@ -11,7 +11,7 @@ public class SystemTextJsonSerializerTests public void TryDeserialize_Can_Handle_JsonObject() { var json = JsonNode.Parse("{\"myProperty\":\"value\"}"); - var subject = new SystemTextJsonSerializer(); + var subject = new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory()); Assert.IsTrue(subject.TryDeserialize(json!, out MyItem myItem)); Assert.AreEqual("value", myItem.MyProperty); } @@ -20,7 +20,7 @@ public class SystemTextJsonSerializerTests public void TryDeserialize_Can_Handle_JsonArray() { var json = JsonNode.Parse("[{\"myProperty\":\"value1\"},{\"myProperty\":\"value2\"}]"); - var subject = new SystemTextJsonSerializer(); + var subject = new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory()); Assert.IsTrue(subject.TryDeserialize(json!, out MyItem[] myItems)); Assert.AreEqual(2, myItems.Length); Assert.Multiple(() => @@ -34,7 +34,7 @@ public class SystemTextJsonSerializerTests public void TryDeserialize_Can_Handle_JsonString() { var json = "{\"myProperty\":\"value\"}"; - var subject = new SystemTextJsonSerializer(); + var subject = new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory()); Assert.IsTrue(subject.TryDeserialize(json, out MyItem myItem)); Assert.AreEqual("value", myItem.MyProperty); } @@ -42,7 +42,7 @@ public class SystemTextJsonSerializerTests [Test] public void TryDeserialize_Cannot_Handle_RandomString() { - var subject = new SystemTextJsonSerializer(); + var subject = new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory()); Assert.IsFalse(subject.TryDeserialize("something something", out _)); } diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Services/PropertyValidationServiceTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Services/PropertyValidationServiceTests.cs index a5273d31fc..3457ba7719 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Services/PropertyValidationServiceTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Services/PropertyValidationServiceTests.cs @@ -41,7 +41,7 @@ public class PropertyValidationServiceTests .Returns(new CustomTextOnlyValueEditor( new DataEditorAttribute(Constants.PropertyEditors.Aliases.TextBox), Mock.Of(), - new SystemTextJsonSerializer(), + new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory()), Mock.Of())); var propEditors = new PropertyEditorCollection(new DataEditorCollection(() => new[] { dataEditor })); diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Web.Common/ImageCropperTest.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Web.Common/ImageCropperTest.cs index 12dfb33fec..f537a1d5dd 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Web.Common/ImageCropperTest.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Web.Common/ImageCropperTest.cs @@ -428,7 +428,7 @@ public class ImageCropperTest private void SetupJsonSerializerServiceProvider() { var serviceProvider = new Mock(); - serviceProvider.Setup(s => s.GetService(typeof(IJsonSerializer))).Returns(new SystemTextJsonSerializer()); + serviceProvider.Setup(s => s.GetService(typeof(IJsonSerializer))).Returns(new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory())); StaticServiceProvider.Instance = serviceProvider.Object; }