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

     1  package csconfig
     2  
     3  import (
     4  	"fmt"
     5  	"path/filepath"
     6  	"strings"
     7  	"testing"
     8  
     9  	"github.com/stretchr/testify/assert"
    10  )
    11  
    12  func TestLoadCCSCLI(t *testing.T) {
    13  	hubFullPath, err := filepath.Abs("./hub")
    14  	if err != nil {
    15  		t.Fatalf(err.Error())
    16  	}
    17  
    18  	dataFullPath, err := filepath.Abs("./data")
    19  	if err != nil {
    20  		t.Fatalf(err.Error())
    21  	}
    22  
    23  	configDirFullPath, err := filepath.Abs("./tests")
    24  	if err != nil {
    25  		t.Fatalf(err.Error())
    26  	}
    27  
    28  	hubIndexFileFullPath, err := filepath.Abs("./hub/.index.json")
    29  	if err != nil {
    30  		t.Fatalf(err.Error())
    31  	}
    32  
    33  	tests := []struct {
    34  		name           string
    35  		Input          *Config
    36  		expectedResult *CscliCfg
    37  		err            string
    38  	}{
    39  		{
    40  			name: "basic valid configuration",
    41  			Input: &Config{
    42  				ConfigPaths: &ConfigurationPaths{
    43  					ConfigDir:    "./tests",
    44  					DataDir:      "./data",
    45  					HubDir:       "./hub",
    46  					HubIndexFile: "./hub/.index.json",
    47  				},
    48  			},
    49  			expectedResult: &CscliCfg{
    50  				ConfigDir:    configDirFullPath,
    51  				DataDir:      dataFullPath,
    52  				HubDir:       hubFullPath,
    53  				HubIndexFile: hubIndexFileFullPath,
    54  			},
    55  		},
    56  		{
    57  			name:           "no configuration path",
    58  			Input:          &Config{},
    59  			expectedResult: &CscliCfg{},
    60  		},
    61  	}
    62  
    63  	for idx, test := range tests {
    64  		err := test.Input.LoadCCSCLI()
    65  		if err == nil && test.err != "" {
    66  			fmt.Printf("TEST '%s': NOK\n", test.name)
    67  			t.Fatalf("%d/%d expected error, didn't get it", idx, len(tests))
    68  		} else if test.err != "" {
    69  			if !strings.HasPrefix(fmt.Sprintf("%s", err), test.err) {
    70  				fmt.Printf("TEST '%s': NOK\n", test.name)
    71  				t.Fatalf("%d/%d expected '%s' got '%s'", idx, len(tests),
    72  					test.err,
    73  					fmt.Sprintf("%s", err))
    74  			}
    75  		}
    76  
    77  		isOk := assert.Equal(t, test.expectedResult, test.Input.Cscli)
    78  		if !isOk {
    79  			t.Fatalf("TEST '%s': NOK", test.name)
    80  		} else {
    81  			fmt.Printf("TEST '%s': OK\n", test.name)
    82  		}
    83  	}
    84  }