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  }