40 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import {Buffer} from 'buffer';
 | 
						|
import {expect} from 'chai';
 | 
						|
import nacl from 'tweetnacl';
 | 
						|
 | 
						|
import {PublicKey} from '../src/publickey';
 | 
						|
import {ValidatorInfo} from '../src/validator-info';
 | 
						|
 | 
						|
describe('ValidatorInfo', () => {
 | 
						|
  it('from config account data', () => {
 | 
						|
    const keypair = nacl.sign.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);
 | 
						|
  });
 | 
						|
});
 |