test.ts 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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 { ASSOCIATED_PROGRAM_ID } from '@project-serum/anchor/dist/cjs/utils/token';
  6. import { SplTokenMinter } from "../target/types/spl_token_minter";
  7. describe("SPL Token Minter", () => {
  8. const provider = anchor.AnchorProvider.env();
  9. anchor.setProvider(provider);
  10. const payer = provider.wallet as anchor.Wallet;
  11. const program = anchor.workspace.SplTokenMinter as anchor.Program<SplTokenMinter>;
  12. const tokenTitle = "Solana Gold";
  13. const tokenSymbol = "GOLDSOL";
  14. const tokenUri = "https://raw.githubusercontent.com/solana-developers/program-examples/new-examples/tokens/tokens/.assets/spl-token.json";
  15. const mintKeypair: anchor.web3.Keypair = anchor.web3.Keypair.generate();
  16. it("Create an SPL Token!", async () => {
  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 sx = await program.methods.createToken(
  26. tokenTitle, tokenSymbol, tokenUri
  27. )
  28. .accounts({
  29. metadataAccount: metadataAddress,
  30. mintAccount: mintKeypair.publicKey,
  31. mintAuthority: payer.publicKey,
  32. payer: payer.publicKey,
  33. rent: anchor.web3.SYSVAR_RENT_PUBKEY,
  34. systemProgram: anchor.web3.SystemProgram.programId,
  35. tokenProgram: anchor.utils.token.TOKEN_PROGRAM_ID,
  36. tokenMetadataProgram: TOKEN_METADATA_PROGRAM_ID,
  37. })
  38. .signers([mintKeypair, payer.payer])
  39. .rpc();
  40. console.log("Success!");
  41. console.log(` Mint Address: ${mintKeypair.publicKey}`);
  42. console.log(` Tx Signature: ${sx}`);
  43. });
  44. it("Mint some tokens to your wallet!", async () => {
  45. const associatedTokenAccountAddress = await anchor.utils.token.associatedAddress({
  46. mint: mintKeypair.publicKey,
  47. owner: payer.publicKey,
  48. });
  49. const sx = await program.methods.mintTo(
  50. new anchor.BN(150)
  51. )
  52. .accounts({
  53. associatedTokenAccount: associatedTokenAccountAddress,
  54. mintAccount: mintKeypair.publicKey,
  55. mintAuthority: payer.publicKey,
  56. payer: payer.publicKey,
  57. rent: anchor.web3.SYSVAR_RENT_PUBKEY,
  58. systemProgram: anchor.web3.SystemProgram.programId,
  59. tokenProgram: anchor.utils.token.TOKEN_PROGRAM_ID,
  60. associatedTokenProgram: ASSOCIATED_PROGRAM_ID,
  61. })
  62. .signers([payer.payer])
  63. .rpc();
  64. console.log("Success!");
  65. console.log(` Mint Address: ${mintKeypair.publicKey}`);
  66. console.log(` Tx Signature: ${sx}`);
  67. });
  68. });