influxdb/cmd/influxd/upgrade/setup_test.go

82 lines
1.8 KiB
Go

package upgrade
import (
"path/filepath"
"testing"
"github.com/google/go-cmp/cmp"
"github.com/influxdata/influx-cli/v2/config"
"github.com/influxdata/influxdb/v2/bolt"
"github.com/stretchr/testify/require"
"go.uber.org/zap/zaptest"
)
func TestLocalConfig(t *testing.T) {
type testCase struct {
name string
sourceOpts *optionsV1
targetOpts *optionsV2
want config.Config
}
var testCases = []testCase{
{
name: "default",
sourceOpts: &optionsV1{},
targetOpts: &optionsV2{
orgName: "my-org",
token: "my-token",
},
want: config.Config{
Name: config.DefaultConfig.Name,
Host: config.DefaultConfig.Host,
Org: "my-org",
Token: "my-token",
Active: config.DefaultConfig.Active,
},
},
{
name: "v1 url",
sourceOpts: &optionsV1{
dbURL: "https://10.0.0.1:8086",
},
targetOpts: &optionsV2{
orgName: "my-org",
token: "my-token",
},
want: config.Config{
Name: config.DefaultConfig.Name,
Host: "https://10.0.0.1:8086",
Org: "my-org",
Token: "my-token",
Active: config.DefaultConfig.Active,
},
},
}
for _, tc := range testCases {
tc := tc
t.Run(tc.name, func(t *testing.T) {
t.Parallel()
dir := t.TempDir()
log := zaptest.NewLogger(t)
// adjust paths to runtime values
opts := tc.targetOpts
opts.boltPath = filepath.Join(dir, bolt.DefaultFilename)
opts.cliConfigsPath = filepath.Join(dir, "configs")
opts.enginePath = filepath.Join(dir, "engine")
// execute op
err := saveLocalConfig(tc.sourceOpts, opts, log)
require.NoError(t, err)
// verify saved config
localConfigSVC := config.NewLocalConfigService(opts.cliConfigsPath)
actual, err := localConfigSVC.Active()
require.NoError(t, err)
if diff := cmp.Diff(tc.want, actual); diff != "" {
t.Fatal(diff)
}
})
}
}