mirror of
https://github.com/bitwarden/server.git
synced 2025-06-30 23:52:50 -05:00
[PM-16603] Add userkey rotation v2 (#5204)
* Implement userkey rotation v2 * Update request models * Cleanup * Update tests * Improve test * Add tests * Fix formatting * Fix test * Remove whitespace * Fix namespace * Enable nullable on models * Fix build * Add tests and enable nullable on masterpasswordunlockdatamodel * Fix test * Remove rollback * Add tests * Make masterpassword hint optional * Update user query * Add EF test * Improve test * Cleanup * Set masterpassword hint * Remove connection close * Add tests for invalid kdf types * Update test/Core.Test/KeyManagement/UserKey/RotateUserAccountKeysCommandTests.cs Co-authored-by: Thomas Avery <43214426+Thomas-Avery@users.noreply.github.com> * Fix formatting * Update src/Api/KeyManagement/Models/Requests/RotateAccountKeysAndDataRequestModel.cs Co-authored-by: Thomas Avery <43214426+Thomas-Avery@users.noreply.github.com> * Update src/Api/Auth/Models/Request/Accounts/MasterPasswordUnlockDataModel.cs Co-authored-by: Thomas Avery <43214426+Thomas-Avery@users.noreply.github.com> * Update src/Api/Auth/Models/Request/Accounts/MasterPasswordUnlockDataModel.cs Co-authored-by: Thomas Avery <43214426+Thomas-Avery@users.noreply.github.com> * Update src/Api/KeyManagement/Models/Requests/AccountKeysRequestModel.cs Co-authored-by: Thomas Avery <43214426+Thomas-Avery@users.noreply.github.com> * Fix imports * Fix tests * Remove null check * Add rollback --------- Co-authored-by: Thomas Avery <43214426+Thomas-Avery@users.noreply.github.com>
This commit is contained in:
@ -1,6 +1,7 @@
|
||||
using Bit.Core.AdminConsole.Entities;
|
||||
using Bit.Core.Auth.Entities;
|
||||
using Bit.Core.Entities;
|
||||
using Bit.Core.Enums;
|
||||
using Bit.Core.Models.Data;
|
||||
using Bit.Core.Test.AutoFixture.Attributes;
|
||||
using Bit.Infrastructure.EFIntegration.Test.AutoFixture;
|
||||
@ -289,4 +290,27 @@ public class UserRepositoryTests
|
||||
var distinctItems = returnedList.Distinct(equalityComparer);
|
||||
Assert.True(!distinctItems.Skip(1).Any());
|
||||
}
|
||||
|
||||
[CiSkippedTheory, EfUserAutoData]
|
||||
public async Task UpdateUserKeyAndEncryptedDataAsync_Works_DataMatches(User user, SqlRepo.UserRepository sqlUserRepo)
|
||||
{
|
||||
var sqlUser = await sqlUserRepo.CreateAsync(user);
|
||||
sqlUser.Kdf = KdfType.PBKDF2_SHA256;
|
||||
sqlUser.KdfIterations = 6_000_000;
|
||||
sqlUser.KdfMemory = 7_000_000;
|
||||
sqlUser.KdfParallelism = 8_000_000;
|
||||
sqlUser.MasterPassword = "masterPasswordHash";
|
||||
sqlUser.MasterPasswordHint = "masterPasswordHint";
|
||||
sqlUser.Email = "example@example.com";
|
||||
|
||||
await sqlUserRepo.UpdateUserKeyAndEncryptedDataV2Async(sqlUser, []);
|
||||
var updatedUser = await sqlUserRepo.GetByIdAsync(sqlUser.Id);
|
||||
Assert.Equal(sqlUser.Kdf, updatedUser.Kdf);
|
||||
Assert.Equal(sqlUser.KdfIterations, updatedUser.KdfIterations);
|
||||
Assert.Equal(sqlUser.KdfMemory, updatedUser.KdfMemory);
|
||||
Assert.Equal(sqlUser.KdfParallelism, updatedUser.KdfParallelism);
|
||||
Assert.Equal(sqlUser.MasterPassword, updatedUser.MasterPassword);
|
||||
Assert.Equal(sqlUser.MasterPasswordHint, updatedUser.MasterPasswordHint);
|
||||
Assert.Equal(sqlUser.Email, updatedUser.Email);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user