test.ts 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import * as anchor from "@project-serum/anchor";
  2. import { MintNft } from "../target/types/mint_nft";
  3. const TOKEN_METADATA_PROGRAM_ID = new anchor.web3.PublicKey(
  4. "metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"
  5. );
  6. const testTokenTitle = "Solana Platinum NFT";
  7. const testTokenSymbol = "SOLP";
  8. const testTokenUri = "https://raw.githubusercontent.com/solana-developers/program-examples/main/nfts/nft_metadata.json";
  9. describe("mint-token", () => {
  10. const provider = anchor.AnchorProvider.env();
  11. anchor.setProvider(provider);
  12. const payer = provider.wallet as anchor.Wallet;
  13. const program = anchor.workspace.MintNft as anchor.Program<MintNft>;
  14. it("Mint!", async () => {
  15. const mintKeypair: anchor.web3.Keypair = anchor.web3.Keypair.generate();
  16. console.log(`New token: ${mintKeypair.publicKey}`);
  17. const metadataAddress = (await anchor.web3.PublicKey.findProgramAddress(
  18. [
  19. Buffer.from("metadata"),
  20. TOKEN_METADATA_PROGRAM_ID.toBuffer(),
  21. mintKeypair.publicKey.toBuffer(),
  22. ],
  23. TOKEN_METADATA_PROGRAM_ID
  24. ))[0];
  25. const tokenAddress = await anchor.utils.token.associatedAddress({
  26. mint: mintKeypair.publicKey,
  27. owner: payer.publicKey
  28. });
  29. await program.methods.mintToken(
  30. testTokenTitle, testTokenSymbol, testTokenUri
  31. )
  32. .accounts({
  33. metadataAccount: metadataAddress,
  34. mintAccount: mintKeypair.publicKey,
  35. tokenAccount: tokenAddress,
  36. mintAuthority: payer.publicKey,
  37. systemProgram: anchor.web3.SystemProgram.programId,
  38. tokenProgram: anchor.utils.token.TOKEN_PROGRAM_ID,
  39. tokenMetadataProgram: TOKEN_METADATA_PROGRAM_ID,
  40. associatedTokenProgram: anchor.utils.token.ASSOCIATED_PROGRAM_ID,
  41. })
  42. .signers([payer.payer, mintKeypair])
  43. .rpc();
  44. });
  45. });