test_initialize.rs
1 use core::panic; 2 3 use anchor_client::{ 4 anchor_lang::{prelude::System, Id, Key}, 5 solana_sdk::{ 6 commitment_config::CommitmentConfig, pubkey::Pubkey, signature::read_keypair_file, 7 signer::Signer, 8 }, 9 Client, Cluster, 10 }; 11 12 use crate::create_account; 13 14 #[test] 15 fn test_initialize() { 16 let program_id = akinnet::id(); 17 let anchor_wallet = std::env::var("ANCHOR_WALLET").unwrap(); 18 let payer = read_keypair_file(&anchor_wallet).unwrap(); 19 20 let client = Client::new_with_options(Cluster::Localnet, &payer, CommitmentConfig::confirmed()); 21 let program = client.program(program_id).unwrap(); 22 let rpc = program.rpc(); 23 24 eprintln!("Program: {}", program_id.key()); 25 26 let user = create_account(&payer, &rpc, 5000000000); 27 eprintln!("User: {}", user.pubkey()); 28 29 let (root_entry, _) = 30 Pubkey::find_program_address(&[b"root", user.pubkey().as_ref()], &program_id); 31 let (vault_entry, _) = 32 Pubkey::find_program_address(&[b"vault", user.pubkey().as_ref()], &program_id); 33 let (me_entry, _) = 34 Pubkey::find_program_address(&[b"persona", b"Bruce", user.pubkey().as_ref()], &program_id); 35 36 program 37 .request() 38 .accounts(akinnet::accounts::Initialize { 39 root_entry, 40 vault_entry, 41 owner: user.pubkey(), 42 self_persona_entry: me_entry, 43 system_program: System::id(), 44 }) 45 .args(akinnet::instruction::Initialize { 46 name: "Bruce".to_string(), 47 description: "A Nut".to_string(), 48 }) 49 .signer(&user) 50 .send() 51 .expect(""); 52 53 let root_node: akinnet::state::NodeState = program.account(root_entry).unwrap(); 54 assert_eq!(root_node.owner, user.pubkey()); 55 56 let akinnet::state::NodeKind::Root { node, .. } = root_node.kind else { 57 panic!("bad node kind"); 58 }; 59 60 assert_eq!(node, me_entry); 61 62 let me_node: akinnet::state::NodeState = program.account(me_entry).unwrap(); 63 assert_eq!(me_node.owner, user.pubkey()); 64 65 let akinnet::state::NodeKind::Persona { name, description } = me_node.kind else { 66 panic!("bad node kind"); 67 }; 68 69 assert_eq!(name, "Bruce"); 70 assert_eq!(description, "A Nut"); 71 }