light_merkle_tree_metadata/
access.rs1use bytemuck::{Pod, Zeroable};
2use light_compressed_account::pubkey::Pubkey;
3use zerocopy::{FromBytes, Immutable, IntoBytes, KnownLayout};
4
5use crate::{AnchorDeserialize, AnchorSerialize};
6
7#[repr(C)]
8#[derive(
9 AnchorDeserialize,
10 AnchorSerialize,
11 Debug,
12 PartialEq,
13 Default,
14 Pod,
15 Zeroable,
16 Clone,
17 Copy,
18 FromBytes,
19 IntoBytes,
20 KnownLayout,
21 Immutable,
22)]
23pub struct AccessMetadata {
24 pub owner: Pubkey,
26 pub program_owner: Pubkey,
28 pub forester: Pubkey,
35}
36
37impl AccessMetadata {
38 pub fn new(owner: Pubkey, program_owner: Option<Pubkey>, forester: Option<Pubkey>) -> Self {
39 Self {
40 owner,
41 program_owner: program_owner.unwrap_or_default(),
42 forester: forester.unwrap_or_default(),
43 }
44 }
45}
46
47#[test]
48fn test_new() {
49 let owner = Pubkey::new_unique();
50 let program_owner = Pubkey::new_unique();
51 let forester = Pubkey::new_unique();
52 let access_metadata = AccessMetadata::new(owner, Some(program_owner), Some(forester));
53 assert_eq!(access_metadata.owner, owner);
54 assert_eq!(access_metadata.program_owner, program_owner);
55 assert_eq!(access_metadata.forester, forester);
56
57 let access_metadata = AccessMetadata::new(owner, None, None);
59 assert_eq!(access_metadata.owner, owner);
60 assert_eq!(access_metadata.program_owner, Pubkey::default());
61 assert_eq!(access_metadata.forester, Pubkey::default());
62}