github.com/Redstoneguy129/cli@v0.0.0-20230211220159-15dca4e91917/internal/utils/config_test.go (about) 1 package utils 2 3 import ( 4 "testing" 5 6 "github.com/BurntSushi/toml" 7 "github.com/spf13/afero" 8 "github.com/stretchr/testify/assert" 9 ) 10 11 func TestConfigParsing(t *testing.T) { 12 t.Run("classic config file", func(t *testing.T) { 13 fsys := afero.NewMemMapFs() 14 assert.NoError(t, WriteConfig(fsys, false)) 15 assert.NoError(t, LoadConfigFS(fsys)) 16 }) 17 18 t.Run("config file with environment variables", func(t *testing.T) { 19 fsys := afero.NewMemMapFs() 20 assert.NoError(t, WriteConfig(fsys, true)) 21 22 t.Setenv("AZURE_CLIENT_ID", "hello") 23 t.Setenv("AZURE_SECRET", "this is cool") 24 assert.NoError(t, LoadConfigFS(fsys)) 25 26 assert.Equal(t, "hello", Config.Auth.External["azure"].ClientId) 27 assert.Equal(t, "this is cool", Config.Auth.External["azure"].Secret) 28 }) 29 30 t.Run("config file with environment variables fails when unset", func(t *testing.T) { 31 fsys := afero.NewMemMapFs() 32 assert.NoError(t, WriteConfig(fsys, true)) 33 assert.Error(t, LoadConfigFS(fsys)) 34 }) 35 } 36 37 func TestFileSizeLimitConfigParsing(t *testing.T) { 38 t.Run("test file size limit parsing number", func(t *testing.T) { 39 var testConfig config 40 _, err := toml.Decode(` 41 [storage] 42 file_size_limit = 5000000 43 `, &testConfig) 44 if assert.NoError(t, err) { 45 assert.Equal(t, sizeInBytes(5000000), testConfig.Storage.FileSizeLimit) 46 } 47 }) 48 49 t.Run("test file size limit parsing bytes unit", func(t *testing.T) { 50 var testConfig config 51 _, err := toml.Decode(` 52 [storage] 53 file_size_limit = "5MB" 54 `, &testConfig) 55 if assert.NoError(t, err) { 56 assert.Equal(t, sizeInBytes(5242880), testConfig.Storage.FileSizeLimit) 57 } 58 }) 59 60 t.Run("test file size limit parsing binary bytes unit", func(t *testing.T) { 61 var testConfig config 62 _, err := toml.Decode(` 63 [storage] 64 file_size_limit = "5MiB" 65 `, &testConfig) 66 if assert.NoError(t, err) { 67 assert.Equal(t, sizeInBytes(5242880), testConfig.Storage.FileSizeLimit) 68 } 69 }) 70 71 t.Run("test file size limit parsing string number", func(t *testing.T) { 72 var testConfig config 73 _, err := toml.Decode(` 74 [storage] 75 file_size_limit = "5000000" 76 `, &testConfig) 77 if assert.NoError(t, err) { 78 assert.Equal(t, sizeInBytes(5000000), testConfig.Storage.FileSizeLimit) 79 } 80 }) 81 82 t.Run("test file size limit parsing bad datatype", func(t *testing.T) { 83 var testConfig config 84 _, err := toml.Decode(` 85 [storage] 86 file_size_limit = [] 87 `, &testConfig) 88 assert.Error(t, err) 89 assert.Equal(t, sizeInBytes(0), testConfig.Storage.FileSizeLimit) 90 }) 91 92 t.Run("test file size limit parsing bad string data", func(t *testing.T) { 93 var testConfig config 94 _, err := toml.Decode(` 95 [storage] 96 file_size_limit = "foobar" 97 `, &testConfig) 98 assert.Error(t, err) 99 assert.Equal(t, sizeInBytes(0), testConfig.Storage.FileSizeLimit) 100 }) 101 }