82 lines
1.8 KiB
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)
|
|
}
|
|
})
|
|
}
|
|
}
|