code.vegaprotocol.io/vega@v0.79.0/wallet/tests/sc_isolate_key_test.go (about) 1 // Copyright (C) 2023 Gobalsky Labs Limited 2 // 3 // This program is free software: you can redistribute it and/or modify 4 // it under the terms of the GNU Affero General Public License as 5 // published by the Free Software Foundation, either version 3 of the 6 // License, or (at your option) any later version. 7 // 8 // This program is distributed in the hope that it will be useful, 9 // but WITHOUT ANY WARRANTY; without even the implied warranty of 10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 // GNU Affero General Public License for more details. 12 // 13 // You should have received a copy of the GNU Affero General Public License 14 // along with this program. If not, see <http://www.gnu.org/licenses/>. 15 16 package tests_test 17 18 import ( 19 "testing" 20 21 vgrand "code.vegaprotocol.io/vega/libs/rand" 22 23 "github.com/stretchr/testify/require" 24 ) 25 26 func TestIsolateKey(t *testing.T) { 27 // given 28 home := t.TempDir() 29 _, passphraseFilePath := NewPassphraseFile(t, home) 30 _, isolatedWalletPassphraseFilePath := NewPassphraseFile(t, home) 31 walletName := vgrand.RandomStr(5) 32 33 // when 34 createWalletResp, err := WalletCreate(t, []string{ 35 "--home", home, 36 "--output", "json", 37 "--wallet", walletName, 38 "--passphrase-file", passphraseFilePath, 39 }) 40 41 // then 42 require.NoError(t, err) 43 AssertCreateWallet(t, createWalletResp). 44 WithName(walletName). 45 LocatedUnder(home) 46 47 // when 48 isolateKeyResp, err := KeyIsolate(t, []string{ 49 "--home", home, 50 "--output", "json", 51 "--wallet", walletName, 52 "--pubkey", createWalletResp.Key.PublicKey, 53 "--passphrase-file", passphraseFilePath, 54 "--isolated-wallet-passphrase-file", isolatedWalletPassphraseFilePath, 55 }) 56 57 // then 58 require.NoError(t, err) 59 AssertIsolateKey(t, isolateKeyResp). 60 WithSpecialName(walletName, createWalletResp.Key.PublicKey). 61 LocatedUnder(home) 62 63 // when 64 generateKeyRespOnIsolatedWallet, err := KeyGenerate(t, []string{ 65 "--home", home, 66 "--output", "json", 67 "--wallet", isolateKeyResp.Wallet, 68 "--passphrase-file", isolatedWalletPassphraseFilePath, 69 }) 70 71 // then 72 require.EqualError(t, err, "could not generate a new key: an isolated wallet can't generate keys") 73 require.Nil(t, generateKeyRespOnIsolatedWallet) 74 }