test.rs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. use solana_program::hash::Hash;
  2. use solana_program_test::{processor, BanksClient, ProgramTest};
  3. use solana_sdk::{
  4. native_token::LAMPORTS_PER_SOL, signature::Keypair, signer::Signer, system_instruction,
  5. transaction::Transaction,
  6. };
  7. use steel::*;
  8. use token_swap_api::prelude::*;
  9. async fn setup() -> (BanksClient, Keypair, Hash) {
  10. let mut program_test = ProgramTest::new(
  11. "token_swap_program",
  12. token_swap_api::ID,
  13. processor!(token_swap_program::process_instruction),
  14. );
  15. program_test.prefer_bpf(true);
  16. program_test.start().await
  17. }
  18. #[tokio::test]
  19. async fn run_test() {
  20. // Setup test
  21. let (mut banks, payer, blockhash) = setup().await;
  22. let admin = Keypair::new();
  23. let id = Keypair::new();
  24. let fee = 1000; // 10%
  25. // // create admin account
  26. // let tx = Transaction::new_signed_with_payer(
  27. // &[system_instruction::create_account(
  28. // &payer.pubkey(),
  29. // &admin.pubkey(),
  30. // 1 * LAMPORTS_PER_SOL,
  31. // 0,
  32. // &token_swap_api::ID,
  33. // )],
  34. // Some(&payer.pubkey()),
  35. // &[&payer, &admin],
  36. // blockhash,
  37. // );
  38. // let res = banks.process_transaction(tx).await;
  39. // assert!(res.is_ok());
  40. // Submit initialize transaction.
  41. let ix = create_amm(payer.pubkey(), admin.pubkey(), id.pubkey(), fee);
  42. let tx = Transaction::new_signed_with_payer(&[ix], Some(&payer.pubkey()), &[&payer], blockhash);
  43. let res = banks.process_transaction(tx).await;
  44. assert!(res.is_ok());
  45. let amm_address = amm_pda(id.pubkey()).0;
  46. let amm_account = banks.get_account(amm_address).await.unwrap().unwrap();
  47. let amm = Amm::try_from_bytes(&amm_account.data).unwrap();
  48. assert_eq!(amm_account.owner, token_swap_api::ID);
  49. assert_eq!(amm.id, id.pubkey());
  50. assert_eq!(amm.admin, admin.pubkey());
  51. assert_eq!(u16::from_le_bytes(amm.fee), fee);
  52. }