From 5f37cd3d20461847f20dc37dd956b9bba7b46b68 Mon Sep 17 00:00:00 2001 From: Andy Butland Date: Thu, 20 Mar 2025 06:53:43 +0100 Subject: [PATCH] Make preview check for delivery API content case insensitive. (#18731) --- .../Services/RequestPreviewService.cs | 4 +-- .../Services/RequestPreviewServiceTests.cs | 31 +++++++++++++++++++ 2 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 tests/Umbraco.Tests.UnitTests/Umbraco.Cms.Api.Delivery/Services/RequestPreviewServiceTests.cs diff --git a/src/Umbraco.Cms.Api.Delivery/Services/RequestPreviewService.cs b/src/Umbraco.Cms.Api.Delivery/Services/RequestPreviewService.cs index 874e2af7bb..f891aee689 100644 --- a/src/Umbraco.Cms.Api.Delivery/Services/RequestPreviewService.cs +++ b/src/Umbraco.Cms.Api.Delivery/Services/RequestPreviewService.cs @@ -1,4 +1,4 @@ -using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Http; using Umbraco.Cms.Core.DeliveryApi; namespace Umbraco.Cms.Api.Delivery.Services; @@ -11,5 +11,5 @@ internal sealed class RequestPreviewService : RequestHeaderHandler, IRequestPrev } /// - public bool IsPreview() => GetHeaderValue("Preview") == "true"; + public bool IsPreview() => string.Equals(GetHeaderValue("Preview"), "true", StringComparison.OrdinalIgnoreCase); } diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Cms.Api.Delivery/Services/RequestPreviewServiceTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Cms.Api.Delivery/Services/RequestPreviewServiceTests.cs new file mode 100644 index 0000000000..6f5c5e0790 --- /dev/null +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Cms.Api.Delivery/Services/RequestPreviewServiceTests.cs @@ -0,0 +1,31 @@ +using Microsoft.AspNetCore.Http; +using Moq; +using NUnit.Framework; +using Umbraco.Cms.Api.Delivery.Services; + +namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Cms.Api.Delivery.Services; + +[TestFixture] +public class RequestPreviewServiceTests +{ + [TestCase(null, false)] + [TestCase("", false)] + [TestCase("false", false)] + [TestCase("true", true)] + [TestCase("True", true)] + public void IsPreview_Returns_Expected_Result(string? headerValue, bool expected) + { + var httpContext = new DefaultHttpContext(); + httpContext.Request.Headers["Preview"] = headerValue; + + var httpContextAccessorMock = new Mock(); + httpContextAccessorMock + .Setup(x => x.HttpContext) + .Returns(httpContext); + var sut = new RequestPreviewService(httpContextAccessorMock.Object); + + var result = sut.IsPreview(); + + Assert.AreEqual(expected, result); + } +}