config_test.go

 1package config
 2
 3import (
 4	"os"
 5	"path/filepath"
 6	"testing"
 7
 8	"github.com/matryer/is"
 9	"gopkg.in/yaml.v3"
10)
11
12func TestParseMultipleKeys(t *testing.T) {
13	is := is.New(t)
14	td := t.TempDir()
15	is.NoErr(os.Setenv("SOFT_SERVE_INITIAL_ADMIN_KEYS", "testdata/k1.pub\nssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFxIobhwtfdwN7m1TFt9wx3PsfvcAkISGPxmbmbauST8 a@b"))
16	is.NoErr(os.Setenv("SOFT_SERVE_DATA_PATH", td))
17	t.Cleanup(func() {
18		is.NoErr(os.Unsetenv("SOFT_SERVE_INITIAL_ADMIN_KEYS"))
19		is.NoErr(os.Unsetenv("SOFT_SERVE_DATA_PATH"))
20	})
21	cfg := DefaultConfig()
22	is.NoErr(parseConfig(cfg, ""))
23	is.Equal(cfg.InitialAdminKeys, []string{
24		"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINMwLvyV3ouVrTysUYGoJdl5Vgn5BACKov+n9PlzfPwH",
25		"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFxIobhwtfdwN7m1TFt9wx3PsfvcAkISGPxmbmbauST8",
26	})
27}
28
29func TestMergeInitAdminKeys(t *testing.T) {
30	is := is.New(t)
31	is.NoErr(os.Setenv("SOFT_SERVE_INITIAL_ADMIN_KEYS", "testdata/k1.pub"))
32	t.Cleanup(func() { is.NoErr(os.Unsetenv("SOFT_SERVE_INITIAL_ADMIN_KEYS")) })
33	bts, err := yaml.Marshal(&Config{
34		InitialAdminKeys: []string{"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFxIobhwtfdwN7m1TFt9wx3PsfvcAkISGPxmbmbauST8 a@b"},
35	})
36	is.NoErr(err)
37	fp := filepath.Join(t.TempDir(), "config.yaml")
38	err = os.WriteFile(fp, bts, 0o644)
39	is.NoErr(err)
40	cfg := DefaultConfig()
41	is.NoErr(parseConfig(cfg, fp))
42	is.Equal(cfg.InitialAdminKeys, []string{
43		"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINMwLvyV3ouVrTysUYGoJdl5Vgn5BACKov+n9PlzfPwH",
44		"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFxIobhwtfdwN7m1TFt9wx3PsfvcAkISGPxmbmbauST8",
45	})
46}
47
48func TestValidateInitAdminKeys(t *testing.T) {
49	is := is.New(t)
50	bts, err := yaml.Marshal(&Config{
51		InitialAdminKeys: []string{
52			"testdata/k1.pub",
53			"abc",
54			"",
55		},
56	})
57	is.NoErr(err)
58	fp := filepath.Join(t.TempDir(), "config.yaml")
59	err = os.WriteFile(fp, bts, 0o644)
60	is.NoErr(err)
61	cfg := DefaultConfig()
62	is.NoErr(parseConfig(cfg, fp))
63	is.Equal(cfg.InitialAdminKeys, []string{
64		"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINMwLvyV3ouVrTysUYGoJdl5Vgn5BACKov+n9PlzfPwH",
65	})
66}