@@ -2,6 +2,7 @@ package util
2
2
3
3
import (
4
4
"fmt"
5
+ "strings"
5
6
"testing"
6
7
7
8
"github.com/rancher/mapper/values"
@@ -37,33 +38,59 @@ func Test_parseCmdLineWithoutPrefix(t *testing.T) {
37
38
}
38
39
39
40
func Test_parseCmdLineWithNetworkInterface (t * testing.T ) {
40
-
41
- cmdline := `harvester.os.sshAuthorizedKeys=a harvester.install.management_interface.method=dhcp harvester.install.management_interface.bond_options.mode=balance-tlb harvester.install.management_interface.bond_options.miimon=100 harvester.os.sshAuthorizedKeys=b harvester.install.mode=create harvester.install.management_interface.interfaces="hwAddr: ab:cd:ef:gh" harvester.install.management_interface.interfaces="hwAddr: de:fg:hi:jk"`
42
-
43
- m , err := parseCmdLine (cmdline , "harvester" )
44
- if err != nil {
45
- t .Fatal (err )
41
+ type testcase struct {
42
+ cmdline string
43
+ expectation []interface {}
44
+ expectedError error
46
45
}
47
46
48
- want := []interface {}{
49
- map [string ]interface {}{
50
- "hwAddr" : "ab:cd:ef:gh" ,
47
+ testcases := []testcase {
48
+ {
49
+ cmdline : `harvester.os.sshAuthorizedKeys=a harvester.install.management_interface.method=dhcp harvester.install.management_interface.bond_options.mode=balance-tlb harvester.install.management_interface.bond_options.miimon=100 harvester.os.sshAuthorizedKeys=b harvester.install.mode=create harvester.install.management_interface.interfaces="hwAddr: ab:cd:ef:gh:ij:kl" harvester.install.management_interface.interfaces="hwAddr: de:fg:hi:jk:lm:no" harvester.install.management_interface.interfaces="ens3" harvester.install.management_interface.interfaces="name:ens5"` ,
50
+ expectation : []interface {}{
51
+ map [string ]interface {}{"hwAddr" : "ab:cd:ef:gh:ij:kl" },
52
+ map [string ]interface {}{"hwAddr" : "de:fg:hi:jk:lm:no" },
53
+ map [string ]interface {}{"name" : "ens3" },
54
+ map [string ]interface {}{"name" : "ens5" },
55
+ },
56
+ expectedError : nil ,
57
+ },
58
+ {
59
+ cmdline : `harvester.install.management_interface.interfaces="ens3"` ,
60
+ expectation : []interface {}{
61
+ map [string ]interface {}{"name" : "ens3" },
62
+ },
63
+ expectedError : nil ,
51
64
},
52
- map [string ]interface {}{
53
- "hwAddr" : "de:fg:hi:jk" ,
65
+ {
66
+ cmdline : `harvester.os.sshAuthorizedKeys=a harvester.install.management_interface.method=dhcp harvester.install.management_interface.bond_options.mode=balance-tlb harvester.install.management_interface.bond_options.miimon=100 harvester.os.sshAuthorizedKeys=b harvester.install.mode=create harvester.install.management_interface.interfaces="foo:bar:foobar"` ,
67
+ expectation : []interface {}{},
68
+ expectedError : fmt .Errorf ("could not parse interface details" ),
54
69
},
55
70
}
56
71
57
- have , ok := values .GetValue (m , "install" , "management_interface" , "interfaces" )
58
- if ! ok {
59
- t .Fatal (fmt .Errorf ("no network interfaces found" ))
60
- }
72
+ for _ , tc := range testcases {
73
+ m , err := parseCmdLine (tc .cmdline , "harvester" )
74
+ if err != nil {
75
+ if tc .expectedError != nil {
76
+ assert .True (t , strings .Contains (err .Error (), tc .expectedError .Error ()), "unexpected error" )
77
+ } else {
78
+ t .Fatal (err )
79
+ }
80
+ } else {
81
+ want := tc .expectation
82
+ have , ok := values .GetValue (m , "install" , "management_interface" , "interfaces" )
83
+ if ! ok {
84
+ t .Fatal (fmt .Errorf ("no network interfaces found" ))
85
+ }
61
86
62
- assert .Equal (t , want , have )
87
+ assert .Equal (t , want , have )
88
+ }
89
+ }
63
90
}
64
91
65
92
func Test_parseCmdLineWithSchemeVersion (t * testing.T ) {
66
- cmdline := `harvester.os.sshAuthorizedKeys=a harvester.install.management_interface.method=dhcp harvester.install.management_interface.bond_options.mode=balance-tlb harvester.install.management_interface.bond_options.miimon=100 harvester.os.sshAuthorizedKeys=b harvester.install.mode=create harvester.install.management_interface.interfaces="hwAddr: ab:cd:ef:gh" harvester.install.management_interface.interfaces="hwAddr: de:fg:hi:jk" harvester.scheme_version=1`
93
+ cmdline := `harvester.os.sshAuthorizedKeys=a harvester.install.management_interface.method=dhcp harvester.install.management_interface.bond_options.mode=balance-tlb harvester.install.management_interface.bond_options.miimon=100 harvester.os.sshAuthorizedKeys=b harvester.install.mode=create harvester.install.management_interface.interfaces="hwAddr: ab:cd:ef:gh:ij:kl " harvester.install.management_interface.interfaces="hwAddr: de:fg:hi:jk:lm:no " harvester.scheme_version=1`
67
94
68
95
m , err := parseCmdLine (cmdline , "harvester" )
69
96
assert .NoError (t , err , "expected no error while parsing arguments" )
0 commit comments