go_study/fabric-main/cmd/common/config_test.go

66 lines
1.6 KiB
Go

/*
Copyright IBM Corp. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
*/
package common
import (
"fmt"
"math/rand"
"os"
"path/filepath"
"testing"
"time"
"github.com/hyperledger/fabric/cmd/common/comm"
"github.com/hyperledger/fabric/cmd/common/signer"
"github.com/stretchr/testify/require"
)
func TestConfig(t *testing.T) {
rand.Seed(time.Now().UnixNano())
configFilePath := filepath.Join(os.TempDir(), fmt.Sprintf("config-%d.yaml", rand.Int()))
fmt.Println(configFilePath)
t.Run("save and load a config", func(t *testing.T) {
c := Config{
TLSConfig: comm.Config{
CertPath: "foo",
KeyPath: "foo",
PeerCACertPath: "foo",
Timeout: time.Second * 3,
},
SignerConfig: signer.Config{
KeyPath: "foo",
IdentityPath: "foo",
MSPID: "foo",
},
}
err := c.ToFile(configFilePath)
defer os.RemoveAll(configFilePath)
require.NoError(t, err)
c2, err := ConfigFromFile(configFilePath)
require.NoError(t, err)
require.Equal(t, c, c2)
})
t.Run("bad config isn't saved", func(t *testing.T) {
c := Config{}
err := c.ToFile(configFilePath)
require.Contains(t, err.Error(), "config isn't valid")
})
t.Run("bad config isn't loaded", func(t *testing.T) {
_, err := ConfigFromFile(filepath.Join("testdata", "not_a_yaml.yaml"))
require.Contains(t, err.Error(), "error unmarshalling YAML file")
})
t.Run("file that doesn't exist isn't loaded", func(t *testing.T) {
_, err := ConfigFromFile(filepath.Join("testdata", "not_a_file.yaml"))
require.Contains(t, err.Error(), "no such file or directory")
})
}