From ef6a9f5d371f09e2a618c8b672e47d07890750fe Mon Sep 17 00:00:00 2001 From: volkanceylan Date: Fri, 28 Feb 2025 14:09:50 +0300 Subject: [PATCH] Share test mocks --- .../testutils/mocks/MockUserAccessor.cs | 39 ++++++++++++++++++- .../testutils/nullmocks/NullRequestContext.cs | 7 ++++ 2 files changed, 44 insertions(+), 2 deletions(-) diff --git a/tests/Serenity.Net.Tests/testutils/mocks/MockUserAccessor.cs b/tests/Serenity.Net.Tests/testutils/mocks/MockUserAccessor.cs index cef1ce2752..c68879b2bf 100644 --- a/tests/Serenity.Net.Tests/testutils/mocks/MockUserAccessor.cs +++ b/tests/Serenity.Net.Tests/testutils/mocks/MockUserAccessor.cs @@ -5,6 +5,16 @@ namespace Serenity.TestUtils; public class MockUserAccessor : IUserAccessor { private readonly Func getUser; + private readonly Func getUsername; + private readonly Func getIdentifier; + private readonly Action configureIdentity; + + public MockUserAccessor(Func getUsername, Func getIdentifier = null, Action configureIdentity = null) + { + this.getUsername = getUsername ?? throw new ArgumentNullException(nameof(getUsername)); + this.getIdentifier = getIdentifier; + this.configureIdentity = configureIdentity; + } public MockUserAccessor(Func getUser) { @@ -32,5 +42,30 @@ public MockUserAccessor(Func getUsername) }; } - public ClaimsPrincipal User => getUser(); -} \ No newline at end of file + public ClaimsPrincipal User + { + get + { + if (getUser != null) + return getUser(); + + var username = getUsername(); + if (username == null) + return null; + + var identity = new GenericIdentity(username, "Test"); + var claimsPrincipal = new ClaimsPrincipal(identity); + + if (getIdentifier != null) + { + var identifier = getIdentifier(); + if (identifier != null) + identity.AddClaim(new Claim(ClaimTypes.NameIdentifier, getIdentifier())); + } + + configureIdentity?.Invoke(identity); + + return claimsPrincipal; + } + } +} diff --git a/tests/Serenity.Net.Tests/testutils/nullmocks/NullRequestContext.cs b/tests/Serenity.Net.Tests/testutils/nullmocks/NullRequestContext.cs index 644c3651c2..246e07072e 100644 --- a/tests/Serenity.Net.Tests/testutils/nullmocks/NullRequestContext.cs +++ b/tests/Serenity.Net.Tests/testutils/nullmocks/NullRequestContext.cs @@ -27,6 +27,13 @@ public NullRequestContext AsGuest() return this; } + public NullRequestContext AsGuest(string identifier) + { + UserAccessor = new MockUserAccessor(() => TestUser.Guest, () => identifier); + Permissions = new MockPermissions(perm => false); + return this; + } + public NullRequestContext WithPermissions(Func hasPermission) { Permissions = new MockPermissions(hasPermission);