* Uses correct preview cookie same site and secure settings to allow preview mode to flow between links in the preview frame. * Fixed comment.
54 lines
1.7 KiB
C#
54 lines
1.7 KiB
C#
using Microsoft.AspNetCore.Http;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Moq;
|
|
using NUnit.Framework;
|
|
using Umbraco.Cms.Core;
|
|
using Umbraco.Cms.Core.Cache;
|
|
using Umbraco.Cms.Core.Preview;
|
|
using Umbraco.Cms.Core.Services;
|
|
using Umbraco.Cms.Core.Web;
|
|
using Umbraco.Cms.Tests.Common.Builders;
|
|
using Umbraco.Cms.Tests.Common.Builders.Extensions;
|
|
|
|
namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Core.Services;
|
|
|
|
[TestFixture]
|
|
public class PreviewServiceTests
|
|
{
|
|
[Test]
|
|
public async Task TryEnterPreviewAsync_Sets_Expected_Cookie_On_Successful_Token_Generation()
|
|
{
|
|
var userKey = Guid.NewGuid();
|
|
const string Token = "token";
|
|
|
|
var cookieManagerMock = new Mock<ICookieManager>();
|
|
|
|
var previewTokenGeneratorMock = new Mock<IPreviewTokenGenerator>();
|
|
previewTokenGeneratorMock
|
|
.Setup(x => x.GenerateTokenAsync(It.Is<Guid>(y => y == userKey)))
|
|
.ReturnsAsync(Attempt<string?>.Succeed(Token));
|
|
|
|
var previewService = new PreviewService(
|
|
cookieManagerMock.Object,
|
|
previewTokenGeneratorMock.Object,
|
|
Mock.Of<IServiceScopeFactory>(),
|
|
Mock.Of<IRequestCache>());
|
|
|
|
var user = new UserBuilder()
|
|
.WithKey(userKey)
|
|
.Build();
|
|
|
|
var result = await previewService.TryEnterPreviewAsync(user);
|
|
|
|
cookieManagerMock
|
|
.Verify(x => x.SetCookieValue(
|
|
It.Is<string>(y => y == Constants.Web.PreviewCookieName),
|
|
It.Is<string>(y => y == Token),
|
|
It.Is<bool>(y => y == true),
|
|
It.Is<bool>(y => y == true),
|
|
It.Is<string>(y => y == SameSiteMode.None.ToString())));
|
|
|
|
Assert.IsTrue(result);
|
|
}
|
|
}
|