test.ts 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. import * as anchor from "@project-serum/anchor";
  2. import { MintTokenTo } from "../target/types/mint_token_to";
  3. const TOKEN_METADATA_PROGRAM_ID = new anchor.web3.PublicKey(
  4. "metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"
  5. );
  6. describe("mint-token", () => {
  7. const provider = anchor.AnchorProvider.env();
  8. anchor.setProvider(provider);
  9. const payer = provider.wallet as anchor.Wallet;
  10. const program = anchor.workspace.MintTokenTo as anchor.Program<MintTokenTo>;
  11. const testTokenTitle = "Solana Gold G";
  12. const testTokenSymbol = "GOLDSOL";
  13. const testTokenUri = "https://raw.githubusercontent.com/solana-developers/program-examples/main/tokens/token_metadata.json";
  14. const mintKeypair: anchor.web3.Keypair = anchor.web3.Keypair.generate();
  15. console.log(`New token: ${mintKeypair.publicKey}`);
  16. it("Create the mint", async () => {
  17. const [mintAuthorityPda, mintAuthorityPdaBump] = await anchor.web3.PublicKey.findProgramAddress(
  18. [
  19. Buffer.from("mint_authority_"),
  20. mintKeypair.publicKey.toBuffer(),
  21. ],
  22. program.programId,
  23. );
  24. console.log(`PDA: ${mintAuthorityPda}`);
  25. console.log(`Bump: ${mintAuthorityPdaBump}`);
  26. const metadataAddress = (await anchor.web3.PublicKey.findProgramAddress(
  27. [
  28. Buffer.from("metadata"),
  29. TOKEN_METADATA_PROGRAM_ID.toBuffer(),
  30. mintKeypair.publicKey.toBuffer(),
  31. ],
  32. TOKEN_METADATA_PROGRAM_ID
  33. ))[0];
  34. await program.methods.createTokenMint(
  35. testTokenTitle, testTokenSymbol, testTokenUri, mintAuthorityPdaBump
  36. )
  37. .accounts({
  38. metadataAccount: metadataAddress,
  39. mintAccount: mintKeypair.publicKey,
  40. mintAuthority: mintAuthorityPda,
  41. payer: payer.publicKey,
  42. rent: anchor.web3.SYSVAR_RENT_PUBKEY,
  43. systemProgram: anchor.web3.SystemProgram.programId,
  44. tokenProgram: anchor.utils.token.TOKEN_PROGRAM_ID,
  45. tokenMetadataProgram: TOKEN_METADATA_PROGRAM_ID,
  46. })
  47. .signers([mintKeypair, payer.payer])
  48. .rpc();
  49. });
  50. it("Mint to a wallet!", async () => {
  51. const [mintAuthorityPda, mintAuthorityPdaBump] = await anchor.web3.PublicKey.findProgramAddress(
  52. [
  53. Buffer.from("mint_authority_"),
  54. mintKeypair.publicKey.toBuffer(),
  55. ],
  56. program.programId,
  57. );
  58. console.log(`PDA: ${mintAuthorityPda}`);
  59. console.log(`Bump: ${mintAuthorityPdaBump}`);
  60. const amountToMint = 1;
  61. const tokenAddress = await anchor.utils.token.associatedAddress({
  62. mint: mintKeypair.publicKey,
  63. owner: payer.publicKey
  64. });
  65. console.log(`Token Address: ${tokenAddress}`);
  66. await program.methods.mintToWallet(
  67. new anchor.BN(amountToMint), mintAuthorityPdaBump
  68. )
  69. .accounts({
  70. mintAccount: mintKeypair.publicKey,
  71. mintAuthority: mintAuthorityPda,
  72. tokenAccount: tokenAddress,
  73. payer: payer.publicKey,
  74. rent: anchor.web3.SYSVAR_RENT_PUBKEY,
  75. systemProgram: anchor.web3.SystemProgram.programId,
  76. tokenProgram: anchor.utils.token.TOKEN_PROGRAM_ID,
  77. associatedTokenProgram: anchor.utils.token.ASSOCIATED_PROGRAM_ID,
  78. })
  79. // .signers([payer.payer])
  80. .rpc();
  81. });
  82. });