mirror of
https://github.com/wealdtech/ethdo.git
synced 2026-01-08 21:48:05 -05:00
114 lines
3.4 KiB
Go
114 lines
3.4 KiB
Go
// Copyright © 2019, 2020 Weald Technology Trading
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
package accountcreate
|
|
|
|
import (
|
|
"context"
|
|
"encoding/hex"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/spf13/viper"
|
|
"github.com/stretchr/testify/require"
|
|
distributed "github.com/wealdtech/go-eth2-wallet-distributed"
|
|
keystorev4 "github.com/wealdtech/go-eth2-wallet-encryptor-keystorev4"
|
|
nd "github.com/wealdtech/go-eth2-wallet-nd/v2"
|
|
scratch "github.com/wealdtech/go-eth2-wallet-store-scratch"
|
|
e2wtypes "github.com/wealdtech/go-eth2-wallet-types/v2"
|
|
)
|
|
|
|
func hexToBytes(input string) []byte {
|
|
res, err := hex.DecodeString(strings.TrimPrefix(input, "0x"))
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
return res
|
|
}
|
|
|
|
func TestOutput(t *testing.T) {
|
|
testWallet, err := nd.CreateWallet(context.Background(), "Test", scratch.New(), keystorev4.New())
|
|
require.NoError(t, err)
|
|
require.NoError(t, testWallet.(e2wtypes.WalletLocker).Unlock(context.Background(), nil))
|
|
viper.Set("passphrase", "pass")
|
|
interop0, err := testWallet.(e2wtypes.WalletAccountImporter).ImportAccount(context.Background(),
|
|
"Interop 0",
|
|
hexToBytes("0x25295f0d1d592a90b333e26e85149708208e9f8e8bc18f6c77bd62f8ad7a6866"),
|
|
[]byte("pass"),
|
|
)
|
|
require.NoError(t, err)
|
|
|
|
distributedWallet, err := distributed.CreateWallet(context.Background(), "Test distributed", scratch.New(), keystorev4.New())
|
|
require.NoError(t, err)
|
|
require.NoError(t, distributedWallet.(e2wtypes.WalletLocker).Unlock(context.Background(), nil))
|
|
distributed0, err := distributedWallet.(e2wtypes.WalletDistributedAccountImporter).ImportDistributedAccount(context.Background(),
|
|
"Distributed 0",
|
|
hexToBytes("0x25295f0d1d592a90b333e26e85149708208e9f8e8bc18f6c77bd62f8ad7a6866"),
|
|
2,
|
|
[][]byte{
|
|
hexToBytes("0x876dd4705157eb66dc71bc2e07fb151ea53e1a62a0bb980a7ce72d15f58944a8a3752d754f52f4a60dbfc7b18169f268"),
|
|
hexToBytes("0xaec922bd7a9b7b1dc21993133b586b0c3041c1e2e04b513e862227b9d7aecaf9444222f7e78282a449622ffc6278915d"),
|
|
},
|
|
map[uint64]string{
|
|
1: "localhost-1:12345",
|
|
2: "localhost-2:12345",
|
|
3: "localhost-3:12345",
|
|
},
|
|
[]byte("pass"),
|
|
)
|
|
require.NoError(t, err)
|
|
|
|
tests := []struct {
|
|
name string
|
|
dataOut *dataOut
|
|
res string
|
|
err string
|
|
}{
|
|
{
|
|
name: "Nil",
|
|
err: "no data",
|
|
},
|
|
{
|
|
name: "AccountNil",
|
|
dataOut: &dataOut{},
|
|
err: "no account",
|
|
},
|
|
{
|
|
name: "Account",
|
|
dataOut: &dataOut{
|
|
account: interop0,
|
|
},
|
|
res: "0xa99a76ed7796f7be22d5b7e85deeb7c5677e88e511e0b337618f8c4eb61349b4bf2d153f649f7b53359fe8b94a38e44c",
|
|
},
|
|
{
|
|
name: "DistributedAccount",
|
|
dataOut: &dataOut{
|
|
account: distributed0,
|
|
},
|
|
res: "0x876dd4705157eb66dc71bc2e07fb151ea53e1a62a0bb980a7ce72d15f58944a8a3752d754f52f4a60dbfc7b18169f268",
|
|
},
|
|
}
|
|
|
|
for _, test := range tests {
|
|
t.Run(test.name, func(t *testing.T) {
|
|
res, err := output(context.Background(), test.dataOut)
|
|
if test.err != "" {
|
|
require.EqualError(t, err, test.err)
|
|
} else {
|
|
require.NoError(t, err)
|
|
require.Equal(t, test.res, res)
|
|
}
|
|
})
|
|
}
|
|
}
|