github.com/mattermost/mattermost-server/v5@v5.39.3/config/store_test.go (about) 1 // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. 2 // See LICENSE.txt for license information. 3 4 package config 5 6 import ( 7 "io/ioutil" 8 "os" 9 "path/filepath" 10 "testing" 11 12 "github.com/stretchr/testify/require" 13 ) 14 15 func TestNewStoreFromDSN(t *testing.T) { 16 if testing.Short() { 17 t.SkipNow() 18 } 19 sqlSettings := mainHelper.GetSQLSettings() 20 21 tempDir, err := ioutil.TempDir("", "TestNewStore") 22 require.NoError(t, err) 23 24 err = os.Chdir(tempDir) 25 require.NoError(t, err) 26 27 require.NoError(t, os.Mkdir(filepath.Join(tempDir, "config"), 0700)) 28 29 t.Run("database dsn", func(t *testing.T) { 30 ds, err := NewStoreFromDSN(getDsn(*sqlSettings.DriverName, *sqlSettings.DataSource), false, nil) 31 require.NoError(t, err) 32 ds.Close() 33 }) 34 35 t.Run("file dsn", func(t *testing.T) { 36 fs, err := NewStoreFromDSN("config.json", false, nil) 37 require.NoError(t, err) 38 fs.Close() 39 }) 40 } 41 42 func TestNewStoreReadOnly(t *testing.T) { 43 if testing.Short() { 44 t.SkipNow() 45 } 46 sqlSettings := mainHelper.GetSQLSettings() 47 48 tempDir, err := ioutil.TempDir("", "TestNewStore") 49 require.NoError(t, err) 50 51 err = os.Chdir(tempDir) 52 require.NoError(t, err) 53 54 require.NoError(t, os.Mkdir(filepath.Join(tempDir, "config"), 0700)) 55 56 t.Run("database dsn", func(t *testing.T) { 57 ds, err := NewStoreFromDSN(getDsn(*sqlSettings.DriverName, *sqlSettings.DataSource), true, nil) 58 require.NoError(t, err) 59 60 t.Run("Set", func(t *testing.T) { 61 oldCfg, newCfg, err := ds.Set(emptyConfig) 62 require.Nil(t, oldCfg) 63 require.Nil(t, newCfg) 64 require.Equal(t, ErrReadOnlyStore, err) 65 }) 66 67 t.Run("SetFile", func(t *testing.T) { 68 err := ds.SetFile("config.json", []byte{}) 69 require.Equal(t, ErrReadOnlyStore, err) 70 }) 71 72 t.Run("RemoveFile", func(t *testing.T) { 73 err := ds.RemoveFile("config.json") 74 require.Equal(t, ErrReadOnlyStore, err) 75 }) 76 77 ds.Close() 78 }) 79 80 t.Run("file dsn", func(t *testing.T) { 81 fs, err := NewStoreFromDSN("config.json", true, nil) 82 require.NoError(t, err) 83 84 t.Run("Set", func(t *testing.T) { 85 oldCfg, newCfg, err := fs.Set(emptyConfig) 86 require.Nil(t, oldCfg) 87 require.Nil(t, newCfg) 88 require.Equal(t, ErrReadOnlyStore, err) 89 }) 90 91 t.Run("SetFile", func(t *testing.T) { 92 err := fs.SetFile("config.json", []byte{}) 93 require.Equal(t, ErrReadOnlyStore, err) 94 }) 95 96 t.Run("RemoveFile", func(t *testing.T) { 97 err := fs.RemoveFile("config.json") 98 require.Equal(t, ErrReadOnlyStore, err) 99 }) 100 101 fs.Close() 102 }) 103 }