Example #1
0
        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);
                }
            }
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }