3b1f523b85
This commit adds two new commands to the Consul KV CLI, which export and import a JSON formatted representation of the Consul KV tree. It is useful to migrate parts of the KV tree between unrelated Consul clusters, and could also be used for initial data population of the KV store.
62 lines
1 KiB
Go
62 lines
1 KiB
Go
package command
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/mitchellh/cli"
|
|
)
|
|
|
|
func TestKVImportCommand_Run(t *testing.T) {
|
|
srv, client := testAgentWithAPIClient(t)
|
|
defer srv.Shutdown()
|
|
waitForLeader(t, srv.httpAddr)
|
|
|
|
const json = `[
|
|
{
|
|
"key": "foo",
|
|
"flags": 0,
|
|
"value": "YmFyCg=="
|
|
},
|
|
{
|
|
"key": "foo/a",
|
|
"flags": 0,
|
|
"value": "YmF6Cg=="
|
|
}
|
|
]`
|
|
|
|
ui := new(cli.MockUi)
|
|
c := &KVImportCommand{
|
|
Ui: ui,
|
|
testStdin: strings.NewReader(json),
|
|
}
|
|
|
|
args := []string{
|
|
"-http-addr=" + srv.httpAddr,
|
|
"-",
|
|
}
|
|
|
|
code := c.Run(args)
|
|
if code != 0 {
|
|
t.Fatalf("bad: %d. %#v", code, ui.ErrorWriter.String())
|
|
}
|
|
|
|
pair, _, err := client.KV().Get("foo", nil)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
if strings.TrimSpace(string(pair.Value)) != "bar" {
|
|
t.Fatalf("bad: expected: bar, got %s", pair.Value)
|
|
}
|
|
|
|
pair, _, err = client.KV().Get("foo/a", nil)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
if strings.TrimSpace(string(pair.Value)) != "baz" {
|
|
t.Fatalf("bad: expected: baz, got %s", pair.Value)
|
|
}
|
|
}
|