| 
									
										
										
										
											2019-07-15 21:59:19 -04:00
										 |  |  | // @flow
 | 
					
						
							|  |  |  | import nacl from 'tweetnacl'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import {PublicKey} from '../src/publickey'; | 
					
						
							|  |  |  | import {ValidatorInfo} from '../src/validator-info'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | test('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', | 
					
						
							| 
									
										
										
										
											2019-07-18 09:40:34 -06:00
										 |  |  |       keybaseUsername: 'validator_id', | 
					
						
							| 
									
										
										
										
											2019-07-15 21:59:19 -04:00
										 |  |  |     }, | 
					
						
							|  |  |  |   ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   // 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( | 
					
						
							| 
									
										
										
										
											2019-07-18 09:40:34 -06:00
										 |  |  |     'AgdRlwF0SPKsXcI8nrx6x4wKJyV6xhRFjeCk8W+AAAAAABOY9ixtGkV8UbpqS189vS9p/KkyFiGNyJl+QWvRfZPKATUAAAAAAAAAeyJrZXliYXNlVXNlcm5hbWUiOiJ2YWxpZGF0b3JfaWQiLCJuYW1lIjoiVmFsaWRhdG9yIn0', | 
					
						
							| 
									
										
										
										
											2019-07-15 21:59:19 -04:00
										 |  |  |     'base64', | 
					
						
							|  |  |  |   ); | 
					
						
							|  |  |  |   const info = ValidatorInfo.fromConfigData(configData); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   expect(info).toEqual(expectedValidatorInfo); | 
					
						
							|  |  |  | }); |