fix: simulateTransaction accounts items can be null (#23229)

* fix: simulated accounts can be null

* Use Missing rather than token program id

Co-authored-by: Arrowana <8245419+Arrowana@users.noreply.github.com>
This commit is contained in:
Pierre 2022-02-21 17:20:11 +11:00 committed by GitHub
parent 04d23a1597
commit ebe3d2d59d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 10 deletions

View File

@ -469,7 +469,7 @@ export type SimulatedTransactionAccountInfo = {
export type SimulatedTransactionResponse = {
err: TransactionError | string | null;
logs: Array<string> | null;
accounts?: SimulatedTransactionAccountInfo[] | null;
accounts?: (SimulatedTransactionAccountInfo | null)[] | null;
unitsConsumed?: number;
};
@ -480,13 +480,15 @@ const SimulatedTransactionResponseStruct = jsonRpcResultAndContext(
accounts: optional(
nullable(
array(
pick({
executable: boolean(),
owner: string(),
lamports: number(),
data: array(string()),
rentEpoch: optional(number()),
}),
nullable(
pick({
executable: boolean(),
owner: string(),
lamports: number(),
data: array(string()),
rentEpoch: optional(number()),
}),
),
),
),
),

View File

@ -3044,10 +3044,16 @@ describe('Connection', () => {
const results2 = await connection.simulateTransaction(
message,
[account1],
[account1.publicKey],
[
account1.publicKey,
new PublicKey('Missing111111111111111111111111111111111111'),
],
);
expect(results2.value.accounts).lengthOf(1);
expect(results2.value.accounts).lengthOf(2);
if (results2.value.accounts) {
expect(results2.value.accounts[1]).to.be.null;
}
}).timeout(10000);
it('transaction', async () => {