lumberjack.ts 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import * as anchor from '@coral-xyz/anchor';
  2. import type { Program } from '@coral-xyz/anchor';
  3. import { ASSOCIATED_PROGRAM_ID } from '@coral-xyz/anchor/dist/cjs/utils/token';
  4. import {
  5. ASSOCIATED_TOKEN_PROGRAM_ID,
  6. TOKEN_2022_PROGRAM_ID,
  7. getAssociatedTokenAddressSync,
  8. getOrCreateAssociatedTokenAccount,
  9. } from '@solana/spl-token';
  10. import { Keypair, PublicKey } from '@solana/web3.js';
  11. import type { ExtensionNft } from '../target/types/extension_nft';
  12. describe('extension_nft', () => {
  13. const provider = anchor.AnchorProvider.env();
  14. anchor.setProvider(provider);
  15. const program = anchor.workspace.ExtensionNft as Program<ExtensionNft>;
  16. const payer = provider.wallet as anchor.Wallet;
  17. it('Mint nft!', async () => {
  18. const balance = await anchor.getProvider().connection.getBalance(payer.publicKey);
  19. if (balance < 1e8) {
  20. const res = await anchor.getProvider().connection.requestAirdrop(payer.publicKey, 1e9);
  21. await anchor.getProvider().connection.confirmTransaction(res, 'confirmed');
  22. }
  23. const mint = new Keypair();
  24. console.log('Mint public key', mint.publicKey.toBase58());
  25. const destinationTokenAccount = getAssociatedTokenAddressSync(
  26. mint.publicKey,
  27. payer.publicKey,
  28. false,
  29. TOKEN_2022_PROGRAM_ID,
  30. ASSOCIATED_TOKEN_PROGRAM_ID,
  31. );
  32. getOrCreateAssociatedTokenAccount;
  33. const tx = await program.methods
  34. .mintNft()
  35. .accounts({
  36. signer: payer.publicKey,
  37. tokenAccount: destinationTokenAccount,
  38. mint: mint.publicKey,
  39. })
  40. .signers([mint])
  41. .rpc();
  42. console.log('Mint nft tx', tx);
  43. await anchor.getProvider().connection.confirmTransaction(tx, 'confirmed');
  44. });
  45. });