test.ts 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import * as anchor from '@coral-xyz/anchor';
  2. import { getAssociatedTokenAddressSync } from '@solana/spl-token';
  3. import { PublicKey } from '@solana/web3.js';
  4. import type { TokenMinter } from '../target/types/token_minter';
  5. describe('NFT Minter', () => {
  6. const provider = anchor.AnchorProvider.env();
  7. anchor.setProvider(provider);
  8. const payer = provider.wallet as anchor.Wallet;
  9. const program = anchor.workspace.TokenMinter as anchor.Program<TokenMinter>;
  10. // Derive the PDA to use as mint account address.
  11. // This same PDA is also used as the mint authority.
  12. const [mintPDA] = PublicKey.findProgramAddressSync([Buffer.from('mint')], program.programId);
  13. const metadata = {
  14. name: 'Solana Gold',
  15. symbol: 'GOLDSOL',
  16. uri: 'https://raw.githubusercontent.com/solana-developers/program-examples/new-examples/tokens/tokens/.assets/spl-token.json',
  17. };
  18. it('Create a token!', async () => {
  19. const transactionSignature = await program.methods
  20. .createToken(metadata.name, metadata.symbol, metadata.uri)
  21. .accounts({
  22. payer: payer.publicKey,
  23. })
  24. .rpc();
  25. console.log('Success!');
  26. console.log(` Mint Address: ${mintPDA}`);
  27. console.log(` Transaction Signature: ${transactionSignature}`);
  28. });
  29. it('Mint 1 Token!', async () => {
  30. // Derive the associated token address account for the mint and payer.
  31. const associatedTokenAccountAddress = getAssociatedTokenAddressSync(mintPDA, payer.publicKey);
  32. // Amount of tokens to mint.
  33. const amount = new anchor.BN(100);
  34. const transactionSignature = await program.methods
  35. .mintToken(amount)
  36. .accounts({
  37. payer: payer.publicKey,
  38. associatedTokenAccount: associatedTokenAccountAddress,
  39. })
  40. .rpc();
  41. console.log('Success!');
  42. console.log(` Associated Token Account Address: ${associatedTokenAccountAddress}`);
  43. console.log(` Transaction Signature: ${transactionSignature}`);
  44. });
  45. });