github.com/verrazzano/verrazzano@v1.7.0/tools/psr/backend/osenv/env_test.go (about) 1 // Copyright (c) 2022, Oracle and/or its affiliates. 2 // Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. 3 4 package osenv 5 6 import ( 7 "github.com/stretchr/testify/assert" 8 "testing" 9 ) 10 11 type fakeEnv struct { 12 data map[string]string 13 } 14 15 // TestEnv tests the Environment interface 16 // GIVEN an EnvVarDesc that is used to load data from the os Env vars 17 // 18 // WHEN the env var is defined or missing 19 // THEN ensure that LoadFromEnv and GetEnv work correctly 20 func TestEnv(t *testing.T) { 21 const ( 22 fooKey = "key" 23 fooVal = "val" 24 missingKey = "missingKey" 25 missingVal = "missingDefault" 26 ) 27 f := fakeEnv{data: map[string]string{fooKey: fooVal}} 28 gf := GetEnvFunc 29 GetEnvFunc = f.getEnv 30 defer func() { 31 GetEnvFunc = gf 32 }() 33 34 var tests = []struct { 35 name string 36 expectedVal string 37 expectErr bool 38 desc EnvVarDesc 39 }{ 40 {name: "valExists", expectedVal: fooVal, expectErr: false, 41 desc: EnvVarDesc{ 42 Key: fooKey, 43 DefaultVal: "", 44 Required: false, 45 }, 46 }, 47 {name: "valDefault", expectedVal: missingVal, expectErr: false, 48 desc: EnvVarDesc{ 49 Key: missingKey, 50 DefaultVal: missingVal, 51 Required: false, 52 }, 53 }, 54 {name: "valRequiredButMissing", expectedVal: "", expectErr: true, 55 desc: EnvVarDesc{ 56 Key: missingKey, 57 DefaultVal: "", 58 Required: true, 59 }, 60 }, 61 } 62 for _, test := range tests { 63 t.Run(test.name, func(t *testing.T) { 64 e := NewEnv() 65 err := e.LoadFromEnv([]EnvVarDesc{test.desc}) 66 if test.expectErr { 67 assert.Error(t, err) 68 } else { 69 assert.NoError(t, err) 70 } 71 v := e.GetEnv(test.desc.Key) 72 assert.Equal(t, test.expectedVal, v) 73 }) 74 } 75 } 76 77 func (e fakeEnv) getEnv(key string) string { 78 return e.data[key] 79 }