mirror of
https://github.com/bitwarden/server
synced 2026-01-30 16:23:37 +00:00
fix: argument input for SP.
test: add database tests for new SP
This commit is contained in:
@@ -156,8 +156,8 @@ public class EmergencyAccessRepository : Repository<EmergencyAccess, Guid>, IEme
|
||||
{
|
||||
using var connection = new SqlConnection(ConnectionString);
|
||||
await connection.ExecuteAsync(
|
||||
"[dbo].[EmergencyAccess_DeleteMany]",
|
||||
new { EmergencyAccessIds = emergencyAccessIds },
|
||||
"[dbo].[EmergencyAccess_DeleteManyById]",
|
||||
new { EmergencyAccessIds = emergencyAccessIds.ToGuidIdArrayTVP() },
|
||||
commandType: CommandType.StoredProcedure);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,4 +42,75 @@ public class EmergencyAccessRepositoriesTests
|
||||
Assert.NotNull(updatedGrantee);
|
||||
Assert.NotEqual(updatedGrantee.AccountRevisionDate, granteeUser.AccountRevisionDate);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates 3 Emergency Access records all connected to a single grantor, but separate grantees.
|
||||
/// All 3 records are then deleted in a single call to DeleteManyAsync.
|
||||
/// </summary>
|
||||
[DatabaseTheory, DatabaseData]
|
||||
public async Task DeleteManyAsync_DeletesMultipleGranteeRecords(
|
||||
IUserRepository userRepository,
|
||||
IEmergencyAccessRepository emergencyAccessRepository)
|
||||
{
|
||||
// Arrange
|
||||
var grantorUser = await userRepository.CreateAsync(new User
|
||||
{
|
||||
Name = "Test Grantor User",
|
||||
Email = $"test+grantor{Guid.NewGuid()}@email.com",
|
||||
ApiKey = "TEST",
|
||||
SecurityStamp = "stamp",
|
||||
});
|
||||
|
||||
var granteeUser1 = await userRepository.CreateAsync(new User
|
||||
{
|
||||
Name = "Test Grantee User 1",
|
||||
Email = $"test+grantee{Guid.NewGuid()}@email.com",
|
||||
ApiKey = "TEST",
|
||||
SecurityStamp = "stamp",
|
||||
});
|
||||
|
||||
var granteeUser2 = await userRepository.CreateAsync(new User
|
||||
{
|
||||
Name = "Test Grantee User 2",
|
||||
Email = $"test+grantee{Guid.NewGuid()}@email.com",
|
||||
ApiKey = "TEST",
|
||||
SecurityStamp = "stamp",
|
||||
});
|
||||
|
||||
var granteeUser3 = await userRepository.CreateAsync(new User
|
||||
{
|
||||
Name = "Test Grantee User 3",
|
||||
Email = $"test+grantee{Guid.NewGuid()}@email.com",
|
||||
ApiKey = "TEST",
|
||||
SecurityStamp = "stamp",
|
||||
});
|
||||
|
||||
var confirmedEmergencyAccess = await emergencyAccessRepository.CreateAsync(new EmergencyAccess
|
||||
{
|
||||
GrantorId = grantorUser.Id,
|
||||
GranteeId = granteeUser1.Id,
|
||||
Status = EmergencyAccessStatusType.Confirmed,
|
||||
});
|
||||
|
||||
var invitedEmergencyAccess = await emergencyAccessRepository.CreateAsync(new EmergencyAccess
|
||||
{
|
||||
GrantorId = grantorUser.Id,
|
||||
GranteeId = granteeUser2.Id,
|
||||
Status = EmergencyAccessStatusType.Invited,
|
||||
});
|
||||
|
||||
var acceptedEmergencyAccess = await emergencyAccessRepository.CreateAsync(new EmergencyAccess
|
||||
{
|
||||
GrantorId = grantorUser.Id,
|
||||
GranteeId = granteeUser3.Id,
|
||||
Status = EmergencyAccessStatusType.Accepted,
|
||||
});
|
||||
|
||||
// Act
|
||||
await emergencyAccessRepository.DeleteManyAsync([confirmedEmergencyAccess.Id, invitedEmergencyAccess.Id, acceptedEmergencyAccess.Id]);
|
||||
|
||||
// Assert
|
||||
var emergencyAccess = await emergencyAccessRepository.GetManyDetailsByGrantorIdAsync(grantorUser.Id);
|
||||
Assert.Empty(emergencyAccess);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user