github.com/kubri/kubri@v0.5.1-0.20240317001612-bda2aaef967e/pkg/secret/secret_test.go (about) 1 package secret_test 2 3 import ( 4 "bytes" 5 "errors" 6 "os" 7 "path/filepath" 8 "testing" 9 10 "github.com/kubri/kubri/pkg/secret" 11 ) 12 13 func TestSecrets(t *testing.T) { 14 tests := []string{"ConfigDir", "Path", "SecretPath"} 15 16 key := "my_secret" 17 data := []byte("secret data") 18 19 dir := t.TempDir() 20 for _, v := range []string{"XDG_CONFIG_HOME", "HOME", "AppData"} { 21 t.Setenv(v, dir) // Override config dir. 22 } 23 os.MkdirAll(filepath.Join(dir, "Library", "Application Support"), 0o755) // Create MacOS/iOS config dir. 24 25 for _, test := range tests { 26 t.Run(test, func(t *testing.T) { 27 switch test { 28 case "ConfigDir": 29 t.Setenv("KUBRI_PATH", "") 30 case "Path": 31 t.Setenv("KUBRI_PATH", dir) 32 case "SecretPath": 33 t.Setenv("KUBRI_MY_SECRET_PATH", filepath.Join(dir, "my-secret-file")) 34 } 35 36 if _, err := secret.Get(key); err == nil { 37 t.Fatalf("want error %q got %q", secret.ErrKeyNotFound, err) 38 } 39 40 if err := secret.Delete(key); err == nil { 41 t.Fatalf("want error %q got %q", secret.ErrKeyNotFound, err) 42 } 43 44 if err := secret.Put(key, data); err != nil { 45 t.Fatal(err) 46 } 47 48 if err := secret.Put(key, data); !errors.Is(err, secret.ErrKeyExists) { 49 t.Fatalf("want error %q got %q", secret.ErrKeyExists, err) 50 } 51 52 got, err := secret.Get(key) 53 if err != nil { 54 t.Fatal(err) 55 } 56 if !bytes.Equal(data, got) { 57 t.Fatal("should be equal") 58 } 59 60 if err := secret.Delete(key); err != nil { 61 t.Fatal(err) 62 } 63 }) 64 } 65 66 t.Run("Env", func(t *testing.T) { 67 t.Setenv("KUBRI_MY_SECRET", string(data)) 68 69 got, err := secret.Get(key) 70 if err != nil { 71 t.Fatal(err) 72 } 73 if !bytes.Equal(data, got) { 74 t.Fatal("should be equal") 75 } 76 77 if err = secret.Put(key, data); !errors.Is(err, secret.ErrEnvironment) { 78 t.Fatalf("want error %q got %q", secret.ErrEnvironment, err) 79 } 80 81 if err = secret.Delete(key); !errors.Is(err, secret.ErrEnvironment) { 82 t.Fatalf("want error %q got %q", secret.ErrEnvironment, err) 83 } 84 }) 85 }