github.com/cosmos/cosmos-sdk@v0.50.10/x/genutil/utils_test.go (about)

     1  package genutil
     2  
     3  import (
     4  	"encoding/json"
     5  	"os"
     6  	"path/filepath"
     7  	"testing"
     8  	"time"
     9  
    10  	"github.com/cometbft/cometbft/config"
    11  	tmed25519 "github.com/cometbft/cometbft/crypto/ed25519"
    12  	"github.com/cometbft/cometbft/privval"
    13  	"github.com/stretchr/testify/require"
    14  )
    15  
    16  func TestExportGenesisFileWithTime(t *testing.T) {
    17  	t.Parallel()
    18  
    19  	fname := filepath.Join(t.TempDir(), "genesis.json")
    20  
    21  	require.NoError(t, ExportGenesisFileWithTime(fname, "test", nil, json.RawMessage(`{"account_owner": "Bob"}`), time.Now()))
    22  }
    23  
    24  func TestInitializeNodeValidatorFilesFromMnemonic(t *testing.T) {
    25  	t.Parallel()
    26  
    27  	cfg := config.TestConfig()
    28  	cfg.RootDir = t.TempDir()
    29  	require.NoError(t, os.MkdirAll(filepath.Join(cfg.RootDir, "config"), 0o755))
    30  
    31  	tests := []struct {
    32  		name     string
    33  		mnemonic string
    34  		expError bool
    35  	}{
    36  		{
    37  			name:     "invalid mnemonic returns error",
    38  			mnemonic: "side video kiss hotel essence",
    39  			expError: true,
    40  		},
    41  		{
    42  			name:     "empty mnemonic does not return error",
    43  			mnemonic: "",
    44  			expError: false,
    45  		},
    46  		{
    47  			name:     "valid mnemonic does not return error",
    48  			mnemonic: "side video kiss hotel essence door angle student degree during vague adjust submit trick globe muscle frozen vacuum artwork million shield bind useful wave",
    49  			expError: false,
    50  		},
    51  	}
    52  
    53  	for _, tt := range tests {
    54  		tt := tt
    55  		t.Run(tt.name, func(t *testing.T) {
    56  			_, _, err := InitializeNodeValidatorFilesFromMnemonic(cfg, tt.mnemonic)
    57  
    58  			if tt.expError {
    59  				require.Error(t, err)
    60  			} else {
    61  				require.NoError(t, err)
    62  
    63  				if tt.mnemonic != "" {
    64  					actualPVFile := privval.LoadFilePV(cfg.PrivValidatorKeyFile(), cfg.PrivValidatorStateFile())
    65  					expectedPrivateKey := tmed25519.GenPrivKeyFromSecret([]byte(tt.mnemonic))
    66  					expectedFile := privval.NewFilePV(expectedPrivateKey, cfg.PrivValidatorKeyFile(), cfg.PrivValidatorStateFile())
    67  					require.Equal(t, expectedFile, actualPVFile)
    68  				}
    69  			}
    70  		})
    71  	}
    72  }