solana/web3.js/test/validator-info.test.ts

38 lines
1.4 KiB
TypeScript

import {Buffer} from 'buffer';
import {expect} from 'chai';
import {Keypair} from '../src/keypair';
import {PublicKey} from '../src/publickey';
import {ValidatorInfo} from '../src/validator-info';
describe('ValidatorInfo', () => {
it('from config account data', () => {
const keypair = Keypair.fromSeed(Uint8Array.from(Array(32).fill(8)));
const expectedValidatorInfo = new ValidatorInfo(
new PublicKey(keypair.publicKey),
{
name: 'Validator',
keybaseUsername: 'validator_id',
},
);
// Config data string steps:
// 1) Generate a keypair
// 2) Airdrop lamports to the account
// 3) Modify the `solana-validator-info` tool
// a) Remove the keybase id verification step
// b) Print base64 account data in the `get --all` codepath
// c) Add `println!("Account data: {:?}", base64::encode(&account.data));`
// 4) Use modified `solana-validator-info` tool to publish validator info
// 5) And then use it again to fetch the data! (feel free to trim some A's)
const configData = Buffer.from(
'AgdRlwF0SPKsXcI8nrx6x4wKJyV6xhRFjeCk8W+AAAAAABOY9ixtGkV8UbpqS189vS9p/KkyFiGNyJl+QWvRfZPKATUAAAAAAAAAeyJrZXliYXNlVXNlcm5hbWUiOiJ2YWxpZGF0b3JfaWQiLCJuYW1lIjoiVmFsaWRhdG9yIn0',
'base64',
);
const info = ValidatorInfo.fromConfigData(configData);
expect(info).to.eql(expectedValidatorInfo);
});
});