From bc17b7463daee9ff834e9bc55b27299f154f766e Mon Sep 17 00:00:00 2001 From: Bjarke Berg Date: Tue, 23 Feb 2021 10:52:55 +0100 Subject: [PATCH] Added test of AddOrUpdateClaim --- .../ClaimsPrincipalExtensionsTests.cs | 51 ++++++++++++++++--- 1 file changed, 43 insertions(+), 8 deletions(-) diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Extensions/ClaimsPrincipalExtensionsTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Extensions/ClaimsPrincipalExtensionsTests.cs index 0a941f9b59..f0ec8698ee 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Extensions/ClaimsPrincipalExtensionsTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Extensions/ClaimsPrincipalExtensionsTests.cs @@ -5,9 +5,8 @@ using System; using System.Linq; using System.Security.Claims; using NUnit.Framework; -using Umbraco.Cms.Core.Security; +using Umbraco.Cms.Core; using Umbraco.Extensions; -using Constants = Umbraco.Cms.Core.Constants; namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Core.Extensions { @@ -39,16 +38,52 @@ namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Core.Extensions var expires = now.AddSeconds(expireSeconds).ToString("o"); backOfficeIdentity.AddClaim(new Claim( - Constants.Security.TicketExpiresClaimType, - expires, - ClaimValueTypes.DateTime, - Constants.Security.BackOfficeAuthenticationType, - Constants.Security.BackOfficeAuthenticationType, - backOfficeIdentity)); + Constants.Security.TicketExpiresClaimType, + expires, + ClaimValueTypes.DateTime, + Constants.Security.BackOfficeAuthenticationType, + Constants.Security.BackOfficeAuthenticationType, + backOfficeIdentity)); var ticketRemainingSeconds = principal.GetRemainingAuthSeconds(then); Assert.AreEqual(remainingSeconds, ticketRemainingSeconds); } + + [Test] + public void AddOrUpdateClaim__Should_ensure_a_claim_is_not_added_twice() + { + var backOfficeIdentity = new ClaimsIdentity(); + backOfficeIdentity.AddRequiredClaims( + Constants.Security.SuperUserIdAsString, + "test", + "test", + Enumerable.Empty(), + Enumerable.Empty(), + "en-US", + Guid.NewGuid().ToString(), + Enumerable.Empty(), + Enumerable.Empty()); + + var expireSeconds = 99; + + DateTimeOffset now = DateTimeOffset.Now; + + var expires = now.AddSeconds(expireSeconds).ToString("o"); + + + var claim = new Claim( + Constants.Security.TicketExpiresClaimType, + expires, + ClaimValueTypes.DateTime, + Constants.Security.BackOfficeAuthenticationType, + Constants.Security.BackOfficeAuthenticationType, + backOfficeIdentity); + + backOfficeIdentity.AddOrUpdateClaim(claim); + backOfficeIdentity.AddOrUpdateClaim(claim); + + Assert.AreEqual(1, backOfficeIdentity.Claims.Count(x=>x.Type == Constants.Security.TicketExpiresClaimType)); + } } }