using Moq; using Strata.CoreLib.Claims; using Strata.FeatureFlags.Client; using System; using System.Collections.Generic; using System.Security.Claims; using System.Threading; using System.Threading.Tasks; namespace Strata.ContinuousImprovement.Biz.Test.Unit.Utilities { public static class TestUtilities { public const string UserGuid = "eb7e4993-c65a-493a-9614-986a55dd0744"; public const string DbGuid = "54409f55-5ddf-4748-8222-9ccfb04fb4f5"; public const string ClientDbGuid = "1742934B-C508-402B-B8B5-D18C506474CB"; public const string Username = "a"; public const string Key = UserGuid + Username; public const string DbVersion = "202133"; public static IClaimsPrincipalAccessor GetClaimsPrincipalAccessor(string userGuid = null, string userName = null, bool isSdtEmployee = true, bool isClientDatabase = false, bool isEmptyDatabase = false, int strataId = 0) { var dbGuid = DbGuid; if (isClientDatabase) { dbGuid = ClientDbGuid; } if (isEmptyDatabase) { dbGuid = Guid.Empty.ToString(); } var claims = new List { new Claim(ClaimTypes.Name, "Name"), new Claim(StrataClaims.UserGuid, userGuid ?? UserGuid), new Claim(StrataClaims.Username, userName ?? Username), new Claim("given_name", "Firstname"), new Claim("family_name", "Lastname"), new Claim(StrataClaims.FirstName, "Firstname"), new Claim(StrataClaims.LastName, "Lastname"), new Claim(StrataClaims.DatabaseVersion, DbVersion), new Claim("strata_id", strataId.ToString()), new Claim(StrataClaims.DatabaseGuid, dbGuid), new Claim(StrataClaims.IsSdtEmployee, isSdtEmployee.ToString()) }; var claimIdentity = new ClaimsIdentity(claims, "mock"); var claimsPrincipal = new ClaimsPrincipal(new[] { claimIdentity }); var claimsPrincipalAccessorMock = new Mock(); claimsPrincipalAccessorMock.Setup(s => s.GetCurrentClaimsPrincipal()).Returns(claimsPrincipal); return claimsPrincipalAccessorMock.Object; } internal static IFeatureFlagServiceClient GetFeatureFlagServiceClient(string featureFlag, bool isOn = true) { var featureFlagServiceClient = Mock.Of(); Mock.Get(featureFlagServiceClient) .Setup(s => s.IsEnabledAsync(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny())) .Returns((flag, dbGuid, defaultValue, returnDefaultValue, token) => Task.FromResult(flag == featureFlag && dbGuid.ToString() == DbGuid ? isOn : !isOn)); return featureFlagServiceClient; } } }