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