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