github.com/netdata/go.d.plugin@v0.58.1/modules/unbound/config/parse_test.go (about)

     1  // SPDX-License-Identifier: GPL-3.0-or-later
     2  
     3  package config
     4  
     5  import (
     6  	"fmt"
     7  	"testing"
     8  
     9  	"github.com/stretchr/testify/assert"
    10  )
    11  
    12  func TestParse(t *testing.T) {
    13  	tests := map[string]struct {
    14  		path    string
    15  		wantCfg UnboundConfig
    16  		wantErr bool
    17  	}{
    18  		"valid include": {
    19  			path: "testdata/valid_include.conf",
    20  			wantCfg: UnboundConfig{
    21  				cumulative: "yes",
    22  				enable:     "yes",
    23  				iface:      "10.0.0.1",
    24  				port:       "8955",
    25  				useCert:    "yes",
    26  				keyFile:    "/etc/unbound/unbound_control_2.key",
    27  				certFile:   "/etc/unbound/unbound_control_2.pem",
    28  			},
    29  		},
    30  		"valid include-toplevel": {
    31  			path: "testdata/valid_include_toplevel.conf",
    32  			wantCfg: UnboundConfig{
    33  				cumulative: "yes",
    34  				enable:     "yes",
    35  				iface:      "10.0.0.1",
    36  				port:       "8955",
    37  				useCert:    "yes",
    38  				keyFile:    "/etc/unbound/unbound_control_2.key",
    39  				certFile:   "/etc/unbound/unbound_control_2.pem",
    40  			},
    41  		},
    42  		"valid glob include": {
    43  			path: "testdata/valid_glob.conf",
    44  			wantCfg: UnboundConfig{
    45  				cumulative: "yes",
    46  				enable:     "yes",
    47  				iface:      "10.0.0.1",
    48  				port:       "8955",
    49  				useCert:    "yes",
    50  				keyFile:    "/etc/unbound/unbound_control_2.key",
    51  				certFile:   "/etc/unbound/unbound_control_2.pem",
    52  			},
    53  		},
    54  		"non existent glob include": {
    55  			path: "testdata/non_existent_glob_include.conf",
    56  			wantCfg: UnboundConfig{
    57  				cumulative: "yes",
    58  				enable:     "yes",
    59  				iface:      "10.0.0.1",
    60  				port:       "8953",
    61  				useCert:    "yes",
    62  				keyFile:    "/etc/unbound/unbound_control.key",
    63  				certFile:   "/etc/unbound/unbound_control.pem",
    64  			},
    65  		},
    66  		"infinite recursion include": {
    67  			path:    "testdata/infinite_rec.conf",
    68  			wantErr: true,
    69  		},
    70  		"non existent include": {
    71  			path:    "testdata/non_existent_include.conf",
    72  			wantErr: true,
    73  		},
    74  		"non existent path": {
    75  			path:    "testdata/non_existent_path.conf",
    76  			wantErr: true,
    77  		},
    78  	}
    79  
    80  	for name, test := range tests {
    81  		name = fmt.Sprintf("%s (%s)", name, test.path)
    82  		t.Run(name, func(t *testing.T) {
    83  			cfg, err := Parse(test.path)
    84  
    85  			if test.wantErr {
    86  				assert.Error(t, err)
    87  			} else {
    88  				assert.NoError(t, err)
    89  				assert.Equal(t, test.wantCfg, *cfg)
    90  			}
    91  		})
    92  	}
    93  }