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  }