github.com/gnolang/gno@v0.0.0-20240520182011-228e9d0192ce/tm2/pkg/crypto/keys/client/verify_test.go (about) 1 package client 2 3 import ( 4 "encoding/hex" 5 "fmt" 6 "strings" 7 "testing" 8 9 "github.com/gnolang/gno/tm2/pkg/commands" 10 "github.com/gnolang/gno/tm2/pkg/crypto/keys" 11 "github.com/gnolang/gno/tm2/pkg/testutils" 12 "github.com/stretchr/testify/assert" 13 ) 14 15 func Test_execVerify(t *testing.T) { 16 t.Parallel() 17 18 // make new test dir 19 kbHome, kbCleanUp := testutils.NewTestCaseDir(t) 20 assert.NotNil(t, kbHome) 21 defer kbCleanUp() 22 23 // initialize test options 24 cfg := &VerifyCfg{ 25 RootCfg: &BaseCfg{ 26 BaseOptions: BaseOptions{ 27 Home: kbHome, 28 InsecurePasswordStdin: true, 29 }, 30 }, 31 DocPath: "", 32 } 33 34 io := commands.NewTestIO() 35 36 fakeKeyName1 := "verifyApp_Key1" 37 // encPassword := "12345678" 38 encPassword := "" 39 testMsg := "some message" 40 41 // add test account to keybase. 42 kb, err := keys.NewKeyBaseFromDir(kbHome) 43 assert.NoError(t, err) 44 _, err = kb.CreateAccount(fakeKeyName1, testMnemonic, "", encPassword, 0, 0) 45 assert.NoError(t, err) 46 47 // sign test message. 48 priv, err := kb.ExportPrivateKeyObject(fakeKeyName1, encPassword) 49 assert.NoError(t, err) 50 testSig, err := priv.Sign([]byte(testMsg)) 51 assert.NoError(t, err) 52 testSigHex := hex.EncodeToString(testSig) 53 54 // good signature passes test. 55 args := []string{fakeKeyName1, testSigHex} 56 io.SetIn( 57 strings.NewReader( 58 fmt.Sprintf("%s\n", testMsg), 59 ), 60 ) 61 err = execVerify(cfg, args, io) 62 assert.NoError(t, err) 63 64 // mutated bad signature fails test. 65 testBadSig := testutils.MutateByteSlice(testSig) 66 testBadSigHex := hex.EncodeToString(testBadSig) 67 args = []string{fakeKeyName1, testBadSigHex} 68 io.SetIn( 69 strings.NewReader( 70 fmt.Sprintf("%s\n", testMsg), 71 ), 72 ) 73 err = execVerify(cfg, args, io) 74 assert.Error(t, err) 75 }