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  }