anchor/tests/system-accounts/tests/system-accounts.js

60 lines
1.5 KiB
JavaScript

const anchor = require("@coral-xyz/anchor");
const splToken = require("@solana/spl-token");
const { assert } = require("chai");
describe("system_accounts", () => {
anchor.setProvider(anchor.AnchorProvider.local());
const program = anchor.workspace.SystemAccounts;
const authority = program.provider.wallet.payer;
const wallet = anchor.web3.Keypair.generate();
it("Is initialized!", async () => {
const tx = await program.rpc.initialize({
accounts: {
authority: authority.publicKey,
wallet: wallet.publicKey,
},
signers: [authority],
});
console.log("Your transaction signature", tx);
});
it("Emits an AccountNotSystemOwned error", async () => {
const mint = await splToken.Token.createMint(
program.provider.connection,
authority,
authority.publicKey,
null,
9,
splToken.TOKEN_PROGRAM_ID
);
const tokenAccount = await mint.createAssociatedTokenAccount(
wallet.publicKey
);
await mint.mintTo(
tokenAccount,
authority.publicKey,
[],
1 * anchor.web3.LAMPORTS_PER_SOL
);
try {
await program.rpc.initialize({
accounts: {
authority: authority.publicKey,
wallet: tokenAccount,
},
signers: [authority],
});
assert.ok(false);
} catch (err) {
const errMsg = "The given account is not owned by the system program";
assert.strictEqual(err.error.errorMessage, errMsg);
assert.strictEqual(err.error.errorCode.number, 3011);
}
});
});