Add explicit negative-test for state block and epoch block signature checking
This commit is contained in:
parent
5bb885a2d1
commit
51d6aa4dfa
1 changed files with 48 additions and 0 deletions
|
|
@ -1239,6 +1239,54 @@ TEST (ledger, fail_change_gap_previous)
|
||||||
ASSERT_EQ (nano::process_result::gap_previous, result1.code);
|
ASSERT_EQ (nano::process_result::gap_previous, result1.code);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST (ledger, fail_state_bad_signature)
|
||||||
|
{
|
||||||
|
auto ctx = nano::test::context::ledger_empty ();
|
||||||
|
auto & ledger = ctx.ledger ();
|
||||||
|
auto & store = ctx.store ();
|
||||||
|
auto transaction = store.tx_begin_write ();
|
||||||
|
nano::work_pool pool{ nano::dev::network_params.network, std::numeric_limits<unsigned>::max () };
|
||||||
|
nano::block_builder builder;
|
||||||
|
auto block = builder
|
||||||
|
.state ()
|
||||||
|
.account (nano::dev::genesis_key.pub)
|
||||||
|
.previous (nano::dev::genesis->hash ())
|
||||||
|
.representative (nano::dev::genesis_key.pub)
|
||||||
|
.balance (0)
|
||||||
|
.link (nano::dev::genesis_key.pub)
|
||||||
|
.sign (nano::keypair ().prv, 0)
|
||||||
|
.work (*pool.generate (nano::dev::genesis->hash ()))
|
||||||
|
.build ();
|
||||||
|
auto result1 = ledger.process (transaction, *block);
|
||||||
|
ASSERT_EQ (nano::process_result::bad_signature, result1.code);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST (ledger, fail_epoch_bad_signature)
|
||||||
|
{
|
||||||
|
auto ctx = nano::test::context::ledger_empty ();
|
||||||
|
auto & ledger = ctx.ledger ();
|
||||||
|
auto & store = ctx.store ();
|
||||||
|
auto transaction = store.tx_begin_write ();
|
||||||
|
nano::work_pool pool{ nano::dev::network_params.network, std::numeric_limits<unsigned>::max () };
|
||||||
|
nano::block_builder builder;
|
||||||
|
auto block = builder
|
||||||
|
.state ()
|
||||||
|
.account (nano::dev::genesis_key.pub)
|
||||||
|
.previous (nano::dev::genesis->hash ())
|
||||||
|
.representative (nano::dev::genesis_key.pub)
|
||||||
|
.balance (nano::dev::constants.genesis_amount)
|
||||||
|
.link (ledger.epoch_link (nano::epoch::epoch_1))
|
||||||
|
.sign (nano::dev::genesis_key.prv, nano::dev::genesis_key.pub)
|
||||||
|
.work (*pool.generate (nano::dev::genesis->hash ()))
|
||||||
|
.build_shared ();
|
||||||
|
block->signature.bytes[0] ^= 1;
|
||||||
|
auto result1 = ledger.process (transaction, *block);
|
||||||
|
ASSERT_EQ (nano::process_result::bad_signature, result1.code); // Fails epoch signature
|
||||||
|
block->signature.bytes[0] ^= 1;
|
||||||
|
auto result2 = ledger.process (transaction, *block);
|
||||||
|
ASSERT_EQ (nano::process_result::progress, result2.code); // Succeeds with epoch signature
|
||||||
|
}
|
||||||
|
|
||||||
TEST (ledger, fail_change_bad_signature)
|
TEST (ledger, fail_change_bad_signature)
|
||||||
{
|
{
|
||||||
auto ctx = nano::test::context::ledger_empty ();
|
auto ctx = nano::test::context::ledger_empty ();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue