test.ts 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. import {
  2. PROGRAM_ID as TOKEN_METADATA_PROGRAM_ID
  3. } from '@metaplex-foundation/mpl-token-metadata';
  4. import * as anchor from "@project-serum/anchor";
  5. import { CreateToken } from "../target/types/create_token";
  6. describe("Create Tokens", () => {
  7. const provider = anchor.AnchorProvider.env();
  8. anchor.setProvider(provider);
  9. const payer = provider.wallet as anchor.Wallet;
  10. const program = anchor.workspace.CreateToken as anchor.Program<CreateToken>;
  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. it("Create an SPL Token!", async () => {
  15. const mintKeypair: anchor.web3.Keypair = anchor.web3.Keypair.generate();
  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. // SPL Token default = 9 decimals
  25. //
  26. const sx = await program.methods.createTokenMint(
  27. tokenTitle, tokenSymbol, tokenUri, 9
  28. )
  29. .accounts({
  30. metadataAccount: metadataAddress,
  31. mintAccount: mintKeypair.publicKey,
  32. mintAuthority: payer.publicKey,
  33. payer: payer.publicKey,
  34. rent: anchor.web3.SYSVAR_RENT_PUBKEY,
  35. systemProgram: anchor.web3.SystemProgram.programId,
  36. tokenProgram: anchor.utils.token.TOKEN_PROGRAM_ID,
  37. tokenMetadataProgram: TOKEN_METADATA_PROGRAM_ID,
  38. })
  39. .signers([mintKeypair, payer.payer])
  40. .rpc();
  41. console.log("Success!");
  42. console.log(` Mint Address: ${mintKeypair.publicKey}`);
  43. console.log(` Tx Signature: ${sx}`);
  44. });
  45. it("Create an NFT!", async () => {
  46. const mintKeypair: anchor.web3.Keypair = anchor.web3.Keypair.generate();
  47. const metadataAddress = (await anchor.web3.PublicKey.findProgramAddress(
  48. [
  49. Buffer.from("metadata"),
  50. TOKEN_METADATA_PROGRAM_ID.toBuffer(),
  51. mintKeypair.publicKey.toBuffer(),
  52. ],
  53. TOKEN_METADATA_PROGRAM_ID
  54. ))[0];
  55. // NFT default = 0 decimals
  56. //
  57. const sx = await program.methods.createTokenMint(
  58. tokenTitle, tokenSymbol, tokenUri, 0
  59. )
  60. .accounts({
  61. metadataAccount: metadataAddress,
  62. mintAccount: mintKeypair.publicKey,
  63. mintAuthority: payer.publicKey,
  64. payer: payer.publicKey,
  65. rent: anchor.web3.SYSVAR_RENT_PUBKEY,
  66. systemProgram: anchor.web3.SystemProgram.programId,
  67. tokenProgram: anchor.utils.token.TOKEN_PROGRAM_ID,
  68. tokenMetadataProgram: TOKEN_METADATA_PROGRAM_ID,
  69. })
  70. .signers([mintKeypair, payer.payer])
  71. .rpc();
  72. console.log("Success!");
  73. console.log(` Mint Address: ${mintKeypair.publicKey}`);
  74. console.log(` Tx Signature: ${sx}`);
  75. });
  76. });