mirror of
https://github.com/logos-blockchain/logos-execution-zone.git
synced 2026-05-13 03:30:05 +00:00
add tests
This commit is contained in:
parent
f722d257a3
commit
2d7d50646d
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1038,9 +1038,53 @@ mod tests {
|
|||||||
assert_ne!(private_id, public_id);
|
assert_ne!(private_id, public_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---- compute_public_authorized_pdas tests ----
|
#[cfg(feature = "host")]
|
||||||
|
#[test]
|
||||||
|
fn private_account_kind_header_round_trips() {
|
||||||
|
let regular = PrivateAccountKind::Regular(42);
|
||||||
|
let pda = PrivateAccountKind::Pda {
|
||||||
|
program_id: [1u32; 8],
|
||||||
|
seed: PdaSeed::new([2u8; 32]),
|
||||||
|
identifier: u128::MAX,
|
||||||
|
};
|
||||||
|
assert_eq!(
|
||||||
|
PrivateAccountKind::from_header_bytes(®ular.to_header_bytes()),
|
||||||
|
Some(regular)
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
PrivateAccountKind::from_header_bytes(&pda.to_header_bytes()),
|
||||||
|
Some(pda)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "host")]
|
||||||
|
#[test]
|
||||||
|
fn private_account_kind_unknown_discriminant_returns_none() {
|
||||||
|
let mut bytes = [0u8; PrivateAccountKind::HEADER_LEN];
|
||||||
|
bytes[0] = 0xFF;
|
||||||
|
assert_eq!(PrivateAccountKind::from_header_bytes(&bytes), None);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn for_private_account_dispatches_correctly() {
|
||||||
|
let program_id: ProgramId = [1; 8];
|
||||||
|
let seed = PdaSeed::new([2; 32]);
|
||||||
|
let npk = NullifierPublicKey([3; 32]);
|
||||||
|
let identifier: Identifier = 77;
|
||||||
|
|
||||||
|
assert_eq!(
|
||||||
|
AccountId::for_private_account(&npk, &PrivateAccountKind::Regular(identifier)),
|
||||||
|
AccountId::from((&npk, identifier)),
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
AccountId::for_private_account(
|
||||||
|
&npk,
|
||||||
|
&PrivateAccountKind::Pda { program_id, seed, identifier }
|
||||||
|
),
|
||||||
|
AccountId::for_private_pda(&program_id, &seed, &npk, identifier),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
/// `compute_public_authorized_pdas` returns the public PDA addresses for the caller's seeds.
|
|
||||||
#[test]
|
#[test]
|
||||||
fn compute_public_authorized_pdas_with_seeds() {
|
fn compute_public_authorized_pdas_with_seeds() {
|
||||||
let caller: ProgramId = [1; 8];
|
let caller: ProgramId = [1; 8];
|
||||||
|
|||||||
@ -745,4 +745,76 @@ mod tests {
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn private_pda_init_identifier_mismatch_fails() {
|
||||||
|
let program = Program::pda_claimer();
|
||||||
|
let keys = test_private_account_keys_1();
|
||||||
|
let npk = keys.npk();
|
||||||
|
let seed = PdaSeed::new([42; 32]);
|
||||||
|
let shared_secret = SharedSecretKey::new(&[55; 32], &keys.vpk());
|
||||||
|
|
||||||
|
let account_id = AccountId::for_private_pda(&program.id(), &seed, &npk, 5);
|
||||||
|
let pre_state = AccountWithMetadata::new(Account::default(), false, account_id);
|
||||||
|
|
||||||
|
let result = execute_and_prove(
|
||||||
|
vec![pre_state],
|
||||||
|
Program::serialize_instruction(seed).unwrap(),
|
||||||
|
vec![InputAccountIdentity::PrivatePdaInit {
|
||||||
|
npk,
|
||||||
|
ssk: shared_secret,
|
||||||
|
identifier: 99,
|
||||||
|
}],
|
||||||
|
&program.into(),
|
||||||
|
);
|
||||||
|
|
||||||
|
assert!(matches!(result, Err(NssaError::CircuitProvingError(_))));
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn private_pda_update_identifier_mismatch_fails() {
|
||||||
|
let program = Program::auth_transfer_proxy();
|
||||||
|
let auth_transfer = Program::authenticated_transfer_program();
|
||||||
|
let keys = test_private_account_keys_1();
|
||||||
|
let npk = keys.npk();
|
||||||
|
let seed = PdaSeed::new([42; 32]);
|
||||||
|
let ssk = SharedSecretKey::new(&[55; 32], &keys.vpk());
|
||||||
|
|
||||||
|
let auth_transfer_id = auth_transfer.id();
|
||||||
|
let pda_id = AccountId::for_private_pda(&program.id(), &seed, &npk, 5);
|
||||||
|
let pda_account = Account {
|
||||||
|
program_owner: auth_transfer_id,
|
||||||
|
balance: 1,
|
||||||
|
..Account::default()
|
||||||
|
};
|
||||||
|
let pda_commitment = Commitment::new(&pda_id, &pda_account);
|
||||||
|
let mut commitment_set = CommitmentSet::with_capacity(1);
|
||||||
|
commitment_set.extend(std::slice::from_ref(&pda_commitment));
|
||||||
|
|
||||||
|
let pda_pre = AccountWithMetadata::new(pda_account, true, pda_id);
|
||||||
|
let recipient_pre =
|
||||||
|
AccountWithMetadata::new(Account::default(), true, AccountId::new([0; 32]));
|
||||||
|
|
||||||
|
let program_with_deps = ProgramWithDependencies::new(
|
||||||
|
program,
|
||||||
|
[(auth_transfer_id, auth_transfer)].into(),
|
||||||
|
);
|
||||||
|
|
||||||
|
let result = execute_and_prove(
|
||||||
|
vec![pda_pre, recipient_pre],
|
||||||
|
Program::serialize_instruction((seed, 1_u128, auth_transfer_id, false)).unwrap(),
|
||||||
|
vec![
|
||||||
|
InputAccountIdentity::PrivatePdaUpdate {
|
||||||
|
ssk,
|
||||||
|
nsk: keys.nsk,
|
||||||
|
membership_proof: commitment_set.get_proof_for(&pda_commitment).unwrap(),
|
||||||
|
identifier: 99,
|
||||||
|
},
|
||||||
|
InputAccountIdentity::Public,
|
||||||
|
],
|
||||||
|
&program_with_deps,
|
||||||
|
);
|
||||||
|
|
||||||
|
assert!(matches!(result, Err(NssaError::CircuitProvingError(_))));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user