예제 #1
0
        public void GetAllBlocks_RetrunListOfBlocks()
        {
            //Arrange
            IBlockChainGetRepository getAllBlocks = new BlockChainRepository();
            //Act
            var result = getAllBlocks.GetAllBlocks();

            //Assert
            Assert.That(result, !Is.Null);
        }
예제 #2
0
        public void TransactionsHistory_ValidValues()
        {
            bool workProccess = false;

            IBlockChainRepository blockChainRepository = new BlockChainRepository();

            ModelStateDictionary modelState = new ModelStateDictionary();

            IBlockChainService blockChainService = new BlockChainService(new ModelStateWrapper(modelState), blockChainRepository);

            BlockChain blockChain = BlockChain.Instance(blockChainService);

            User user = new User
            {
                Email          = "*****@*****.**",
                FirstName      = "Amir",
                LastName       = "Akobirovich",
                MiddleName     = "Rofeev",
                Login          = "******",
                Money          = 0,
                Password       = "******",
                RepeatPassword = "******",
                WalletID       = "WalletID"
            };

            blockChain.AddTransaction(new Transactions {
                Amount = 1231, DateTime = DateTime.Now, FromUser = user.Login, ToUser = "******", TransactionID = 13
            });

            blockChain.AddTransaction(new Transactions {
                Amount = 32, DateTime = DateTime.Now, FromUser = "******", ToUser = user.Login, TransactionID = 14
            });

            MoneySend moneySend = new MoneySend {
                Amount = 100, UserName = user.Login, WalletId = user.WalletID
            };

            blockChain.BuyCoins(moneySend);

            Thread.Sleep(35000);

            IEnumerable <Transactions> transactionsHistory = blockChain.TransactionsHistory(user);

            foreach (var transaction in transactionsHistory)
            {
                workProccess = Equals(transaction.FromUser, user.Login) || Equals(transaction.ToUser, user.Login);
            }

            Assert.IsTrue(workProccess);
        }
예제 #3
0
        static void Main(string[] args)
        {
            IBlockChainRepository blockChain = new BlockChainRepository();

            blockChain.AddBlock(new Block {
                Index = 1, TimeStamp = Convert.ToDateTime("2019-01-03"), Data = "{'description':'ABC','value':50}"
            });
            blockChain.AddBlock(new Block {
                Index = 2, TimeStamp = Convert.ToDateTime("2019-01-04"), Data = "{'description':'DEF','value':99}"
            });

            foreach (var item in blockChain.GetAllBlocks())
            {
                Console.WriteLine(item.Index + "\n" + item.TimeStamp + "\n" + item.Data + "\n" + item.PreviousHash + "\n" + item.Hash);

                Console.WriteLine("----------------");
            }
        }
예제 #4
0
        public void AddBlockIntoBlockChain_AddNewBlock_ReturnTrue()
        {
            //Arrange
            IBlockChainAddRepository addNewBlock = new BlockChainRepository();
            //Act
            var result = addNewBlock.AddBlockIntoBlockChain(new BlockChain.Dto.BlockDto {
                Data = "{Amount=4}"
            });

            result = addNewBlock.AddBlockIntoBlockChain(new BlockChain.Dto.BlockDto {
                Data = "{Amount=4}"
            });
            result = addNewBlock.AddBlockIntoBlockChain(new BlockChain.Dto.BlockDto {
                Data = "{Amount=4}"
            });
            //Assert
            Assert.That(result, Is.True);
        }
예제 #5
0
        public void TransactionsHistory_MultyValidValues()
        {
            bool workProccess = false;

            IBlockChainRepository blockChainRepository = new BlockChainRepository();

            ModelStateDictionary modelState = new ModelStateDictionary();

            IBlockChainService blockChainService = new BlockChainService(new ModelStateWrapper(modelState), blockChainRepository);

            BlockChain blockChain = BlockChain.Instance(blockChainService);

            var users = new User[100];

            for (int i = 0; i < users.Length; i++)
            {
                users[i] = new User
                {
                    Email          = "*****@*****.**",
                    FirstName      = "Amir",
                    LastName       = "Akobirovich",
                    MiddleName     = "Rofeev",
                    Login          = new Random().GetHashCode().ToString(),
                    Money          = 0,
                    Password       = "******",
                    RepeatPassword = "******",
                    WalletID       = "WalletID"
                };
            }

            var usersActions = new Task[100];

            for (int i = 0; i < users.Length; i++)
            {
                Task.Run(() =>
                {
                    blockChain.AddTransaction(new Transactions {
                        Amount = 1231, DateTime = DateTime.Now, FromUser = users[i].Login, ToUser = "******", TransactionID = 13
                    });

                    blockChain.AddTransaction(new Transactions {
                        Amount = 32, DateTime = DateTime.Now, FromUser = "******", ToUser = users[i].Login, TransactionID = 14
                    });

                    MoneySend moneySend = new MoneySend {
                        Amount = 100, UserName = users[i].Login, WalletId = users[i].WalletID
                    };

                    blockChain.BuyCoins(moneySend);
                }).Wait();
            }

            Thread.Sleep(35000);

            foreach (var user in users)
            {
                IEnumerable <Transactions> transactionsHistory = blockChain.TransactionsHistory(user);

                foreach (var transaction in transactionsHistory)
                {
                    workProccess = Equals(transaction.FromUser, user.Login) || Equals(transaction.ToUser, user.Login);
                }
            }

            Assert.IsTrue(workProccess);
        }