mirror of
https://github.com/bitwarden/server
synced 2025-12-15 07:43:54 +00:00
[PM-23116/PM-23117] Remove deprecated feature flag MembersGetEndpointOptimization (#6179)
* Refactor OrganizationUserRepositoryTests: Swap GetManyByOrganizationWithClaimedDomainsAsync_vNext with GetManyByOrganizationWithClaimedDomainsAsync and remove outdated test * Refactor GetOrganizationUsersClaimedStatusQuery: Remove unused IFeatureService dependency and simplify domain claimed status retrieval logic. * Refactor OrganizationUserUserDetailsQuery: Remove unused IFeatureService dependency and streamline user details retrieval methods. * Refactor OrganizationUserRepository: Remove deprecated GetManyByOrganizationWithClaimedDomainsAsync_vNext method and its implementation * Remove deprecated feature flag MembersGetEndpointOptimization
This commit is contained in:
@@ -8,16 +8,13 @@ public class GetOrganizationUsersClaimedStatusQuery : IGetOrganizationUsersClaim
|
|||||||
{
|
{
|
||||||
private readonly IApplicationCacheService _applicationCacheService;
|
private readonly IApplicationCacheService _applicationCacheService;
|
||||||
private readonly IOrganizationUserRepository _organizationUserRepository;
|
private readonly IOrganizationUserRepository _organizationUserRepository;
|
||||||
private readonly IFeatureService _featureService;
|
|
||||||
|
|
||||||
public GetOrganizationUsersClaimedStatusQuery(
|
public GetOrganizationUsersClaimedStatusQuery(
|
||||||
IApplicationCacheService applicationCacheService,
|
IApplicationCacheService applicationCacheService,
|
||||||
IOrganizationUserRepository organizationUserRepository,
|
IOrganizationUserRepository organizationUserRepository)
|
||||||
IFeatureService featureService)
|
|
||||||
{
|
{
|
||||||
_applicationCacheService = applicationCacheService;
|
_applicationCacheService = applicationCacheService;
|
||||||
_organizationUserRepository = organizationUserRepository;
|
_organizationUserRepository = organizationUserRepository;
|
||||||
_featureService = featureService;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<IDictionary<Guid, bool>> GetUsersOrganizationClaimedStatusAsync(Guid organizationId, IEnumerable<Guid> organizationUserIds)
|
public async Task<IDictionary<Guid, bool>> GetUsersOrganizationClaimedStatusAsync(Guid organizationId, IEnumerable<Guid> organizationUserIds)
|
||||||
@@ -30,9 +27,7 @@ public class GetOrganizationUsersClaimedStatusQuery : IGetOrganizationUsersClaim
|
|||||||
if (organizationAbility is { Enabled: true, UseOrganizationDomains: true })
|
if (organizationAbility is { Enabled: true, UseOrganizationDomains: true })
|
||||||
{
|
{
|
||||||
// Get all organization users with claimed domains by the organization
|
// Get all organization users with claimed domains by the organization
|
||||||
var organizationUsersWithClaimedDomain = _featureService.IsEnabled(FeatureFlagKeys.MembersGetEndpointOptimization)
|
var organizationUsersWithClaimedDomain = await _organizationUserRepository.GetManyByOrganizationWithClaimedDomainsAsync(organizationId);
|
||||||
? await _organizationUserRepository.GetManyByOrganizationWithClaimedDomainsAsync_vNext(organizationId)
|
|
||||||
: await _organizationUserRepository.GetManyByOrganizationWithClaimedDomainsAsync(organizationId);
|
|
||||||
|
|
||||||
// Create a dictionary with the OrganizationUserId and a boolean indicating if the user is claimed by the organization
|
// Create a dictionary with the OrganizationUserId and a boolean indicating if the user is claimed by the organization
|
||||||
return organizationUserIds.ToDictionary(ouId => ouId, ouId => organizationUsersWithClaimedDomain.Any(ou => ou.Id == ouId));
|
return organizationUserIds.ToDictionary(ouId => ouId, ouId => organizationUsersWithClaimedDomain.Any(ou => ou.Id == ouId));
|
||||||
|
|||||||
@@ -1,10 +1,8 @@
|
|||||||
using Bit.Core;
|
using Bit.Core.AdminConsole.OrganizationFeatures.OrganizationUsers.Interfaces;
|
||||||
using Bit.Core.AdminConsole.OrganizationFeatures.OrganizationUsers.Interfaces;
|
|
||||||
using Bit.Core.Auth.UserFeatures.TwoFactorAuth.Interfaces;
|
using Bit.Core.Auth.UserFeatures.TwoFactorAuth.Interfaces;
|
||||||
using Bit.Core.Enums;
|
using Bit.Core.Enums;
|
||||||
using Bit.Core.Models.Data.Organizations.OrganizationUsers;
|
using Bit.Core.Models.Data.Organizations.OrganizationUsers;
|
||||||
using Bit.Core.Repositories;
|
using Bit.Core.Repositories;
|
||||||
using Bit.Core.Services;
|
|
||||||
using Bit.Core.Utilities;
|
using Bit.Core.Utilities;
|
||||||
using Core.AdminConsole.OrganizationFeatures.OrganizationUsers.Interfaces;
|
using Core.AdminConsole.OrganizationFeatures.OrganizationUsers.Interfaces;
|
||||||
using Core.AdminConsole.OrganizationFeatures.OrganizationUsers.Requests;
|
using Core.AdminConsole.OrganizationFeatures.OrganizationUsers.Requests;
|
||||||
@@ -15,19 +13,16 @@ public class OrganizationUserUserDetailsQuery : IOrganizationUserUserDetailsQuer
|
|||||||
{
|
{
|
||||||
private readonly IOrganizationUserRepository _organizationUserRepository;
|
private readonly IOrganizationUserRepository _organizationUserRepository;
|
||||||
private readonly ITwoFactorIsEnabledQuery _twoFactorIsEnabledQuery;
|
private readonly ITwoFactorIsEnabledQuery _twoFactorIsEnabledQuery;
|
||||||
private readonly IFeatureService _featureService;
|
|
||||||
private readonly IGetOrganizationUsersClaimedStatusQuery _getOrganizationUsersClaimedStatusQuery;
|
private readonly IGetOrganizationUsersClaimedStatusQuery _getOrganizationUsersClaimedStatusQuery;
|
||||||
|
|
||||||
public OrganizationUserUserDetailsQuery(
|
public OrganizationUserUserDetailsQuery(
|
||||||
IOrganizationUserRepository organizationUserRepository,
|
IOrganizationUserRepository organizationUserRepository,
|
||||||
ITwoFactorIsEnabledQuery twoFactorIsEnabledQuery,
|
ITwoFactorIsEnabledQuery twoFactorIsEnabledQuery,
|
||||||
IFeatureService featureService,
|
|
||||||
IGetOrganizationUsersClaimedStatusQuery getOrganizationUsersClaimedStatusQuery
|
IGetOrganizationUsersClaimedStatusQuery getOrganizationUsersClaimedStatusQuery
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
_organizationUserRepository = organizationUserRepository;
|
_organizationUserRepository = organizationUserRepository;
|
||||||
_twoFactorIsEnabledQuery = twoFactorIsEnabledQuery;
|
_twoFactorIsEnabledQuery = twoFactorIsEnabledQuery;
|
||||||
_featureService = featureService;
|
|
||||||
_getOrganizationUsersClaimedStatusQuery = getOrganizationUsersClaimedStatusQuery;
|
_getOrganizationUsersClaimedStatusQuery = getOrganizationUsersClaimedStatusQuery;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -62,47 +57,6 @@ public class OrganizationUserUserDetailsQuery : IOrganizationUserUserDetailsQuer
|
|||||||
/// <param name="request">Request details for the query</param>
|
/// <param name="request">Request details for the query</param>
|
||||||
/// <returns>List of OrganizationUserUserDetails</returns>
|
/// <returns>List of OrganizationUserUserDetails</returns>
|
||||||
public async Task<IEnumerable<(OrganizationUserUserDetails OrgUser, bool TwoFactorEnabled, bool ClaimedByOrganization)>> Get(OrganizationUserUserDetailsQueryRequest request)
|
public async Task<IEnumerable<(OrganizationUserUserDetails OrgUser, bool TwoFactorEnabled, bool ClaimedByOrganization)>> Get(OrganizationUserUserDetailsQueryRequest request)
|
||||||
{
|
|
||||||
if (_featureService.IsEnabled(FeatureFlagKeys.MembersGetEndpointOptimization))
|
|
||||||
{
|
|
||||||
return await Get_vNext(request);
|
|
||||||
}
|
|
||||||
|
|
||||||
var organizationUsers = await GetOrganizationUserUserDetails(request);
|
|
||||||
|
|
||||||
var organizationUsersTwoFactorEnabled = (await _twoFactorIsEnabledQuery.TwoFactorIsEnabledAsync(organizationUsers)).ToDictionary(u => u.user.Id);
|
|
||||||
var organizationUsersClaimedStatus = await _getOrganizationUsersClaimedStatusQuery.GetUsersOrganizationClaimedStatusAsync(request.OrganizationId, organizationUsers.Select(o => o.Id));
|
|
||||||
var responses = organizationUsers.Select(o => (o, organizationUsersTwoFactorEnabled[o.Id].twoFactorIsEnabled, organizationUsersClaimedStatus[o.Id]));
|
|
||||||
|
|
||||||
|
|
||||||
return responses;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Get the organization users user details, two factor enabled status, and
|
|
||||||
/// claimed status for confirmed users that are enrolled in account recovery
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="request">Request details for the query</param>
|
|
||||||
/// <returns>List of OrganizationUserUserDetails</returns>
|
|
||||||
public async Task<IEnumerable<(OrganizationUserUserDetails OrgUser, bool TwoFactorEnabled, bool ClaimedByOrganization)>> GetAccountRecoveryEnrolledUsers(OrganizationUserUserDetailsQueryRequest request)
|
|
||||||
{
|
|
||||||
if (_featureService.IsEnabled(FeatureFlagKeys.MembersGetEndpointOptimization))
|
|
||||||
{
|
|
||||||
return await GetAccountRecoveryEnrolledUsers_vNext(request);
|
|
||||||
}
|
|
||||||
|
|
||||||
var organizationUsers = (await GetOrganizationUserUserDetails(request))
|
|
||||||
.Where(o => o.Status.Equals(OrganizationUserStatusType.Confirmed) && o.UsesKeyConnector == false && !String.IsNullOrEmpty(o.ResetPasswordKey));
|
|
||||||
|
|
||||||
var organizationUsersTwoFactorEnabled = (await _twoFactorIsEnabledQuery.TwoFactorIsEnabledAsync(organizationUsers)).ToDictionary(u => u.user.Id);
|
|
||||||
var organizationUsersClaimedStatus = await _getOrganizationUsersClaimedStatusQuery.GetUsersOrganizationClaimedStatusAsync(request.OrganizationId, organizationUsers.Select(o => o.Id));
|
|
||||||
var responses = organizationUsers
|
|
||||||
.Select(o => (o, organizationUsersTwoFactorEnabled[o.Id].twoFactorIsEnabled, organizationUsersClaimedStatus[o.Id]));
|
|
||||||
|
|
||||||
return responses;
|
|
||||||
}
|
|
||||||
|
|
||||||
private async Task<IEnumerable<(OrganizationUserUserDetails OrgUser, bool TwoFactorEnabled, bool ClaimedByOrganization)>> Get_vNext(OrganizationUserUserDetailsQueryRequest request)
|
|
||||||
{
|
{
|
||||||
var organizationUsers = await _organizationUserRepository
|
var organizationUsers = await _organizationUserRepository
|
||||||
.GetManyDetailsByOrganizationAsync_vNext(request.OrganizationId, request.IncludeGroups, request.IncludeCollections);
|
.GetManyDetailsByOrganizationAsync_vNext(request.OrganizationId, request.IncludeGroups, request.IncludeCollections);
|
||||||
@@ -132,7 +86,13 @@ public class OrganizationUserUserDetailsQuery : IOrganizationUserUserDetailsQuer
|
|||||||
return responses;
|
return responses;
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task<IEnumerable<(OrganizationUserUserDetails OrgUser, bool TwoFactorEnabled, bool ClaimedByOrganization)>> GetAccountRecoveryEnrolledUsers_vNext(OrganizationUserUserDetailsQueryRequest request)
|
/// <summary>
|
||||||
|
/// Get the organization users user details, two factor enabled status, and
|
||||||
|
/// claimed status for confirmed users that are enrolled in account recovery
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="request">Request details for the query</param>
|
||||||
|
/// <returns>List of OrganizationUserUserDetails</returns>
|
||||||
|
public async Task<IEnumerable<(OrganizationUserUserDetails OrgUser, bool TwoFactorEnabled, bool ClaimedByOrganization)>> GetAccountRecoveryEnrolledUsers(OrganizationUserUserDetailsQueryRequest request)
|
||||||
{
|
{
|
||||||
var organizationUsers = (await _organizationUserRepository
|
var organizationUsers = (await _organizationUserRepository
|
||||||
.GetManyDetailsByOrganizationAsync_vNext(request.OrganizationId, request.IncludeGroups, request.IncludeCollections))
|
.GetManyDetailsByOrganizationAsync_vNext(request.OrganizationId, request.IncludeGroups, request.IncludeCollections))
|
||||||
|
|||||||
@@ -76,10 +76,6 @@ public interface IOrganizationUserRepository : IRepository<OrganizationUser, Gui
|
|||||||
/// Returns a list of OrganizationUsers with email domains that match one of the Organization's claimed domains.
|
/// Returns a list of OrganizationUsers with email domains that match one of the Organization's claimed domains.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
Task<ICollection<OrganizationUser>> GetManyByOrganizationWithClaimedDomainsAsync(Guid organizationId);
|
Task<ICollection<OrganizationUser>> GetManyByOrganizationWithClaimedDomainsAsync(Guid organizationId);
|
||||||
/// <summary>
|
|
||||||
/// Optimized version of <see cref="GetManyByOrganizationWithClaimedDomainsAsync"/> with better performance.
|
|
||||||
/// </summary>
|
|
||||||
Task<ICollection<OrganizationUser>> GetManyByOrganizationWithClaimedDomainsAsync_vNext(Guid organizationId);
|
|
||||||
Task RevokeManyByIdAsync(IEnumerable<Guid> organizationUserIds);
|
Task RevokeManyByIdAsync(IEnumerable<Guid> organizationUserIds);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -115,7 +115,6 @@ public static class FeatureFlagKeys
|
|||||||
public const string SeparateCustomRolePermissions = "pm-19917-separate-custom-role-permissions";
|
public const string SeparateCustomRolePermissions = "pm-19917-separate-custom-role-permissions";
|
||||||
public const string ImportAsyncRefactor = "pm-22583-refactor-import-async";
|
public const string ImportAsyncRefactor = "pm-22583-refactor-import-async";
|
||||||
public const string CreateDefaultLocation = "pm-19467-create-default-location";
|
public const string CreateDefaultLocation = "pm-19467-create-default-location";
|
||||||
public const string MembersGetEndpointOptimization = "pm-23113-optimize-get-members-endpoint";
|
|
||||||
public const string DirectoryConnectorPreventUserRemoval = "pm-24592-directory-connector-prevent-user-removal";
|
public const string DirectoryConnectorPreventUserRemoval = "pm-24592-directory-connector-prevent-user-removal";
|
||||||
|
|
||||||
/* Auth Team */
|
/* Auth Team */
|
||||||
|
|||||||
@@ -608,19 +608,6 @@ public class OrganizationUserRepository : Repository<OrganizationUser, Guid>, IO
|
|||||||
}
|
}
|
||||||
|
|
||||||
public async Task<ICollection<OrganizationUser>> GetManyByOrganizationWithClaimedDomainsAsync(Guid organizationId)
|
public async Task<ICollection<OrganizationUser>> GetManyByOrganizationWithClaimedDomainsAsync(Guid organizationId)
|
||||||
{
|
|
||||||
using (var connection = new SqlConnection(ConnectionString))
|
|
||||||
{
|
|
||||||
var results = await connection.QueryAsync<OrganizationUser>(
|
|
||||||
$"[{Schema}].[OrganizationUser_ReadByOrganizationIdWithClaimedDomains]",
|
|
||||||
new { OrganizationId = organizationId },
|
|
||||||
commandType: CommandType.StoredProcedure);
|
|
||||||
|
|
||||||
return results.ToList();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public async Task<ICollection<OrganizationUser>> GetManyByOrganizationWithClaimedDomainsAsync_vNext(Guid organizationId)
|
|
||||||
{
|
{
|
||||||
using (var connection = new SqlConnection(ConnectionString))
|
using (var connection = new SqlConnection(ConnectionString))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -786,12 +786,6 @@ public class OrganizationUserRepository : Repository<Core.Entities.OrganizationU
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<ICollection<Core.Entities.OrganizationUser>> GetManyByOrganizationWithClaimedDomainsAsync_vNext(Guid organizationId)
|
|
||||||
{
|
|
||||||
// No EF optimization is required for this query
|
|
||||||
return await GetManyByOrganizationWithClaimedDomainsAsync(organizationId);
|
|
||||||
}
|
|
||||||
|
|
||||||
public async Task RevokeManyByIdAsync(IEnumerable<Guid> organizationUserIds)
|
public async Task RevokeManyByIdAsync(IEnumerable<Guid> organizationUserIds)
|
||||||
{
|
{
|
||||||
using var scope = ServiceScopeFactory.CreateScope();
|
using var scope = ServiceScopeFactory.CreateScope();
|
||||||
|
|||||||
@@ -354,134 +354,6 @@ public class OrganizationUserRepositoryTests
|
|||||||
Assert.Equal(organization.UseAdminSponsoredFamilies, result.UseAdminSponsoredFamilies);
|
Assert.Equal(organization.UseAdminSponsoredFamilies, result.UseAdminSponsoredFamilies);
|
||||||
}
|
}
|
||||||
|
|
||||||
[DatabaseTheory, DatabaseData]
|
|
||||||
public async Task GetManyByOrganizationWithClaimedDomainsAsync_WithVerifiedDomain_WithOneMatchingEmailDomain_ReturnsSingle(
|
|
||||||
IUserRepository userRepository,
|
|
||||||
IOrganizationRepository organizationRepository,
|
|
||||||
IOrganizationUserRepository organizationUserRepository,
|
|
||||||
IOrganizationDomainRepository organizationDomainRepository)
|
|
||||||
{
|
|
||||||
var id = Guid.NewGuid();
|
|
||||||
var domainName = $"{id}.example.com";
|
|
||||||
|
|
||||||
var user1 = await userRepository.CreateAsync(new User
|
|
||||||
{
|
|
||||||
Name = "Test User 1",
|
|
||||||
Email = $"test+{id}@{domainName}",
|
|
||||||
ApiKey = "TEST",
|
|
||||||
SecurityStamp = "stamp",
|
|
||||||
Kdf = KdfType.PBKDF2_SHA256,
|
|
||||||
KdfIterations = 1,
|
|
||||||
KdfMemory = 2,
|
|
||||||
KdfParallelism = 3
|
|
||||||
});
|
|
||||||
|
|
||||||
var user2 = await userRepository.CreateAsync(new User
|
|
||||||
{
|
|
||||||
Name = "Test User 2",
|
|
||||||
Email = $"test+{id}@x-{domainName}", // Different domain
|
|
||||||
ApiKey = "TEST",
|
|
||||||
SecurityStamp = "stamp",
|
|
||||||
Kdf = KdfType.PBKDF2_SHA256,
|
|
||||||
KdfIterations = 1,
|
|
||||||
KdfMemory = 2,
|
|
||||||
KdfParallelism = 3
|
|
||||||
});
|
|
||||||
|
|
||||||
var user3 = await userRepository.CreateAsync(new User
|
|
||||||
{
|
|
||||||
Name = "Test User 2",
|
|
||||||
Email = $"test+{id}@{domainName}.example.com", // Different domain
|
|
||||||
ApiKey = "TEST",
|
|
||||||
SecurityStamp = "stamp",
|
|
||||||
Kdf = KdfType.PBKDF2_SHA256,
|
|
||||||
KdfIterations = 1,
|
|
||||||
KdfMemory = 2,
|
|
||||||
KdfParallelism = 3
|
|
||||||
});
|
|
||||||
|
|
||||||
var organization = await organizationRepository.CreateAsync(new Organization
|
|
||||||
{
|
|
||||||
Name = $"Test Org {id}",
|
|
||||||
BillingEmail = user1.Email, // TODO: EF does not enforce this being NOT NULl
|
|
||||||
Plan = "Test", // TODO: EF does not enforce this being NOT NULl
|
|
||||||
PrivateKey = "privatekey",
|
|
||||||
UsePolicies = false,
|
|
||||||
UseSso = false,
|
|
||||||
UseKeyConnector = false,
|
|
||||||
UseScim = false,
|
|
||||||
UseGroups = false,
|
|
||||||
UseDirectory = false,
|
|
||||||
UseEvents = false,
|
|
||||||
UseTotp = false,
|
|
||||||
Use2fa = false,
|
|
||||||
UseApi = false,
|
|
||||||
UseResetPassword = false,
|
|
||||||
UseSecretsManager = false,
|
|
||||||
SelfHost = false,
|
|
||||||
UsersGetPremium = false,
|
|
||||||
UseCustomPermissions = false,
|
|
||||||
Enabled = true,
|
|
||||||
UsePasswordManager = false,
|
|
||||||
LimitCollectionCreation = false,
|
|
||||||
LimitCollectionDeletion = false,
|
|
||||||
LimitItemDeletion = false,
|
|
||||||
AllowAdminAccessToAllCollectionItems = false,
|
|
||||||
UseRiskInsights = false,
|
|
||||||
UseAdminSponsoredFamilies = false
|
|
||||||
});
|
|
||||||
|
|
||||||
var organizationDomain = new OrganizationDomain
|
|
||||||
{
|
|
||||||
OrganizationId = organization.Id,
|
|
||||||
DomainName = domainName,
|
|
||||||
Txt = "btw+12345",
|
|
||||||
};
|
|
||||||
organizationDomain.SetVerifiedDate();
|
|
||||||
organizationDomain.SetNextRunDate(12);
|
|
||||||
organizationDomain.SetJobRunCount();
|
|
||||||
await organizationDomainRepository.CreateAsync(organizationDomain);
|
|
||||||
|
|
||||||
var orgUser1 = await organizationUserRepository.CreateAsync(new OrganizationUser
|
|
||||||
{
|
|
||||||
Id = CoreHelpers.GenerateComb(),
|
|
||||||
OrganizationId = organization.Id,
|
|
||||||
UserId = user1.Id,
|
|
||||||
Status = OrganizationUserStatusType.Confirmed,
|
|
||||||
Type = OrganizationUserType.Owner,
|
|
||||||
ResetPasswordKey = "resetpasswordkey1",
|
|
||||||
AccessSecretsManager = false
|
|
||||||
});
|
|
||||||
|
|
||||||
await organizationUserRepository.CreateAsync(new OrganizationUser
|
|
||||||
{
|
|
||||||
Id = CoreHelpers.GenerateComb(),
|
|
||||||
OrganizationId = organization.Id,
|
|
||||||
UserId = user2.Id,
|
|
||||||
Status = OrganizationUserStatusType.Confirmed,
|
|
||||||
Type = OrganizationUserType.User,
|
|
||||||
ResetPasswordKey = "resetpasswordkey1",
|
|
||||||
AccessSecretsManager = false
|
|
||||||
});
|
|
||||||
|
|
||||||
await organizationUserRepository.CreateAsync(new OrganizationUser
|
|
||||||
{
|
|
||||||
Id = CoreHelpers.GenerateComb(),
|
|
||||||
OrganizationId = organization.Id,
|
|
||||||
UserId = user3.Id,
|
|
||||||
Status = OrganizationUserStatusType.Confirmed,
|
|
||||||
Type = OrganizationUserType.User,
|
|
||||||
ResetPasswordKey = "resetpasswordkey1",
|
|
||||||
AccessSecretsManager = false
|
|
||||||
});
|
|
||||||
|
|
||||||
var responseModel = await organizationUserRepository.GetManyByOrganizationWithClaimedDomainsAsync(organization.Id);
|
|
||||||
|
|
||||||
Assert.NotNull(responseModel);
|
|
||||||
Assert.Single(responseModel);
|
|
||||||
Assert.Equal(orgUser1.Id, responseModel.Single().Id);
|
|
||||||
}
|
|
||||||
|
|
||||||
[DatabaseTheory, DatabaseData]
|
[DatabaseTheory, DatabaseData]
|
||||||
public async Task CreateManyAsync_NoId_Works(IOrganizationRepository organizationRepository,
|
public async Task CreateManyAsync_NoId_Works(IOrganizationRepository organizationRepository,
|
||||||
IUserRepository userRepository,
|
IUserRepository userRepository,
|
||||||
@@ -991,7 +863,7 @@ public class OrganizationUserRepositoryTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[DatabaseTheory, DatabaseData]
|
[DatabaseTheory, DatabaseData]
|
||||||
public async Task GetManyByOrganizationWithClaimedDomainsAsync_vNext_WithVerifiedDomain_WithOneMatchingEmailDomain_ReturnsSingle(
|
public async Task GetManyByOrganizationWithClaimedDomainsAsync_WithVerifiedDomain_WithOneMatchingEmailDomain_ReturnsSingle(
|
||||||
IUserRepository userRepository,
|
IUserRepository userRepository,
|
||||||
IOrganizationRepository organizationRepository,
|
IOrganizationRepository organizationRepository,
|
||||||
IOrganizationUserRepository organizationUserRepository,
|
IOrganizationUserRepository organizationUserRepository,
|
||||||
@@ -1094,7 +966,7 @@ public class OrganizationUserRepositoryTests
|
|||||||
RevisionDate = requestTime
|
RevisionDate = requestTime
|
||||||
});
|
});
|
||||||
|
|
||||||
var responseModel = await organizationUserRepository.GetManyByOrganizationWithClaimedDomainsAsync_vNext(organization.Id);
|
var responseModel = await organizationUserRepository.GetManyByOrganizationWithClaimedDomainsAsync(organization.Id);
|
||||||
|
|
||||||
Assert.NotNull(responseModel);
|
Assert.NotNull(responseModel);
|
||||||
Assert.Single(responseModel);
|
Assert.Single(responseModel);
|
||||||
@@ -1104,7 +976,7 @@ public class OrganizationUserRepositoryTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[DatabaseTheory, DatabaseData]
|
[DatabaseTheory, DatabaseData]
|
||||||
public async Task GetManyByOrganizationWithClaimedDomainsAsync_vNext_WithNoVerifiedDomain_ReturnsEmpty(
|
public async Task GetManyByOrganizationWithClaimedDomainsAsync_WithNoVerifiedDomain_ReturnsEmpty(
|
||||||
IUserRepository userRepository,
|
IUserRepository userRepository,
|
||||||
IOrganizationRepository organizationRepository,
|
IOrganizationRepository organizationRepository,
|
||||||
IOrganizationUserRepository organizationUserRepository,
|
IOrganizationUserRepository organizationUserRepository,
|
||||||
@@ -1161,7 +1033,7 @@ public class OrganizationUserRepositoryTests
|
|||||||
RevisionDate = requestTime
|
RevisionDate = requestTime
|
||||||
});
|
});
|
||||||
|
|
||||||
var responseModel = await organizationUserRepository.GetManyByOrganizationWithClaimedDomainsAsync_vNext(organization.Id);
|
var responseModel = await organizationUserRepository.GetManyByOrganizationWithClaimedDomainsAsync(organization.Id);
|
||||||
|
|
||||||
Assert.NotNull(responseModel);
|
Assert.NotNull(responseModel);
|
||||||
Assert.Empty(responseModel);
|
Assert.Empty(responseModel);
|
||||||
|
|||||||
Reference in New Issue
Block a user