test.ts 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  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. describe("mint-NFT", () => {
  7. const provider = anchor.AnchorProvider.env();
  8. anchor.setProvider(provider);
  9. const payer = provider.wallet as anchor.Wallet;
  10. const program = anchor.workspace.MintNft as anchor.Program<MintNft>;
  11. it("Mint!", async () => {
  12. const mintKeypair: anchor.web3.Keypair = anchor.web3.Keypair.generate();
  13. console.log(`New token: ${mintKeypair.publicKey}`);
  14. // Derive the metadata account's address and set the metadata
  15. //
  16. const metadataAddress = (await anchor.web3.PublicKey.findProgramAddress(
  17. [
  18. Buffer.from("metadata"),
  19. TOKEN_METADATA_PROGRAM_ID.toBuffer(),
  20. mintKeypair.publicKey.toBuffer(),
  21. ],
  22. TOKEN_METADATA_PROGRAM_ID
  23. ))[0];
  24. const testNftTitle = "Solana Platinum NFT";
  25. const testNftSymbol = "SOLP";
  26. const testNftUri = "https://raw.githubusercontent.com/solana-developers/program-examples/main/nfts/mint/anchor/assets/token_metadata.json";
  27. // Transact with the "mint_token" function in our on-chain program
  28. //
  29. await program.methods.mintToken(
  30. testNftTitle, testNftSymbol, testNftUri
  31. )
  32. .accounts({
  33. metadataAccount: metadataAddress,
  34. mintAccount: mintKeypair.publicKey,
  35. mintAuthority: payer.publicKey,
  36. systemProgram: anchor.web3.SystemProgram.programId,
  37. tokenProgram: anchor.utils.token.TOKEN_PROGRAM_ID,
  38. tokenMetadataProgram: TOKEN_METADATA_PROGRAM_ID,
  39. })
  40. .signers([payer.payer, mintKeypair])
  41. .rpc();
  42. });
  43. });