github.com/cloudreve/Cloudreve/v3@v3.0.0-20240224133659-3edb00a6484c/pkg/conf/conf_test.go (about)

     1  package conf
     2  
     3  import (
     4  	"io/ioutil"
     5  	"os"
     6  	"testing"
     7  
     8  	"github.com/cloudreve/Cloudreve/v3/pkg/util"
     9  	"github.com/stretchr/testify/assert"
    10  )
    11  
    12  // 测试Init日志路径错误
    13  func TestInitPanic(t *testing.T) {
    14  	asserts := assert.New(t)
    15  
    16  	// 日志路径不存在时
    17  	asserts.NotPanics(func() {
    18  		Init("not/exist/path/conf.ini")
    19  	})
    20  
    21  	asserts.True(util.Exists("not/exist/path/conf.ini"))
    22  
    23  }
    24  
    25  // TestInitDelimiterNotFound 日志路径存在但 Key 格式错误时
    26  func TestInitDelimiterNotFound(t *testing.T) {
    27  	asserts := assert.New(t)
    28  	testCase := `[Database]
    29  Type = mysql
    30  User = root
    31  Password233root
    32  Host = 127.0.0.1:3306
    33  Name = v3
    34  TablePrefix = v3_`
    35  	err := ioutil.WriteFile("testConf.ini", []byte(testCase), 0644)
    36  	defer func() { err = os.Remove("testConf.ini") }()
    37  	if err != nil {
    38  		panic(err)
    39  	}
    40  	asserts.Panics(func() {
    41  		Init("testConf.ini")
    42  	})
    43  }
    44  
    45  // TestInitNoPanic 日志路径存在且合法时
    46  func TestInitNoPanic(t *testing.T) {
    47  	asserts := assert.New(t)
    48  	testCase := `
    49  [System]
    50  Listen = 3000
    51  HashIDSalt = 1
    52  
    53  [Database]
    54  Type = mysql
    55  User = root
    56  Password = root
    57  Host = 127.0.0.1:3306
    58  Name = v3
    59  TablePrefix = v3_
    60  
    61  [OptionOverwrite]
    62  key=value
    63  `
    64  	err := ioutil.WriteFile("testConf.ini", []byte(testCase), 0644)
    65  	defer func() { err = os.Remove("testConf.ini") }()
    66  	if err != nil {
    67  		panic(err)
    68  	}
    69  	asserts.NotPanics(func() {
    70  		Init("testConf.ini")
    71  	})
    72  	asserts.Equal(OptionOverwrite["key"], "value")
    73  }
    74  
    75  func TestMapSection(t *testing.T) {
    76  	asserts := assert.New(t)
    77  
    78  	//正常情况
    79  	testCase := `
    80  [System]
    81  Listen = 3000
    82  HashIDSalt = 1
    83  
    84  [Database]
    85  Type = mysql
    86  User = root
    87  Password:root
    88  Host = 127.0.0.1:3306
    89  Name = v3
    90  TablePrefix = v3_`
    91  	err := ioutil.WriteFile("testConf.ini", []byte(testCase), 0644)
    92  	defer func() { err = os.Remove("testConf.ini") }()
    93  	if err != nil {
    94  		panic(err)
    95  	}
    96  	Init("testConf.ini")
    97  	err = mapSection("Database", DatabaseConfig)
    98  	asserts.NoError(err)
    99  
   100  }