public async Task EnumerateOrdersByAccessAsync() { var baseDir = Common.GetWorkDir(); await CleanupWalletDirectoriesAsync(baseDir); var walletDirectories = new WalletDirectories(Network.Main, baseDir); var walletFile1 = Path.Combine(walletDirectories.WalletsDir, $"FooWallet1.json"); await File.Create(walletFile1).DisposeAsync(); File.SetLastAccessTimeUtc(walletFile1, new DateTime(2005, 1, 1, 1, 1, 1, DateTimeKind.Utc)); var walletFile2 = Path.Combine(walletDirectories.WalletsDir, $"FooWallet2.json"); await File.Create(walletFile2).DisposeAsync(); File.SetLastAccessTimeUtc(walletFile2, new DateTime(2000, 1, 1, 1, 1, 1, DateTimeKind.Utc)); var walletFile3 = Path.Combine(walletDirectories.WalletsDir, $"FooWallet3.json"); await File.Create(walletFile3).DisposeAsync(); File.SetLastAccessTimeUtc(walletFile3, new DateTime(2010, 1, 1, 1, 1, 1, DateTimeKind.Utc)); var orderedWallets = new[] { walletFile3, walletFile1, walletFile2 }; Assert.Equal(orderedWallets, walletDirectories.EnumerateWalletFiles().Select(x => x.FullName)); }
public async Task EnumerateFilesAsync() { var baseDir = Path.Combine(Global.Instance.DataDir, EnvironmentHelpers.GetCallerFileName(), EnvironmentHelpers.GetMethodName()); await CleanupWalletDirectoriesAsync(baseDir); var walletDirectories = new WalletDirectories(baseDir); var wallets = new List <string>(); var walletBackups = new List <string>(); const int NumberOfWallets = 4; for (int i = 0; i < NumberOfWallets; i++) { var walletFile = Path.Combine(walletDirectories.WalletsDir, $"FooWallet{i}.json"); var dummyFile = Path.Combine(walletDirectories.WalletsDir, $"FooWallet{i}.dummy"); var backupFile = Path.Combine(walletDirectories.WalletsBackupDir, $"FooWallet{i}.json"); await File.Create(walletFile).DisposeAsync(); await File.Create(dummyFile).DisposeAsync(); await File.Create(backupFile).DisposeAsync(); wallets.Add(walletFile); walletBackups.Add(backupFile); } Assert.True(wallets.ToHashSet().SetEquals(walletDirectories.EnumerateWalletFiles().Select(x => x.FullName).ToHashSet())); Assert.True(wallets.Concat(walletBackups).ToHashSet().SetEquals(walletDirectories.EnumerateWalletFiles(true).Select(x => x.FullName).ToHashSet())); }
public async Task GetNextWalletTestAsync() { var baseDir = Common.GetWorkDir(); await CleanupWalletDirectoriesAsync(baseDir); var walletDirectories = new WalletDirectories(Network.Main, baseDir); IoHelpers.CreateOrOverwriteFile(Path.Combine(walletDirectories.WalletsDir, "Random Wallet 3.json")); Assert.Equal("Random Wallet", walletDirectories.GetNextWalletName()); IoHelpers.CreateOrOverwriteFile(Path.Combine(walletDirectories.WalletsDir, "Random Wallet.json")); Assert.Equal("Random Wallet 2", walletDirectories.GetNextWalletName()); IoHelpers.CreateOrOverwriteFile(Path.Combine(walletDirectories.WalletsDir, "Random Wallet 2.json")); Assert.Equal("Random Wallet 4", walletDirectories.GetNextWalletName()); IoHelpers.CreateOrOverwriteFile(Path.Combine(walletDirectories.WalletsDir, "Random Wallet 4.dat")); IoHelpers.CreateOrOverwriteFile(Path.Combine(walletDirectories.WalletsDir, "Random Wallet 4")); Assert.Equal("Random Wallet 4", walletDirectories.GetNextWalletName()); File.Delete(Path.Combine(walletDirectories.WalletsDir, "Random Wallet.json")); File.Delete(Path.Combine(walletDirectories.WalletsDir, "Random Wallet 3.json")); Assert.Equal("Random Wallet", walletDirectories.GetNextWalletName()); IoHelpers.CreateOrOverwriteFile(Path.Combine(walletDirectories.WalletsDir, "Random Wallet.json")); Assert.Equal("Random Wallet 3", walletDirectories.GetNextWalletName()); IoHelpers.CreateOrOverwriteFile(Path.Combine(walletDirectories.WalletsDir, "Random Wallet 3.json")); File.Delete(Path.Combine(walletDirectories.WalletsDir, "Random Wallet 3.json")); Assert.Equal("Foo", walletDirectories.GetNextWalletName("Foo")); IoHelpers.CreateOrOverwriteFile(Path.Combine(walletDirectories.WalletsDir, "Foo.json")); Assert.Equal("Foo 2", walletDirectories.GetNextWalletName("Foo")); IoHelpers.CreateOrOverwriteFile(Path.Combine(walletDirectories.WalletsDir, "Foo 2.json")); }
public async Task EnumerateOrdersByAccessAsync() { var baseDir = Path.Combine(Global.Instance.DataDir, EnvironmentHelpers.GetCallerFileName(), EnvironmentHelpers.GetMethodName()); await CleanupWalletDirectoriesAsync(baseDir); var walletDirectories = new WalletDirectories(baseDir); var walletFile1 = Path.Combine(walletDirectories.WalletsDir, $"FooWallet1.json"); await File.Create(walletFile1).DisposeAsync(); File.SetLastAccessTimeUtc(walletFile1, new DateTime(2005, 1, 1, 1, 1, 1, DateTimeKind.Utc)); var walletFile2 = Path.Combine(walletDirectories.WalletsDir, $"FooWallet2.json"); await File.Create(walletFile2).DisposeAsync(); File.SetLastAccessTimeUtc(walletFile2, new DateTime(2000, 1, 1, 1, 1, 1, DateTimeKind.Utc)); var walletFile3 = Path.Combine(walletDirectories.WalletsDir, $"FooWallet3.json"); await File.Create(walletFile3).DisposeAsync(); File.SetLastAccessTimeUtc(walletFile3, new DateTime(2010, 1, 1, 1, 1, 1, DateTimeKind.Utc)); var orderedWallets = new[] { walletFile3, walletFile1, walletFile2 }; Assert.Equal(orderedWallets, walletDirectories.EnumerateWalletFiles().Select(x => x.FullName)); }
public async Task GetNextWalletTestAsync() { var baseDir = Path.Combine(Global.Instance.DataDir, EnvironmentHelpers.GetCallerFileName(), EnvironmentHelpers.GetMethodName()); await CleanupWalletDirectoriesAsync(baseDir); var walletDirectories = new WalletDirectories(baseDir); IoHelpers.CreateOrOverwriteFile(Path.Combine(walletDirectories.WalletsDir, "Random Wallet 3.json")); Assert.Equal("Random Wallet", walletDirectories.GetNextWalletName()); IoHelpers.CreateOrOverwriteFile(Path.Combine(walletDirectories.WalletsDir, "Random Wallet.json")); Assert.Equal("Random Wallet 2", walletDirectories.GetNextWalletName()); IoHelpers.CreateOrOverwriteFile(Path.Combine(walletDirectories.WalletsDir, "Random Wallet 2.json")); Assert.Equal("Random Wallet 4", walletDirectories.GetNextWalletName()); IoHelpers.CreateOrOverwriteFile(Path.Combine(walletDirectories.WalletsDir, "Random Wallet 4.dat")); IoHelpers.CreateOrOverwriteFile(Path.Combine(walletDirectories.WalletsDir, "Random Wallet 4")); Assert.Equal("Random Wallet 4", walletDirectories.GetNextWalletName()); File.Delete(Path.Combine(walletDirectories.WalletsDir, "Random Wallet.json")); File.Delete(Path.Combine(walletDirectories.WalletsDir, "Random Wallet 3.json")); Assert.Equal("Random Wallet", walletDirectories.GetNextWalletName()); IoHelpers.CreateOrOverwriteFile(Path.Combine(walletDirectories.WalletsDir, "Random Wallet.json")); Assert.Equal("Random Wallet 3", walletDirectories.GetNextWalletName()); IoHelpers.CreateOrOverwriteFile(Path.Combine(walletDirectories.WalletsDir, "Random Wallet 3.json")); File.Delete(Path.Combine(walletDirectories.WalletsDir, "Random Wallet 3.json")); Assert.Equal("Foo", walletDirectories.GetNextWalletName("Foo")); IoHelpers.CreateOrOverwriteFile(Path.Combine(walletDirectories.WalletsDir, "Foo.json")); Assert.Equal("Foo 2", walletDirectories.GetNextWalletName("Foo")); IoHelpers.CreateOrOverwriteFile(Path.Combine(walletDirectories.WalletsDir, "Foo 2.json")); }
public async Task EnumerateFilesAsync() { var baseDir = Common.GetWorkDir(); await CleanupWalletDirectoriesAsync(baseDir); var walletDirectories = new WalletDirectories(Network.Main, baseDir); var wallets = new List <string>(); var walletBackups = new List <string>(); const int NumberOfWallets = 4; for (int i = 0; i < NumberOfWallets; i++) { var walletFile = Path.Combine(walletDirectories.WalletsDir, $"FooWallet{i}.json"); var dummyFile = Path.Combine(walletDirectories.WalletsDir, $"FooWallet{i}.dummy"); var backupFile = Path.Combine(walletDirectories.WalletsBackupDir, $"FooWallet{i}.json"); await File.Create(walletFile).DisposeAsync(); await File.Create(dummyFile).DisposeAsync(); await File.Create(backupFile).DisposeAsync(); wallets.Add(walletFile); walletBackups.Add(backupFile); } Assert.True(wallets.ToHashSet().SetEquals(walletDirectories.EnumerateWalletFiles().Select(x => x.FullName).ToHashSet())); Assert.True(wallets.Concat(walletBackups).ToHashSet().SetEquals(walletDirectories.EnumerateWalletFiles(true).Select(x => x.FullName).ToHashSet())); }
public ChaincaseWalletManager(Network network, WalletDirectories walletDirectories, INotificationManager notificationManager) : base(network, walletDirectories) { _notificationManager = notificationManager; OnDequeue += WalletManager_OnDequeue; WalletRelevantTransactionProcessed += WalletManager_WalletRelevantTransactionProcessed; }
public bool HasDefaultWalletFile() { // this is kinda codesmell biz logic but it doesn't make sense for a full VM here var walletName = Network.ToString(); (string walletFullPath, _) = WalletDirectories.GetWalletFilePaths(walletName); return(File.Exists(walletFullPath)); }
public async Task CorrectWalletDirectoryNameAsync() { var baseDir = Common.GetWorkDir(); (string walletsPath, string walletsBackupPath) = await CleanupWalletDirectoriesAsync(baseDir); var walletDirectories = new WalletDirectories(Network.Main, $" {baseDir} "); Assert.Equal(walletsPath, walletDirectories.WalletsDir); Assert.Equal(walletsBackupPath, walletDirectories.WalletsBackupDir); }
public async Task CorrestWalletDirectoryNameAsync() { var baseDir = Path.Combine(Global.Instance.DataDir, EnvironmentHelpers.GetCallerFileName(), EnvironmentHelpers.GetMethodName()); (string walletsPath, string walletsBackupPath) = await CleanupWalletDirectoriesAsync(baseDir); var walletDirectories = new WalletDirectories($" {baseDir} "); Assert.Equal(baseDir, walletDirectories.WorkDir); Assert.Equal(walletsPath, walletDirectories.WalletsDir); Assert.Equal(walletsBackupPath, walletDirectories.WalletsBackupDir); }
public WalletManager(Network network, string workDir, WalletDirectories walletDirectories) { using (BenchmarkLogger.Measure()) { Network = Guard.NotNull(nameof(network), network); WorkDir = Guard.NotNullOrEmptyOrWhitespace(nameof(workDir), workDir, true); Directory.CreateDirectory(WorkDir); WalletDirectories = Guard.NotNull(nameof(walletDirectories), walletDirectories); RefreshWalletList(); } }
public async Task ServesWalletFilesAsync() { var baseDir = Path.Combine(Global.Instance.DataDir, EnvironmentHelpers.GetCallerFileName(), EnvironmentHelpers.GetMethodName()); await CleanupWalletDirectoriesAsync(baseDir); var walletDirectories = new WalletDirectories(baseDir); string walletName = "FooWallet.json"; (string walletPath, string walletBackupPath) = walletDirectories.GetWalletFilePaths(walletName); Assert.Equal(Path.Combine(walletDirectories.WalletsDir, walletName), walletPath); Assert.Equal(Path.Combine(walletDirectories.WalletsBackupDir, walletName), walletBackupPath); }
public async Task ServesWalletFilesAsync() { var baseDir = Common.GetWorkDir(); await CleanupWalletDirectoriesAsync(baseDir); var walletDirectories = new WalletDirectories(Network.Main, baseDir); string walletName = "FooWallet.json"; (string walletPath, string walletBackupPath) = walletDirectories.GetWalletFilePaths(walletName); Assert.Equal(Path.Combine(walletDirectories.WalletsDir, walletName), walletPath); Assert.Equal(Path.Combine(walletDirectories.WalletsBackupDir, walletName), walletBackupPath); }
public async Task EnsuresJsonAsync() { var baseDir = Common.GetWorkDir(); await CleanupWalletDirectoriesAsync(baseDir); var walletDirectories = new WalletDirectories(baseDir); string walletName = "FooWallet"; string walletFileName = $"{walletName}.json"; (string walletPath, string walletBackupPath) = walletDirectories.GetWalletFilePaths(walletName); Assert.Equal(Path.Combine(walletDirectories.WalletsDir, walletFileName), walletPath); Assert.Equal(Path.Combine(walletDirectories.WalletsBackupDir, walletFileName), walletBackupPath); }
public async Task CreatesWalletDirectoriesAsync() { var baseDir = Common.GetWorkDir(); (string walletsPath, string walletsBackupPath) = await CleanupWalletDirectoriesAsync(baseDir); _ = new WalletDirectories(Network.Main, baseDir); Assert.True(Directory.Exists(walletsPath)); Assert.True(Directory.Exists(walletsBackupPath)); // Testing what happens if the directories are already exist. _ = new WalletDirectories(Network.Main, baseDir); Assert.True(Directory.Exists(walletsPath)); Assert.True(Directory.Exists(walletsBackupPath)); }
public async Task EnumerateMissingDirAsync() { var baseDir = Path.Combine(Global.Instance.DataDir, EnvironmentHelpers.GetCallerFileName(), EnvironmentHelpers.GetMethodName()); (string walletsPath, string walletsBackupPath) = await CleanupWalletDirectoriesAsync(baseDir); var walletDirectories = new WalletDirectories(baseDir); Assert.Empty(walletDirectories.EnumerateWalletFiles()); Directory.Delete(walletsBackupPath); Assert.Empty(walletDirectories.EnumerateWalletFiles()); Directory.Delete(walletsPath); Assert.Empty(walletDirectories.EnumerateWalletFiles()); Directory.Delete(baseDir); Assert.Empty(walletDirectories.EnumerateWalletFiles()); }
public async Task EnumerateMissingDirAsync() { var baseDir = Common.GetWorkDir(); (string walletsPath, string walletsBackupPath) = await CleanupWalletDirectoriesAsync(baseDir); var walletDirectories = new WalletDirectories(Network.Main, baseDir); Assert.Empty(walletDirectories.EnumerateWalletFiles()); Directory.Delete(walletsBackupPath); Assert.Empty(walletDirectories.EnumerateWalletFiles()); Directory.Delete(walletsPath); Assert.Empty(walletDirectories.EnumerateWalletFiles()); Directory.Delete(baseDir); Assert.Empty(walletDirectories.EnumerateWalletFiles()); }
public async Task GetNextWalletTestAsync() { var baseDir = Path.Combine(Global.Instance.DataDir, EnvironmentHelpers.GetCallerFileName(), EnvironmentHelpers.GetMethodName()); await CleanupWalletDirectoriesAsync(baseDir); var walletDirectories = new WalletDirectories(baseDir); Assert.Equal("Wallet0", walletDirectories.GetNextWalletName()); await File.Create(Path.Combine(walletDirectories.WalletsDir, $"Wallet0.json")).DisposeAsync(); await File.Create(Path.Combine(walletDirectories.WalletsDir, $"Wallet1.json")).DisposeAsync(); await File.Create(Path.Combine(walletDirectories.WalletsDir, $"Wallet3.json")).DisposeAsync(); // This should not matter. await File.Create(Path.Combine(walletDirectories.WalletsBackupDir, $"Wallet2.json")).DisposeAsync(); Assert.Equal("Wallet2", walletDirectories.GetNextWalletName()); Assert.Equal("Foo0", walletDirectories.GetNextWalletName("Foo")); }
public async Task TestPathsAsync() { var baseDir = Common.GetWorkDir(); _ = await CleanupWalletDirectoriesAsync(baseDir); var mainWd = new WalletDirectories(Network.Main, baseDir); Assert.Equal(Network.Main, mainWd.Network); Assert.Equal(Path.Combine(baseDir, "Wallets"), mainWd.WalletsDir); Assert.Equal(Path.Combine(baseDir, "WalletBackups"), mainWd.WalletsBackupDir); var testWd = new WalletDirectories(Network.TestNet, baseDir); Assert.Equal(Network.TestNet, testWd.Network); Assert.Equal(Path.Combine(baseDir, "Wallets", "TestNet"), testWd.WalletsDir); Assert.Equal(Path.Combine(baseDir, "WalletBackups", "TestNet"), testWd.WalletsBackupDir); var regWd = new WalletDirectories(Network.RegTest, baseDir); Assert.Equal(Network.RegTest, regWd.Network); Assert.Equal(Path.Combine(baseDir, "Wallets", "RegTest"), regWd.WalletsDir); Assert.Equal(Path.Combine(baseDir, "WalletBackups", "RegTest"), regWd.WalletsBackupDir); }