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));
        }
Exemple #2
0
        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"));
        }
Exemple #4
0
        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));
        }
Exemple #5
0
        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);
        }
Exemple #10
0
        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);
        }
Exemple #11
0
    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();
        }
    }
Exemple #12
0
        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);
        }
Exemple #14
0
        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));
        }
Exemple #16
0
        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());
        }
Exemple #18
0
        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);
        }