github.com/haalcala/mattermost-server-change-repo@v0.0.0-20210713015153-16753fbeee5f/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_test 5 6 import ( 7 "io/ioutil" 8 "os" 9 "path/filepath" 10 "testing" 11 12 "github.com/stretchr/testify/require" 13 14 "github.com/mattermost/mattermost-server/v5/config" 15 ) 16 17 func TestNewStore(t *testing.T) { 18 if testing.Short() { 19 t.SkipNow() 20 } 21 sqlSettings := mainHelper.GetSQLSettings() 22 23 tempDir, err := ioutil.TempDir("", "TestNewStore") 24 require.NoError(t, err) 25 26 err = os.Chdir(tempDir) 27 require.NoError(t, err) 28 29 require.NoError(t, os.Mkdir(filepath.Join(tempDir, "config"), 0700)) 30 31 t.Run("database dsn", func(t *testing.T) { 32 ds, err := config.NewStore(getDsn(*sqlSettings.DriverName, *sqlSettings.DataSource), false, false, nil) 33 require.NoError(t, err) 34 ds.Close() 35 }) 36 37 t.Run("database dsn, watch ignored", func(t *testing.T) { 38 ds, err := config.NewStore(getDsn(*sqlSettings.DriverName, *sqlSettings.DataSource), true, false, nil) 39 require.NoError(t, err) 40 ds.Close() 41 }) 42 43 t.Run("file dsn", func(t *testing.T) { 44 fs, err := config.NewStore("config.json", false, false, nil) 45 require.NoError(t, err) 46 fs.Close() 47 }) 48 49 t.Run("file dsn, watch", func(t *testing.T) { 50 fs, err := config.NewStore("config.json", true, false, nil) 51 require.NoError(t, err) 52 fs.Close() 53 }) 54 } 55 56 func TestNewStoreReadOnly(t *testing.T) { 57 if testing.Short() { 58 t.SkipNow() 59 } 60 sqlSettings := mainHelper.GetSQLSettings() 61 62 tempDir, err := ioutil.TempDir("", "TestNewStore") 63 require.NoError(t, err) 64 65 err = os.Chdir(tempDir) 66 require.NoError(t, err) 67 68 require.NoError(t, os.Mkdir(filepath.Join(tempDir, "config"), 0700)) 69 70 t.Run("database dsn", func(t *testing.T) { 71 ds, err := config.NewStore(getDsn(*sqlSettings.DriverName, *sqlSettings.DataSource), false, true, nil) 72 require.NoError(t, err) 73 74 t.Run("Set", func(t *testing.T) { 75 cfg, err := ds.Set(emptyConfig) 76 require.Nil(t, cfg) 77 require.Equal(t, config.ErrReadOnlyStore, err) 78 }) 79 80 t.Run("SetFile", func(t *testing.T) { 81 err := ds.SetFile("config.json", []byte{}) 82 require.Equal(t, config.ErrReadOnlyStore, err) 83 }) 84 85 t.Run("RemoveFile", func(t *testing.T) { 86 err := ds.RemoveFile("config.json") 87 require.Equal(t, config.ErrReadOnlyStore, err) 88 }) 89 90 ds.Close() 91 }) 92 93 t.Run("file dsn", func(t *testing.T) { 94 fs, err := config.NewStore("config.json", false, true, nil) 95 require.NoError(t, err) 96 97 t.Run("Set", func(t *testing.T) { 98 cfg, err := fs.Set(emptyConfig) 99 require.Nil(t, cfg) 100 require.Equal(t, config.ErrReadOnlyStore, err) 101 }) 102 103 t.Run("SetFile", func(t *testing.T) { 104 err := fs.SetFile("config.json", []byte{}) 105 require.Equal(t, config.ErrReadOnlyStore, err) 106 }) 107 108 t.Run("RemoveFile", func(t *testing.T) { 109 err := fs.RemoveFile("config.json") 110 require.Equal(t, config.ErrReadOnlyStore, err) 111 }) 112 113 fs.Close() 114 }) 115 }