test.ts 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import * as anchor from "@project-serum/anchor";
  2. import { CreateNft } from "../target/types/create_nft";
  3. const TOKEN_METADATA_PROGRAM_ID = new anchor.web3.PublicKey(
  4. "metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"
  5. );
  6. describe("Create an NFT", () => {
  7. const provider = anchor.AnchorProvider.env();
  8. anchor.setProvider(provider);
  9. const payer = provider.wallet as anchor.Wallet;
  10. const program = anchor.workspace.CreateNft as anchor.Program<CreateNft>;
  11. const tokenTitle = "Solana Gold";
  12. const tokenSymbol = "GOLDSOL";
  13. const tokenUri = "https://raw.githubusercontent.com/solana-developers/program-examples/new-examples/tokens/tokens/.assets/spl-token.json";
  14. const mintKeypair: anchor.web3.Keypair = anchor.web3.Keypair.generate();
  15. console.log(`New token: ${mintKeypair.publicKey}`);
  16. it("Create!", 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. const metadataAddress = (await anchor.web3.PublicKey.findProgramAddress(
  25. [
  26. Buffer.from("metadata"),
  27. TOKEN_METADATA_PROGRAM_ID.toBuffer(),
  28. mintKeypair.publicKey.toBuffer(),
  29. ],
  30. TOKEN_METADATA_PROGRAM_ID
  31. ))[0];
  32. const sx = await program.methods.createTokenMint(
  33. tokenTitle, tokenSymbol, tokenUri
  34. )
  35. .accounts({
  36. metadataAccount: metadataAddress,
  37. mintAccount: mintKeypair.publicKey,
  38. mintAuthority: mintAuthorityPda,
  39. payer: payer.publicKey,
  40. rent: anchor.web3.SYSVAR_RENT_PUBKEY,
  41. systemProgram: anchor.web3.SystemProgram.programId,
  42. tokenProgram: anchor.utils.token.TOKEN_PROGRAM_ID,
  43. tokenMetadataProgram: TOKEN_METADATA_PROGRAM_ID,
  44. })
  45. .signers([mintKeypair, payer.payer])
  46. .rpc();
  47. console.log("Success!");
  48. console.log(` Mint Address: ${mintKeypair.publicKey}`);
  49. console.log(` Tx Signature: ${sx}`);
  50. });
  51. });