bitbucket.org/Aishee/synsec@v0.0.0-20210414005726-236fc01a153d/pkg/csconfig/database_test.go (about)

     1  package csconfig
     2  
     3  import (
     4  	"fmt"
     5  	"strings"
     6  	"testing"
     7  
     8  	"github.com/stretchr/testify/assert"
     9  )
    10  
    11  func TestLoadDBConfig(t *testing.T) {
    12  	tests := []struct {
    13  		name           string
    14  		Input          *Config
    15  		expectedResult *DatabaseCfg
    16  		err            string
    17  	}{
    18  		{
    19  			name: "basic valid configuration",
    20  			Input: &Config{
    21  				DbConfig: &DatabaseCfg{
    22  					Type:   "sqlite",
    23  					DbPath: "./tests/test.db",
    24  				},
    25  				Cscli: &CscliCfg{},
    26  				API: &APICfg{
    27  					Server: &LocalApiServerCfg{},
    28  				},
    29  			},
    30  			expectedResult: &DatabaseCfg{
    31  				Type:   "sqlite",
    32  				DbPath: "./tests/test.db",
    33  			},
    34  		},
    35  		{
    36  			name:           "no configuration path",
    37  			Input:          &Config{},
    38  			expectedResult: nil,
    39  		},
    40  	}
    41  
    42  	for idx, test := range tests {
    43  		err := test.Input.LoadDBConfig()
    44  		if err == nil && test.err != "" {
    45  			fmt.Printf("TEST '%s': NOK\n", test.name)
    46  			t.Fatalf("%d/%d expected error, didn't get it", idx, len(tests))
    47  		} else if test.err != "" {
    48  			if !strings.HasPrefix(fmt.Sprintf("%s", err), test.err) {
    49  				fmt.Printf("TEST '%s': NOK\n", test.name)
    50  				t.Fatalf("%d/%d expected '%s' got '%s'", idx, len(tests),
    51  					test.err,
    52  					fmt.Sprintf("%s", err))
    53  			}
    54  		}
    55  		isOk := assert.Equal(t, test.expectedResult, test.Input.DbConfig)
    56  		if !isOk {
    57  			t.Fatalf("TEST '%s': NOK", test.name)
    58  		} else {
    59  			fmt.Printf("TEST '%s': OK\n", test.name)
    60  		}
    61  	}
    62  }