protected async Task Execute(MigrationEncryptionProvider provider) { string databaseName = Guid.NewGuid().ToString(); // Feed database with data. using (var contextFactory = new DatabaseContextFactory(databaseName)) { await using var context = contextFactory.CreateContext <DatabaseContext>(provider.SourceEncryptionProvider); await context.Authors.AddRangeAsync(Authors); await context.SaveChangesAsync(); } // Process data migration using (var contextFactory = new DatabaseContextFactory(databaseName)) { await using var context = contextFactory.CreateContext <DatabaseContext>(provider); await context.MigrateAsync(); } // Assert if the context has been decrypted using (var contextFactory = new DatabaseContextFactory(databaseName)) { await using var context = contextFactory.CreateContext <DatabaseContext>(provider.DestinationEncryptionProvider); IEnumerable <AuthorEntity> authors = await context.Authors.Include(x => x.Books).ToListAsync(); foreach (AuthorEntity author in authors) { AuthorEntity original = Authors.FirstOrDefault(x => x.UniqueId == author.UniqueId); AssertAuthor(original, author); } } }
public async Task MigrateOriginalToEncryptedTest() { var aesKeys = AesProvider.GenerateKey(AesKeySize.AES256Bits); var destinationProvider = new AesProvider(aesKeys.Key); var provider = new MigrationEncryptionProvider(null, destinationProvider); await Execute(provider); }
public async Task MigrateEncryptedToOriginalTest() { var aesKeys = AesProvider.GenerateKey(AesKeySize.AES256Bits); var sourceProvider = new AesProvider(aesKeys.Key); var provider = new MigrationEncryptionProvider(sourceProvider, null); await Execute(provider); }
public async Task MigrateV1ToV2Test() { var aesKeys = AesProvider.GenerateKey(AesKeySize.AES256Bits); var sourceProvider = new AesProvider(aesKeys.Key, aesKeys.IV); var destinationProvider = new AesProvider(aesKeys.Key); var provider = new MigrationEncryptionProvider(sourceProvider, destinationProvider); await Execute(provider); }