spl-associated-token-coder.ts 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import { Native, AnchorProvider, setProvider } from "@coral-xyz/anchor";
  2. import { splAssociatedTokenAccountProgram } from "@coral-xyz/spl-associated-token-account";
  3. import { splTokenProgram } from "@coral-xyz/spl-token";
  4. import { Keypair, PublicKey, SYSVAR_RENT_PUBKEY } from "@solana/web3.js";
  5. import * as assert from "assert";
  6. describe("spl-associated-token-coder", () => {
  7. // Configure the client to use the local cluster.
  8. const provider = AnchorProvider.env();
  9. setProvider(provider);
  10. // Client.
  11. const program = splAssociatedTokenAccountProgram({
  12. provider,
  13. });
  14. const systemProgram = Native.system();
  15. const tokenProgram = splTokenProgram({
  16. provider,
  17. });
  18. it("Creates an account", async () => {
  19. // arrange
  20. const mintKeypair = Keypair.generate();
  21. const mintDecimals = 6;
  22. const [associatedToken] = await PublicKey.findProgramAddress(
  23. [
  24. provider.publicKey.toBuffer(),
  25. tokenProgram.programId.toBuffer(),
  26. mintKeypair.publicKey.toBuffer(),
  27. ],
  28. program.programId
  29. );
  30. // act
  31. await program.methods
  32. .create()
  33. .accounts({
  34. associatedAccountAddress: associatedToken,
  35. fundingAddress: provider.wallet.publicKey,
  36. systemProgram: systemProgram.programId,
  37. tokenMintAddress: mintKeypair.publicKey,
  38. tokenProgram: tokenProgram.programId,
  39. walletAddress: provider.wallet.publicKey,
  40. })
  41. .preInstructions(
  42. await Promise.all([
  43. tokenProgram.account.mint.createInstruction(mintKeypair),
  44. tokenProgram.methods
  45. .initializeMint(mintDecimals, provider.wallet.publicKey, null)
  46. .accounts({
  47. mint: mintKeypair.publicKey,
  48. rent: SYSVAR_RENT_PUBKEY,
  49. })
  50. .instruction(),
  51. ])
  52. )
  53. .signers([mintKeypair])
  54. .rpc();
  55. // assert
  56. const tokenAccount = await tokenProgram.account.account.fetch(
  57. associatedToken
  58. );
  59. assert.ok(tokenAccount.mint.equals(mintKeypair.publicKey));
  60. });
  61. });