Remove unneeded test for fake V5 txs

We don't need this test anymore since we have real V5 txs now.
This commit is contained in:
Marek 2024-12-17 22:36:17 +01:00
parent e1e01626a6
commit 72289299a4
1 changed files with 0 additions and 124 deletions

View File

@ -326,130 +326,6 @@ fn empty_v5_librustzcash_round_trip() {
);
}
/// Do a round-trip test on fake v5 transactions created from v4 transactions
/// in the block test vectors.
///
/// Covers Sapling only, Transparent only, and Sapling/Transparent v5
/// transactions.
#[test]
fn fake_v5_round_trip() {
let _init_guard = zebra_test::init();
for network in Network::iter() {
fake_v5_round_trip_for_network(network);
}
}
fn fake_v5_round_trip_for_network(network: Network) {
let block_iter = network.block_iter();
let overwinter_activation_height = NetworkUpgrade::Overwinter
.activation_height(&network)
.expect("a valid height")
.0;
// skip blocks that are before overwinter as they will not have a valid consensus branch id
let blocks_after_overwinter =
block_iter.skip_while(|(height, _)| **height < overwinter_activation_height);
for (height, original_bytes) in blocks_after_overwinter {
let original_block = original_bytes
.zcash_deserialize_into::<Block>()
.expect("block is structurally valid");
// skip this block if it only contains v5 transactions,
// the block round-trip test covers it already
if original_block
.transactions
.iter()
.all(|trans| matches!(trans.as_ref(), &Transaction::V5 { .. }))
{
continue;
}
let mut fake_block = original_block.clone();
fake_block.transactions = fake_block
.transactions
.iter()
.map(AsRef::as_ref)
.map(|t| arbitrary::transaction_to_fake_v5(t, &network, Height(*height)))
.map(Into::into)
.collect();
// test each transaction
for (original_tx, fake_tx) in original_block
.transactions
.iter()
.zip(fake_block.transactions.iter())
{
assert_ne!(
&original_tx, &fake_tx,
"v1-v4 transactions must change when converted to fake v5"
);
let fake_bytes = fake_tx
.zcash_serialize_to_vec()
.expect("vec serialization is infallible");
assert_ne!(
&original_bytes[..],
fake_bytes,
"v1-v4 transaction data must change when converted to fake v5"
);
let fake_tx2 = fake_bytes
.zcash_deserialize_into::<Transaction>()
.expect("tx is structurally valid");
assert_eq!(fake_tx.as_ref(), &fake_tx2);
let fake_bytes2 = fake_tx2
.zcash_serialize_to_vec()
.expect("vec serialization is infallible");
assert_eq!(
fake_bytes, fake_bytes2,
"data must be equal if structs are equal"
);
}
// test full blocks
assert_ne!(
&original_block, &fake_block,
"v1-v4 transactions must change when converted to fake v5"
);
let fake_bytes = fake_block
.zcash_serialize_to_vec()
.expect("vec serialization is infallible");
assert_ne!(
&original_bytes[..],
fake_bytes,
"v1-v4 transaction data must change when converted to fake v5"
);
// skip fake blocks which exceed the block size limit
if fake_bytes.len() > MAX_BLOCK_BYTES.try_into().unwrap() {
continue;
}
let fake_block2 = fake_bytes
.zcash_deserialize_into::<Block>()
.expect("block is structurally valid");
assert_eq!(fake_block, fake_block2);
let fake_bytes2 = fake_block2
.zcash_serialize_to_vec()
.expect("vec serialization is infallible");
assert_eq!(
fake_bytes, fake_bytes2,
"data must be equal if structs are equal"
);
}
}
#[test]
fn invalid_orchard_nullifier() {
let _init_guard = zebra_test::init();