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  }