66 lines
2.0 KiB
TypeScript
66 lines
2.0 KiB
TypeScript
import { Native, AnchorProvider, setProvider } from "@coral-xyz/anchor";
|
|
import { splAssociatedTokenAccountProgram } from "@coral-xyz/spl-associated-token-account";
|
|
import { splTokenProgram } from "@coral-xyz/spl-token";
|
|
import { Keypair, PublicKey, SYSVAR_RENT_PUBKEY } from "@solana/web3.js";
|
|
import * as assert from "assert";
|
|
|
|
describe("spl-associated-token-coder", () => {
|
|
// Configure the client to use the local cluster.
|
|
const provider = AnchorProvider.env();
|
|
setProvider(provider);
|
|
|
|
// Client.
|
|
const program = splAssociatedTokenAccountProgram({
|
|
provider,
|
|
});
|
|
const systemProgram = Native.system();
|
|
const tokenProgram = splTokenProgram({
|
|
provider,
|
|
});
|
|
|
|
it("Creates an account", async () => {
|
|
// arrange
|
|
const mintKeypair = Keypair.generate();
|
|
const mintDecimals = 6;
|
|
const [associatedToken] = await PublicKey.findProgramAddress(
|
|
[
|
|
provider.publicKey.toBuffer(),
|
|
tokenProgram.programId.toBuffer(),
|
|
mintKeypair.publicKey.toBuffer(),
|
|
],
|
|
program.programId
|
|
);
|
|
|
|
// act
|
|
await program.methods
|
|
.create()
|
|
.accounts({
|
|
associatedAccountAddress: associatedToken,
|
|
fundingAddress: provider.wallet.publicKey,
|
|
systemProgram: systemProgram.programId,
|
|
tokenMintAddress: mintKeypair.publicKey,
|
|
tokenProgram: tokenProgram.programId,
|
|
walletAddress: provider.wallet.publicKey,
|
|
})
|
|
.preInstructions(
|
|
await Promise.all([
|
|
tokenProgram.account.mint.createInstruction(mintKeypair),
|
|
tokenProgram.methods
|
|
.initializeMint(mintDecimals, provider.wallet.publicKey, null)
|
|
.accounts({
|
|
mint: mintKeypair.publicKey,
|
|
rent: SYSVAR_RENT_PUBKEY,
|
|
})
|
|
.instruction(),
|
|
])
|
|
)
|
|
.signers([mintKeypair])
|
|
.rpc();
|
|
// assert
|
|
const tokenAccount = await tokenProgram.account.account.fetch(
|
|
associatedToken
|
|
);
|
|
assert.ok(tokenAccount.mint.equals(mintKeypair.publicKey));
|
|
});
|
|
});
|