let mut checkpoint_invalid_sync_committee_proof = Box::new(snowbridge_pallet_ethereum_client::mock_electra::load_checkpoint_update_fixture());
let mut checkpoint_invalid_blocks_root_proof = checkpoint_invalid_sync_committee_proof.clone();
let new_random_keys: Vec<snowbridge_beacon_primitives::PublicKey> = generate_ethereum_pub_keys(snowbridge_pallet_ethereum_client::config::SYNC_COMMITTEE_SIZE as u32).iter().map(|key| {
check_invalid_sync_committee.current_sync_committee.pubkeys = new_random_keys.try_into().expect("cannot convert keys");
EthereumBeaconClient::force_checkpoint(root_origin(), checkpoint_invalid_sync_committee_proof),
update_header.sync_aggregate.sync_committee_bits = [0u8; snowbridge_pallet_ethereum_client::config::SYNC_COMMITTEE_BITS_SIZE];
assert_noop!(EthereumBeaconClient::submit(origin_of(ALICE.into()), update_header.clone()), snowbridge_pallet_ethereum_client::Error::<Runtime>::SyncCommitteeParticipantsNotSupermajority);
// 1. A header in the next period n+1 but without having set the next sync committee, which fails
// 2. Then submits a proper sync committee update for this period (n), indicating who the next sync committee will be
// 3. Then submits an update on the next period (n+1), but without indicating who the next committee is going to be again (in period n+2), which fails
// 4. Then submits a header on the next period(n+1), this time indicating who the next sync committee is going to be
// Generate fixtures using a separate thread with 50MB stack size because those structs are huge