コード例 #1
0
        public async Task VerifyChain_IsValid_IfNoTampering()
        {
            // Arrange
            List <Block <Transaction> > blocks = new List <Block <Transaction> >();

            SetupMock(blocks);

            foreach (int i in Enumerable.Range(0, 10))
            {
                Transaction transaction = new Transaction
                {
                    ID = i,
                    TransactionTotal = 5023.2f,
                    Comment          = "This is a comment"
                };
                Block <Transaction> block = await _sut.ConstructBlock(transaction, _signerId, _keys.PublicKey);

                string signature = Signer.Sign(_keys.PrivateKey, block.BlockHash);

                block.ApplySignature(signature);
                await _sut.AcceptNewBlock(block);
            }

            // Act
            await _sut.VerifyChain();

            // Assert - It passes when the action did not produce an exception
            _blockRepositoryMock.Verify(o => o.GetBlockByNumber(It.IsAny <long>()), Times.AtLeast(2));
        }