79 lines
2.2 KiB
TypeScript
79 lines
2.2 KiB
TypeScript
import * as anchor from "@coral-xyz/anchor";
|
|
import { Program } from "@coral-xyz/anchor";
|
|
import { AccountCommand } from "../target/types/account_command";
|
|
import { assert } from "chai";
|
|
import { execSync } from "child_process";
|
|
import { sleep } from "@project-serum/common";
|
|
|
|
describe("Test CLI account commands", () => {
|
|
// Configure the client to use the local cluster.
|
|
const provider = anchor.AnchorProvider.env();
|
|
|
|
anchor.setProvider(provider);
|
|
|
|
const program = anchor.workspace.AccountCommand as Program<AccountCommand>;
|
|
|
|
it("Can fetch and deserialize account using the account command", async () => {
|
|
const myAccount = anchor.web3.Keypair.generate();
|
|
|
|
const balance = -2.5;
|
|
const amount = 108;
|
|
const memo = "account test";
|
|
const values = [1, 2, 3, 1000];
|
|
|
|
await program.methods
|
|
.initialize(
|
|
balance,
|
|
new anchor.BN(amount),
|
|
memo,
|
|
values.map((x) => new anchor.BN(x))
|
|
)
|
|
.accounts({
|
|
myAccount: myAccount.publicKey,
|
|
user: provider.wallet.publicKey,
|
|
systemProgram: anchor.web3.SystemProgram.programId,
|
|
})
|
|
.signers([myAccount])
|
|
.rpc();
|
|
|
|
let output: any = {};
|
|
for (let tries = 0; tries < 20; tries++) {
|
|
try {
|
|
output = JSON.parse(
|
|
execSync(
|
|
`anchor account account_command.MyAccount ${myAccount.publicKey}`,
|
|
{ stdio: "pipe" }
|
|
).toString()
|
|
);
|
|
break;
|
|
} catch (e) {
|
|
if (!e.stderr.toString().startsWith("Error: AccountNotFound")) {
|
|
throw e;
|
|
}
|
|
}
|
|
|
|
await sleep(5000);
|
|
}
|
|
|
|
assert(output.balance == balance, "Balance deserialized incorrectly");
|
|
assert(
|
|
output.delegatePubkey == provider.wallet.publicKey,
|
|
"delegatePubkey deserialized incorrectly"
|
|
);
|
|
assert(
|
|
output.sub.state.Confirmed.amount === amount,
|
|
"Amount deserialized incorrectly"
|
|
);
|
|
assert(
|
|
output.sub.state.Confirmed.memo === memo,
|
|
"Memo deserialized incorrectly"
|
|
);
|
|
for (let i = 0; i < values.length; i++) {
|
|
assert(
|
|
output.sub.values[i] == values[i],
|
|
"Values deserialized incorrectly"
|
|
);
|
|
}
|
|
});
|
|
});
|