Skip to content

Commit e424f19

Browse files
committed
integration test coverage
1 parent 9fa43f0 commit e424f19

File tree

1 file changed

+53
-1
lines changed

1 file changed

+53
-1
lines changed

test/Infrastructure.IntegrationTest/Repositories/UserRepositoryTests.cs

Lines changed: 53 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1-
using Bit.Core.AdminConsole.Repositories;
1+
using Bit.Core;
2+
using Bit.Core.AdminConsole.Repositories;
23
using Bit.Core.Entities;
34
using Bit.Core.Enums;
45
using Bit.Core.Models.Data;
56
using Bit.Core.Repositories;
67
using Bit.Infrastructure.IntegrationTest.AdminConsole;
8+
using Microsoft.Data.SqlClient;
79
using Xunit;
810

911
namespace Bit.Infrastructure.IntegrationTest.Repositories;
@@ -179,4 +181,54 @@ public async Task DeleteManyAsync_WhenUsersHaveDefaultUserCollections_MigratesTo
179181
Assert.Equal(CollectionType.SharedCollection, updatedCollection2.Type);
180182
Assert.Equal(user2.Email, updatedCollection2.DefaultUserCollectionEmail);
181183
}
184+
185+
[Theory, DatabaseData]
186+
public async Task SetKeyConnectorUserKey_UpdatesUserKey(IUserRepository userRepository, Database database)
187+
{
188+
var user = await userRepository.CreateTestUserAsync();
189+
190+
const string keyConnectorWrappedKey = "key-connector-wrapped-user-key";
191+
192+
var setKeyConnectorUserKeyDelegate = userRepository.SetKeyConnectorUserKey(user.Id, keyConnectorWrappedKey);
193+
194+
await RunUpdateUserDataAsync(setKeyConnectorUserKeyDelegate, database);
195+
196+
var updatedUser = await userRepository.GetByIdAsync(user.Id);
197+
198+
Assert.NotNull(updatedUser);
199+
Assert.Equal(keyConnectorWrappedKey, updatedUser.Key);
200+
Assert.True(updatedUser.UsesKeyConnector);
201+
Assert.Equal(KdfType.Argon2id, updatedUser.Kdf);
202+
Assert.Equal(AuthConstants.ARGON2_ITERATIONS.Default, updatedUser.KdfIterations);
203+
Assert.Equal(AuthConstants.ARGON2_MEMORY.Default, updatedUser.KdfMemory);
204+
Assert.Equal(AuthConstants.ARGON2_PARALLELISM.Default, updatedUser.KdfParallelism);
205+
Assert.Equal(DateTime.UtcNow, updatedUser.RevisionDate, TimeSpan.FromMinutes(1));
206+
Assert.Equal(DateTime.UtcNow, updatedUser.AccountRevisionDate, TimeSpan.FromMinutes(1));
207+
}
208+
209+
private static async Task RunUpdateUserDataAsync(UpdateUserData task, Database database)
210+
{
211+
if (database.Type == SupportedDatabaseProviders.SqlServer && !database.UseEf)
212+
{
213+
await using var connection = new SqlConnection(database.ConnectionString);
214+
connection.Open();
215+
216+
await using var transaction = connection.BeginTransaction();
217+
try
218+
{
219+
await task(connection, transaction);
220+
221+
transaction.Commit();
222+
}
223+
catch
224+
{
225+
transaction.Rollback();
226+
throw;
227+
}
228+
}
229+
else
230+
{
231+
await task();
232+
}
233+
}
182234
}

0 commit comments

Comments
 (0)