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.Equal(cfg.InitialAdminKeys, []string{
23 "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINMwLvyV3ouVrTysUYGoJdl5Vgn5BACKov+n9PlzfPwH a@b",
24 "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFxIobhwtfdwN7m1TFt9wx3PsfvcAkISGPxmbmbauST8 a@b",
25 })
26}
27
28func TestMergeInitAdminKeys(t *testing.T) {
29 is := is.New(t)
30 is.NoErr(os.Setenv("SOFT_SERVE_INITIAL_ADMIN_KEYS", "testdata/k1.pub"))
31 t.Cleanup(func() { is.NoErr(os.Unsetenv("SOFT_SERVE_INITIAL_ADMIN_KEYS")) })
32 bts, err := yaml.Marshal(&Config{
33 InitialAdminKeys: []string{"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFxIobhwtfdwN7m1TFt9wx3PsfvcAkISGPxmbmbauST8 a@b"},
34 })
35 is.NoErr(err)
36 fp := filepath.Join(t.TempDir(), "config.yaml")
37 err = os.WriteFile(fp, bts, 0644)
38 is.NoErr(err)
39 cfg, err := ParseConfig(fp)
40 is.NoErr(err)
41 is.Equal(cfg.InitialAdminKeys, []string{
42 "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINMwLvyV3ouVrTysUYGoJdl5Vgn5BACKov+n9PlzfPwH a@b",
43 "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFxIobhwtfdwN7m1TFt9wx3PsfvcAkISGPxmbmbauST8 a@b",
44 })
45}
46
47func TestValidateInitAdminKeys(t *testing.T) {
48 is := is.New(t)
49 bts, err := yaml.Marshal(&Config{
50 InitialAdminKeys: []string{
51 "testdata/k1.pub",
52 "abc",
53 "",
54 },
55 })
56 is.NoErr(err)
57 fp := filepath.Join(t.TempDir(), "config.yaml")
58 err = os.WriteFile(fp, bts, 0644)
59 is.NoErr(err)
60 cfg, err := ParseConfig(fp)
61 is.NoErr(err)
62 is.Equal(cfg.InitialAdminKeys, []string{
63 "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINMwLvyV3ouVrTysUYGoJdl5Vgn5BACKov+n9PlzfPwH a@b",
64 })
65}