github.com/mattermost/mattermost-server/v6@v6.7.2/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, err2 := NewStoreFromDSN(getDsn(*sqlSettings.DriverName, *sqlSettings.DataSource), false, nil, false) 31 require.NoError(t, err2) 32 ds.Close() 33 }) 34 35 t.Run("file dsn", func(t *testing.T) { 36 defer os.Remove("config_test.json") 37 fs, err := NewStoreFromDSN("config_test.json", false, nil, true) 38 require.NoError(t, err) 39 fs.Close() 40 }) 41 } 42 43 func TestNewStoreReadOnly(t *testing.T) { 44 if testing.Short() { 45 t.SkipNow() 46 } 47 sqlSettings := mainHelper.GetSQLSettings() 48 49 tempDir, tErr := ioutil.TempDir("", "TestNewStore") 50 require.NoError(t, tErr) 51 52 tErr = os.Chdir(tempDir) 53 require.NoError(t, tErr) 54 55 require.NoError(t, os.Mkdir(filepath.Join(tempDir, "config"), 0700)) 56 57 t.Run("database dsn", func(t *testing.T) { 58 ds, err := NewStoreFromDSN(getDsn(*sqlSettings.DriverName, *sqlSettings.DataSource), true, nil, false) 59 require.NoError(t, err) 60 61 t.Run("Set", func(t *testing.T) { 62 oldCfg, newCfg, err2 := ds.Set(emptyConfig) 63 require.Nil(t, oldCfg) 64 require.Nil(t, newCfg) 65 require.Equal(t, ErrReadOnlyStore, err2) 66 }) 67 68 t.Run("SetFile", func(t *testing.T) { 69 err := ds.SetFile("config.json", []byte{}) 70 require.Equal(t, ErrReadOnlyStore, err) 71 }) 72 73 t.Run("RemoveFile", func(t *testing.T) { 74 err := ds.RemoveFile("config.json") 75 require.Equal(t, ErrReadOnlyStore, err) 76 }) 77 78 ds.Close() 79 }) 80 81 t.Run("file dsn", func(t *testing.T) { 82 fs, err := NewStoreFromDSN("config_test.json", true, nil, true) 83 require.NoError(t, err) 84 85 t.Run("Set", func(t *testing.T) { 86 oldCfg, newCfg, err := fs.Set(emptyConfig) 87 require.Nil(t, oldCfg) 88 require.Nil(t, newCfg) 89 require.Equal(t, ErrReadOnlyStore, err) 90 }) 91 92 t.Run("SetFile", func(t *testing.T) { 93 err := fs.SetFile("config_test.json", []byte{}) 94 require.Equal(t, ErrReadOnlyStore, err) 95 }) 96 97 t.Run("RemoveFile", func(t *testing.T) { 98 err := fs.RemoveFile("config_test.json") 99 require.Equal(t, ErrReadOnlyStore, err) 100 }) 101 102 fs.Close() 103 }) 104 }