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); + } +}