diff --git a/web3.js/src/stake-program.js b/web3.js/src/stake-program.js index 8cc583fb8a..17875577e1 100644 --- a/web3.js/src/stake-program.js +++ b/web3.js/src/stake-program.js @@ -107,12 +107,12 @@ export class StakeInstruction extends TransactionInstruction { */ get stakePublicKey(): PublicKey | null { switch (this.type) { - case STAKE_INSTRUCTION_LAYOUTS.Initialize: - case STAKE_INSTRUCTION_LAYOUTS.Delegate: - case STAKE_INSTRUCTION_LAYOUTS.Authorize: - case STAKE_INSTRUCTION_LAYOUTS.Split: - case STAKE_INSTRUCTION_LAYOUTS.Withdraw: - case STAKE_INSTRUCTION_LAYOUTS.Deactivate: + case 'Initialize': + case 'Delegate': + case 'Authorize': + case 'Split': + case 'Withdraw': + case 'Deactivate': return this.keys[0].pubkey; default: return null; @@ -126,16 +126,16 @@ export class StakeInstruction extends TransactionInstruction { */ get authorizedPublicKey(): PublicKey | null { switch (this.type) { - case STAKE_INSTRUCTION_LAYOUTS.Delegate: + case 'Delegate': return this.keys[5].pubkey; - case STAKE_INSTRUCTION_LAYOUTS.Authorize: + case 'Authorize': return this.keys[2].pubkey; - case STAKE_INSTRUCTION_LAYOUTS.Split: + case 'Split': return this.keys[2].pubkey; - case STAKE_INSTRUCTION_LAYOUTS.Withdraw: + case 'Withdraw': return this.keys[4].pubkey; - case STAKE_INSTRUCTION_LAYOUTS.Deactivate: - return this.keys[0].pubkey; + case 'Deactivate': + return this.keys[2].pubkey; default: return null; } diff --git a/web3.js/test/stake-program.test.js b/web3.js/test/stake-program.test.js index 2bd65df5ed..6a08fe65f3 100644 --- a/web3.js/test/stake-program.test.js +++ b/web3.js/test/stake-program.test.js @@ -49,6 +49,8 @@ test('createAccountWithSeed', () => { SystemProgram.programId, ); expect(transaction.instructions[1].programId).toEqual(StakeProgram.programId); + const stakeInstruction = StakeInstruction.from(transaction.instructions[1]); + expect(stakeInstruction.stakePublicKey).toEqual(newAccountPubkey); // TODO: Validate transaction contents more }); @@ -71,6 +73,12 @@ test('createAccount', () => { SystemProgram.programId, ); expect(transaction.instructions[1].programId).toEqual(StakeProgram.programId); + const stakeInstruction = StakeInstruction.from(transaction.instructions[1]); + expect(stakeInstruction.stakePublicKey).toEqual(newAccount.publicKey); + + expect(() => { + StakeInstruction.from(transaction.instructions[0]); + }).toThrow(); // TODO: Validate transaction contents more }); @@ -88,6 +96,9 @@ test('delegate', () => { expect(transaction.keys).toHaveLength(6); expect(transaction.programId).toEqual(StakeProgram.programId); + const stakeInstruction = StakeInstruction.from(transaction.instructions[0]); + expect(stakeInstruction.stakePublicKey).toEqual(stake.publicKey); + expect(stakeInstruction.authorizedPublicKey).toEqual(authorized.publicKey); // TODO: Validate transaction contents more }); @@ -107,6 +118,9 @@ test('authorize', () => { expect(transaction.keys).toHaveLength(3); expect(transaction.programId).toEqual(StakeProgram.programId); + const stakeInstruction = StakeInstruction.from(transaction.instructions[0]); + expect(stakeInstruction.stakePublicKey).toEqual(stake.publicKey); + expect(stakeInstruction.authorizedPublicKey).toEqual(authorized.publicKey); // TODO: Validate transaction contents more }); @@ -128,6 +142,9 @@ test('split', () => { SystemProgram.programId, ); expect(transaction.instructions[1].programId).toEqual(StakeProgram.programId); + const stakeInstruction = StakeInstruction.from(transaction.instructions[1]); + expect(stakeInstruction.stakePublicKey).toEqual(stake.publicKey); + expect(stakeInstruction.authorizedPublicKey).toEqual(authorized.publicKey); // TODO: Validate transaction contents more }); @@ -146,6 +163,9 @@ test('withdraw', () => { expect(transaction.keys).toHaveLength(5); expect(transaction.programId).toEqual(StakeProgram.programId); + const stakeInstruction = StakeInstruction.from(transaction.instructions[0]); + expect(stakeInstruction.stakePublicKey).toEqual(stake.publicKey); + expect(stakeInstruction.authorizedPublicKey).toEqual(withdrawer.publicKey); // TODO: Validate transaction contents more }); @@ -158,6 +178,9 @@ test('deactivate', () => { expect(transaction.keys).toHaveLength(3); expect(transaction.programId).toEqual(StakeProgram.programId); + const stakeInstruction = StakeInstruction.from(transaction.instructions[0]); + expect(stakeInstruction.stakePublicKey).toEqual(stake.publicKey); + expect(stakeInstruction.authorizedPublicKey).toEqual(authorized.publicKey); // TODO: Validate transaction contents more });