Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
lima-vm
GitHub Repository: lima-vm/lima
Path: blob/master/pkg/cidata/template_test.go
2601 views
1
// SPDX-FileCopyrightText: Copyright The Lima Authors
2
// SPDX-License-Identifier: Apache-2.0
3
4
package cidata
5
6
import (
7
"io"
8
"strings"
9
"testing"
10
11
"gotest.tools/v3/assert"
12
)
13
14
var defaultRemoveDefaults = false
15
16
func TestConfig(t *testing.T) {
17
args := &TemplateArgs{
18
Name: "default",
19
User: "foo",
20
UID: 501,
21
Comment: "Foo",
22
Home: "/home/foo.linux",
23
Shell: "/bin/bash",
24
SSHPubKeys: []string{
25
"ssh-rsa dummy [email protected]",
26
},
27
MountType: "reverse-sshfs",
28
}
29
config, err := ExecuteTemplateCloudConfig(args)
30
assert.NilError(t, err)
31
t.Log(string(config))
32
assert.Assert(t, !strings.Contains(string(config), "ca_certs:"))
33
assert.Assert(t, !strings.Contains(string(config), "mounts:"))
34
}
35
36
func TestConfigCACerts(t *testing.T) {
37
args := &TemplateArgs{
38
Name: "default",
39
User: "foo",
40
UID: 501,
41
Comment: "Foo",
42
Home: "/home/foo.linux",
43
Shell: "/bin/bash",
44
SSHPubKeys: []string{
45
"ssh-rsa dummy [email protected]",
46
},
47
MountType: "reverse-sshfs",
48
CACerts: CACerts{
49
RemoveDefaults: &defaultRemoveDefaults,
50
},
51
}
52
config, err := ExecuteTemplateCloudConfig(args)
53
assert.NilError(t, err)
54
t.Log(string(config))
55
assert.Assert(t, strings.Contains(string(config), "ca_certs:"))
56
}
57
58
var defaultMounts = []Mount{
59
{MountPoint: "/home/foo.linux", Tag: "mount0", Type: "virtiofs", Options: "ro"},
60
{MountPoint: "/tmp/lima", Tag: "mount1", Type: "virtiofs"},
61
}
62
63
func TestConfigMounts(t *testing.T) {
64
args := &TemplateArgs{
65
Name: "default",
66
User: "foo",
67
UID: 501,
68
Comment: "Foo",
69
Home: "/home/foo.linux",
70
Shell: "/bin/bash",
71
SSHPubKeys: []string{
72
"ssh-rsa dummy [email protected]",
73
},
74
MountType: "virtiofs", // override
75
Mounts: defaultMounts,
76
}
77
config, err := ExecuteTemplateCloudConfig(args)
78
assert.NilError(t, err)
79
t.Log(string(config))
80
assert.Assert(t, strings.Contains(string(config), "mounts:"))
81
}
82
83
func TestConfigMountsNone(t *testing.T) {
84
args := &TemplateArgs{
85
Name: "default",
86
User: "foo",
87
UID: 501,
88
Comment: "Foo",
89
Home: "/home/foo.linux",
90
Shell: "/bin/bash",
91
SSHPubKeys: []string{
92
"ssh-rsa dummy [email protected]",
93
},
94
MountType: "virtiofs", // override
95
Mounts: []Mount{},
96
}
97
config, err := ExecuteTemplateCloudConfig(args)
98
assert.NilError(t, err)
99
t.Log(string(config))
100
assert.Assert(t, !strings.Contains(string(config), "mounts:"))
101
}
102
103
func TestTemplate(t *testing.T) {
104
args := &TemplateArgs{
105
Name: "default",
106
User: "foo",
107
UID: 501,
108
Home: "/home/foo.linux",
109
Shell: "/bin/bash",
110
SSHPubKeys: []string{
111
"ssh-rsa dummy [email protected]",
112
},
113
Mounts: []Mount{
114
{MountPoint: "/Users/dummy"},
115
{MountPoint: "/Users/dummy/lima"},
116
},
117
MountType: "reverse-sshfs",
118
CACerts: CACerts{
119
RemoveDefaults: &defaultRemoveDefaults,
120
Trusted: []Cert{},
121
},
122
}
123
layout, err := ExecuteTemplateCIDataISO(args)
124
assert.NilError(t, err)
125
for _, f := range layout {
126
t.Logf("=== %q ===", f.Path)
127
b, err := io.ReadAll(f.Reader)
128
assert.NilError(t, err)
129
t.Log(string(b))
130
if f.Path == "user-data" {
131
// mounted later
132
assert.Assert(t, !strings.Contains(string(b), "mounts:"))
133
// ca_certs:
134
assert.Assert(t, !strings.Contains(string(b), "trusted:"))
135
}
136
}
137
}
138
139
func TestTemplate9p(t *testing.T) {
140
args := &TemplateArgs{
141
Name: "default",
142
User: "foo",
143
UID: 501,
144
Home: "/home/foo.linux",
145
Shell: "/bin/bash",
146
SSHPubKeys: []string{
147
"ssh-rsa dummy [email protected]",
148
},
149
Mounts: []Mount{
150
{Tag: "mount0", MountPoint: "/Users/dummy", Type: "9p", Options: "ro,trans=virtio"},
151
{Tag: "mount1", MountPoint: "/Users/dummy/lima", Type: "9p", Options: "rw,trans=virtio"},
152
},
153
MountType: "9p",
154
CACerts: CACerts{
155
RemoveDefaults: &defaultRemoveDefaults,
156
},
157
}
158
layout, err := ExecuteTemplateCIDataISO(args)
159
assert.NilError(t, err)
160
for _, f := range layout {
161
t.Logf("=== %q ===", f.Path)
162
b, err := io.ReadAll(f.Reader)
163
assert.NilError(t, err)
164
t.Log(string(b))
165
if f.Path == "user-data" {
166
// mounted at boot
167
assert.Assert(t, strings.Contains(string(b), "mounts:"))
168
}
169
}
170
}
171
172