From 32d8ecd399fe2e200606c33c7891201fc7ee38fb Mon Sep 17 00:00:00 2001 From: Stef Heyenrath Date: Sun, 3 May 2026 09:51:34 +0200 Subject: [PATCH] fix findings --- .../Settings/WireMockServerSettingsParser.cs | 2 +- .../Transformers/NewtonsoftJsonBodyTransformer.cs | 1 + .../Transformers/SystemTextJsonBodyTransformer.cs | 5 +++-- .../Transformers/JsonBodyTransformerTests.cs | 6 ++++-- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/WireMock.Net.Minimal/Settings/WireMockServerSettingsParser.cs b/src/WireMock.Net.Minimal/Settings/WireMockServerSettingsParser.cs index e862389c..af3a8c00 100644 --- a/src/WireMock.Net.Minimal/Settings/WireMockServerSettingsParser.cs +++ b/src/WireMock.Net.Minimal/Settings/WireMockServerSettingsParser.cs @@ -276,7 +276,7 @@ public static class WireMockServerSettingsParser var defaultJsonBodyTransformer = parser.GetStringValue(nameof(WireMockServerSettings.DefaultJsonBodyTransformer)); settings.DefaultJsonBodyTransformer = defaultJsonBodyTransformer switch { - nameof(SystemTextJsonBodyTransformer) => new SystemTextJsonBodyTransformer(), + nameof(SystemTextJsonBodyTransformer) => new SystemTextJsonBodyTransformer(settings), _ => new NewtonsoftJsonBodyTransformer(settings), }; } diff --git a/src/WireMock.Net.Shared/Transformers/NewtonsoftJsonBodyTransformer.cs b/src/WireMock.Net.Shared/Transformers/NewtonsoftJsonBodyTransformer.cs index 1765fcd3..920b05fa 100644 --- a/src/WireMock.Net.Shared/Transformers/NewtonsoftJsonBodyTransformer.cs +++ b/src/WireMock.Net.Shared/Transformers/NewtonsoftJsonBodyTransformer.cs @@ -86,6 +86,7 @@ public class NewtonsoftJsonBodyTransformer(WireMockServerSettings settings) : IJ } catch { + settings.Logger.Warn("Failed to parse string ''{0}'' as JSON. Returning the original string value.", stringValue); } } diff --git a/src/WireMock.Net.Shared/Transformers/SystemTextJsonBodyTransformer.cs b/src/WireMock.Net.Shared/Transformers/SystemTextJsonBodyTransformer.cs index df87e58b..66ee02df 100644 --- a/src/WireMock.Net.Shared/Transformers/SystemTextJsonBodyTransformer.cs +++ b/src/WireMock.Net.Shared/Transformers/SystemTextJsonBodyTransformer.cs @@ -6,6 +6,7 @@ using System.Text.Json.Nodes; using HandlebarsDotNet.Helpers.Models; using JetBrains.Annotations; using JsonConverter.System.Text.Json; +using WireMock.Settings; using WireMock.Types; using WireMock.Util; @@ -15,7 +16,7 @@ namespace WireMock.Transformers; /// JSON body transformer implementation based on System.Text.Json. /// [PublicAPI] -public class SystemTextJsonBodyTransformer() : IJsonBodyTransformer +public class SystemTextJsonBodyTransformer(WireMockServerSettings settings) : IJsonBodyTransformer { private static readonly SystemTextJsonConverter _jsonConverter = new(); @@ -85,7 +86,7 @@ public class SystemTextJsonBodyTransformer() : IJsonBodyTransformer } catch { - // Ignore and return as string. + settings.Logger.Warn("Failed to parse string ''{0}'' as JSON. Returning the original string value.", stringValue); } } diff --git a/test/WireMock.Net.Tests/Transformers/JsonBodyTransformerTests.cs b/test/WireMock.Net.Tests/Transformers/JsonBodyTransformerTests.cs index 8c0e2530..1de0db5d 100644 --- a/test/WireMock.Net.Tests/Transformers/JsonBodyTransformerTests.cs +++ b/test/WireMock.Net.Tests/Transformers/JsonBodyTransformerTests.cs @@ -19,15 +19,17 @@ public class JsonBodyTransformerTests { get { + var settings = new WireMockServerSettings(); + return [ new JsonBodyTransformerTestContext( - () => new NewtonsoftJsonBodyTransformer(new WireMockServerSettings()), + () => new NewtonsoftJsonBodyTransformer(settings), JObject.Parse, body => ((JToken)body).ToString(Formatting.None)), new JsonBodyTransformerTestContext( - () => new SystemTextJsonBodyTransformer(), + () => new SystemTextJsonBodyTransformer(settings), json => JsonNode.Parse(json)!, body => ((JsonNode)body).ToJsonString()) ];