github.com/prysmaticlabs/prysm@v1.4.4/tools/genesis-state-gen/main_test.go (about) 1 package main 2 3 import ( 4 "bytes" 5 "encoding/json" 6 "fmt" 7 "testing" 8 9 "github.com/prysmaticlabs/prysm/shared/bls" 10 "github.com/prysmaticlabs/prysm/shared/interop" 11 "github.com/prysmaticlabs/prysm/shared/testutil/assert" 12 "github.com/prysmaticlabs/prysm/shared/testutil/require" 13 ) 14 15 func Test_genesisStateFromJSONValidators(t *testing.T) { 16 numKeys := 5 17 jsonData := createGenesisDepositData(t, numKeys) 18 jsonInput, err := json.Marshal(jsonData) 19 require.NoError(t, err) 20 genesisState, err := genesisStateFromJSONValidators( 21 bytes.NewReader(jsonInput), 0, /* genesis time defaults to time.Now() */ 22 ) 23 require.NoError(t, err) 24 for i, val := range genesisState.Validators { 25 assert.DeepEqual(t, fmt.Sprintf("%#x", val.PublicKey), jsonData[i].PubKey) 26 } 27 } 28 29 func createGenesisDepositData(t *testing.T, numKeys int) []*DepositDataJSON { 30 pubKeys := make([]bls.PublicKey, numKeys) 31 privKeys := make([]bls.SecretKey, numKeys) 32 for i := 0; i < numKeys; i++ { 33 randKey, err := bls.RandKey() 34 require.NoError(t, err) 35 privKeys[i] = randKey 36 pubKeys[i] = randKey.PublicKey() 37 } 38 dataList, _, err := interop.DepositDataFromKeys(privKeys, pubKeys) 39 require.NoError(t, err) 40 jsonData := make([]*DepositDataJSON, numKeys) 41 for i := 0; i < numKeys; i++ { 42 dataRoot, err := dataList[i].HashTreeRoot() 43 require.NoError(t, err) 44 jsonData[i] = &DepositDataJSON{ 45 PubKey: fmt.Sprintf("%#x", dataList[i].PublicKey), 46 Amount: dataList[i].Amount, 47 WithdrawalCredentials: fmt.Sprintf("%#x", dataList[i].WithdrawalCredentials), 48 DepositDataRoot: fmt.Sprintf("%#x", dataRoot), 49 Signature: fmt.Sprintf("%#x", dataList[i].Signature), 50 } 51 } 52 return jsonData 53 }