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, err := NewConfig("")
22 is.NoErr(err)
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, err := NewConfig(fp)
41 is.NoErr(err)
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, err := NewConfig(fp)
62 is.NoErr(err)
63 is.Equal(cfg.InitialAdminKeys, []string{
64 "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINMwLvyV3ouVrTysUYGoJdl5Vgn5BACKov+n9PlzfPwH",
65 })
66}