package cidata
import (
"io"
"strings"
"testing"
"gotest.tools/v3/assert"
)
var defaultRemoveDefaults = false
func TestConfig(t *testing.T) {
args := &TemplateArgs{
Name: "default",
User: "foo",
UID: 501,
Comment: "Foo",
Home: "/home/foo.linux",
Shell: "/bin/bash",
SSHPubKeys: []string{
"ssh-rsa dummy [email protected]",
},
MountType: "reverse-sshfs",
}
config, err := ExecuteTemplateCloudConfig(args)
assert.NilError(t, err)
t.Log(string(config))
assert.Assert(t, !strings.Contains(string(config), "ca_certs:"))
assert.Assert(t, !strings.Contains(string(config), "mounts:"))
}
func TestConfigCACerts(t *testing.T) {
args := &TemplateArgs{
Name: "default",
User: "foo",
UID: 501,
Comment: "Foo",
Home: "/home/foo.linux",
Shell: "/bin/bash",
SSHPubKeys: []string{
"ssh-rsa dummy [email protected]",
},
MountType: "reverse-sshfs",
CACerts: CACerts{
RemoveDefaults: &defaultRemoveDefaults,
},
}
config, err := ExecuteTemplateCloudConfig(args)
assert.NilError(t, err)
t.Log(string(config))
assert.Assert(t, strings.Contains(string(config), "ca_certs:"))
}
var defaultMounts = []Mount{
{MountPoint: "/home/foo.linux", Tag: "mount0", Type: "virtiofs", Options: "ro"},
{MountPoint: "/tmp/lima", Tag: "mount1", Type: "virtiofs"},
}
func TestConfigMounts(t *testing.T) {
args := &TemplateArgs{
Name: "default",
User: "foo",
UID: 501,
Comment: "Foo",
Home: "/home/foo.linux",
Shell: "/bin/bash",
SSHPubKeys: []string{
"ssh-rsa dummy [email protected]",
},
MountType: "virtiofs",
Mounts: defaultMounts,
}
config, err := ExecuteTemplateCloudConfig(args)
assert.NilError(t, err)
t.Log(string(config))
assert.Assert(t, strings.Contains(string(config), "mounts:"))
}
func TestConfigMountsNone(t *testing.T) {
args := &TemplateArgs{
Name: "default",
User: "foo",
UID: 501,
Comment: "Foo",
Home: "/home/foo.linux",
Shell: "/bin/bash",
SSHPubKeys: []string{
"ssh-rsa dummy [email protected]",
},
MountType: "virtiofs",
Mounts: []Mount{},
}
config, err := ExecuteTemplateCloudConfig(args)
assert.NilError(t, err)
t.Log(string(config))
assert.Assert(t, !strings.Contains(string(config), "mounts:"))
}
func TestTemplate(t *testing.T) {
args := &TemplateArgs{
Name: "default",
User: "foo",
UID: 501,
Home: "/home/foo.linux",
Shell: "/bin/bash",
SSHPubKeys: []string{
"ssh-rsa dummy [email protected]",
},
Mounts: []Mount{
{MountPoint: "/Users/dummy"},
{MountPoint: "/Users/dummy/lima"},
},
MountType: "reverse-sshfs",
CACerts: CACerts{
RemoveDefaults: &defaultRemoveDefaults,
Trusted: []Cert{},
},
}
layout, err := ExecuteTemplateCIDataISO(args)
assert.NilError(t, err)
for _, f := range layout {
t.Logf("=== %q ===", f.Path)
b, err := io.ReadAll(f.Reader)
assert.NilError(t, err)
t.Log(string(b))
if f.Path == "user-data" {
assert.Assert(t, !strings.Contains(string(b), "mounts:"))
assert.Assert(t, !strings.Contains(string(b), "trusted:"))
}
}
}
func TestTemplate9p(t *testing.T) {
args := &TemplateArgs{
Name: "default",
User: "foo",
UID: 501,
Home: "/home/foo.linux",
Shell: "/bin/bash",
SSHPubKeys: []string{
"ssh-rsa dummy [email protected]",
},
Mounts: []Mount{
{Tag: "mount0", MountPoint: "/Users/dummy", Type: "9p", Options: "ro,trans=virtio"},
{Tag: "mount1", MountPoint: "/Users/dummy/lima", Type: "9p", Options: "rw,trans=virtio"},
},
MountType: "9p",
CACerts: CACerts{
RemoveDefaults: &defaultRemoveDefaults,
},
}
layout, err := ExecuteTemplateCIDataISO(args)
assert.NilError(t, err)
for _, f := range layout {
t.Logf("=== %q ===", f.Path)
b, err := io.ReadAll(f.Reader)
assert.NilError(t, err)
t.Log(string(b))
if f.Path == "user-data" {
assert.Assert(t, strings.Contains(string(b), "mounts:"))
}
}
}