125 lines
2.5 KiB
Go
125 lines
2.5 KiB
Go
package template_test
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/json"
|
|
"io"
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/influxdata/influx-cli/v2/api"
|
|
"github.com/influxdata/influx-cli/v2/pkg/template"
|
|
"github.com/stretchr/testify/require"
|
|
"gopkg.in/yaml.v3"
|
|
)
|
|
|
|
var tmpls = []api.TemplateEntry{
|
|
{
|
|
ApiVersion: "api1",
|
|
Kind: "Foo",
|
|
Metadata: api.TemplateEntryMetadata{
|
|
Name: "foo",
|
|
},
|
|
Spec: map[string]interface{}{
|
|
"hello": "world",
|
|
"1 + 1 =": "2",
|
|
},
|
|
},
|
|
{
|
|
ApiVersion: "api1",
|
|
Kind: "Bar",
|
|
Metadata: api.TemplateEntryMetadata{
|
|
Name: "bar",
|
|
},
|
|
Spec: map[string]interface{}{
|
|
"success?": "true",
|
|
},
|
|
},
|
|
}
|
|
|
|
func TestOutParams(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
t.Run("json to file", func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
tmp, err := os.MkdirTemp("", "")
|
|
require.NoError(t, err)
|
|
defer os.RemoveAll(tmp)
|
|
|
|
out := filepath.Join(tmp, "test.json")
|
|
params, closer, err := template.ParseOutParams(out, nil)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, closer)
|
|
defer closer()
|
|
|
|
require.NoError(t, params.WriteTemplate(tmpls))
|
|
contents, err := os.ReadFile(out)
|
|
require.NoError(t, err)
|
|
|
|
var written []api.TemplateEntry
|
|
dec := json.NewDecoder(bytes.NewReader(contents))
|
|
require.NoError(t, dec.Decode(&written))
|
|
|
|
require.Equal(t, tmpls, written)
|
|
})
|
|
|
|
t.Run("yaml to file", func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
tmp, err := os.MkdirTemp("", "")
|
|
require.NoError(t, err)
|
|
defer os.RemoveAll(tmp)
|
|
|
|
out := filepath.Join(tmp, "test.yaml")
|
|
params, closer, err := template.ParseOutParams(out, nil)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, closer)
|
|
defer closer()
|
|
|
|
require.NoError(t, params.WriteTemplate(tmpls))
|
|
contents, err := os.ReadFile(out)
|
|
require.NoError(t, err)
|
|
|
|
var written []api.TemplateEntry
|
|
dec := yaml.NewDecoder(bytes.NewReader(contents))
|
|
for {
|
|
var e api.TemplateEntry
|
|
err := dec.Decode(&e)
|
|
if err == io.EOF {
|
|
break
|
|
}
|
|
require.NoError(t, err)
|
|
written = append(written, e)
|
|
}
|
|
|
|
require.Equal(t, tmpls, written)
|
|
})
|
|
|
|
t.Run("yaml to buffer", func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
out := bytes.Buffer{}
|
|
params, closer, err := template.ParseOutParams("", &out)
|
|
require.NoError(t, err)
|
|
require.Nil(t, closer)
|
|
|
|
require.NoError(t, params.WriteTemplate(tmpls))
|
|
|
|
var written []api.TemplateEntry
|
|
dec := yaml.NewDecoder(&out)
|
|
for {
|
|
var e api.TemplateEntry
|
|
err := dec.Decode(&e)
|
|
if err == io.EOF {
|
|
break
|
|
}
|
|
require.NoError(t, err)
|
|
written = append(written, e)
|
|
}
|
|
|
|
require.Equal(t, tmpls, written)
|
|
})
|
|
}
|