public void BlockIsValid_RethrowsTransactionRejected() { var blockHash = "000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"; BigDecimal currentTarget = BigInteger.Parse("0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", NumberStyles.HexNumber); var sut = new PowBlockValidator(_blockFinalizerMock.Object, _transactionValidatorMock.Object, _timestamperMock.Object, _signerMock.Object); var transactions = new List <AbstractTransaction>() { new StateTransaction(null, "to", null, 0, 5000, 1, TransactionAction.ClaimCoinbase.ToString(), null, 0) }; var expectedException = new TransactionRejectedException("Transaction rejected test", transactions.First()); var blockchain = new Blockchain(new List <Block>() { new Block(new BlockHeader(_netId, 1, "merkleroot", 1, "").Finalize("block1", "privkey"), transactions) }, _netId); var blockToTest = new Block(new BlockHeader(_netId, 1, "merkleroot", 1, "block1"), transactions); blockToTest.Header.Finalize(blockHash, "signature"); _blockFinalizerMock.Setup(m => m.CalculateHash(blockToTest)).Returns(blockHash); _timestamperMock.Setup(m => m.GetCurrentUtcTimestamp()).Returns(1); _signerMock.Setup(m => m.SignatureIsValid("signature", blockHash, "to")).Returns(true); _transactionValidatorMock.Setup(m => m.CalculateMerkleRoot(transactions)).Returns("merkleroot"); _transactionValidatorMock.Setup(m => m.ValidateTransaction(transactions.First())).Throws(expectedException); var ex = Assert.ThrowsException <TransactionRejectedException>( () => sut.ValidateBlock(blockToTest, currentTarget, blockchain, true, true) ); Assert.AreEqual(expectedException, ex); }
public static void EnsureSucceededStatus(this TransactionReceipt transactionReceipt) { if (transactionReceipt.Status.Value != 1) { TransactionRejectedException.Throw(transactionReceipt); } }