1
1
package nodes
2
2
3
3
import (
4
+ "errors"
4
5
"fmt"
5
6
"os"
6
7
"path/filepath"
@@ -13,54 +14,143 @@ import (
13
14
)
14
15
15
16
func TestGenerateConfigs (t * testing.T ) {
17
+ defCfg := "default config"
18
+ oldCfg := "old config"
19
+ newCfg := "new config"
20
+
16
21
tests := map [string ]struct {
17
- node * DefaultNode
18
- err error
19
- exists bool
20
- out string
22
+ cfg * types.NodeConfig
23
+ err error
24
+ preExists bool
25
+ postExists bool
26
+ template string
27
+ out string
21
28
}{
22
- "suppress-true" : {
23
- node : & DefaultNode {
24
- Cfg : & types.NodeConfig {
25
- SuppressStartupConfig : true ,
26
- ShortName : "suppress" ,
27
- },
29
+ "suppress-true-first-start" : {
30
+ cfg : & types.NodeConfig {
31
+ SuppressStartupConfig : true ,
28
32
},
29
- err : nil ,
30
- exists : false ,
31
- out : "" ,
33
+ err : nil ,
34
+ preExists : false ,
35
+ postExists : false ,
36
+ template : defCfg ,
32
37
},
33
- "suppress-false" : {
34
- node : & DefaultNode {
35
- Cfg : & types.NodeConfig {
36
- SuppressStartupConfig : false ,
37
- ShortName : "configure" ,
38
- },
38
+ "suppress-true-existing-lab" : {
39
+ cfg : & types.NodeConfig {
40
+ SuppressStartupConfig : true ,
41
+ },
42
+ err : nil ,
43
+ preExists : true ,
44
+ postExists : true ,
45
+ out : oldCfg ,
46
+ template : defCfg ,
47
+ },
48
+ "suppress-false-first-start" : {
49
+ cfg : & types.NodeConfig {
50
+ SuppressStartupConfig : false ,
51
+ },
52
+ err : nil ,
53
+ preExists : false ,
54
+ postExists : true ,
55
+ out : defCfg ,
56
+ template : defCfg ,
57
+ },
58
+ "suppress-false-existing-lab" : {
59
+ cfg : & types.NodeConfig {
60
+ SuppressStartupConfig : false ,
61
+ },
62
+ err : nil ,
63
+ preExists : true ,
64
+ postExists : true ,
65
+ out : oldCfg ,
66
+ template : defCfg ,
67
+ },
68
+ "startup-config-first-start" : {
69
+ cfg : & types.NodeConfig {
70
+ StartupConfig : "other" ,
71
+ },
72
+ err : nil ,
73
+ preExists : false ,
74
+ postExists : true ,
75
+ out : newCfg ,
76
+ template : newCfg ,
77
+ },
78
+ "startup-config-existing-lab" : {
79
+ cfg : & types.NodeConfig {
80
+ StartupConfig : "other" ,
39
81
},
40
- err : nil ,
41
- exists : true ,
42
- out : "foo" ,
82
+ err : nil ,
83
+ preExists : true ,
84
+ postExists : true ,
85
+ out : oldCfg ,
86
+ template : newCfg ,
87
+ },
88
+ "enforce-startup-config-first-start" : {
89
+ cfg : & types.NodeConfig {
90
+ StartupConfig : "other" ,
91
+ EnforceStartupConfig : true ,
92
+ },
93
+ err : nil ,
94
+ preExists : false ,
95
+ postExists : true ,
96
+ out : newCfg ,
97
+ template : newCfg ,
98
+ },
99
+ "enforce-startup-config-existing-lab" : {
100
+ cfg : & types.NodeConfig {
101
+ StartupConfig : "other" ,
102
+ EnforceStartupConfig : true ,
103
+ },
104
+ err : nil ,
105
+ preExists : true ,
106
+ postExists : true ,
107
+ out : newCfg ,
108
+ template : newCfg ,
109
+ },
110
+ "enforce-startup-config-no-startup" : {
111
+ cfg : & types.NodeConfig {
112
+ EnforceStartupConfig : true ,
113
+ },
114
+ err : ErrNoStartupConfig ,
115
+ },
116
+ "enforce-and-suppress-startup-config" : {
117
+ cfg : & types.NodeConfig {
118
+ EnforceStartupConfig : true ,
119
+ SuppressStartupConfig : true ,
120
+ },
121
+ err : ErrIncompatibleOptions ,
43
122
},
44
123
}
45
124
for name , tc := range tests {
46
125
t .Run (name , func (tt * testing.T ) {
126
+ node := & DefaultNode {Cfg : tc .cfg }
47
127
dstFolder := tt .TempDir ()
48
128
dstFile := filepath .Join (dstFolder , "config" )
49
- err := tc .node .GenerateConfig (dstFile , "foo" )
50
- if err != tc .err {
51
- t .Errorf ("got %v, wanted %v" , err , tc .err )
129
+
130
+ if tc .preExists {
131
+ err := os .WriteFile (dstFile , []byte (oldCfg ), 0666 )
132
+ if err != nil {
133
+ tt .Errorf ("Could not write existing config: %v" , err )
134
+ }
52
135
}
53
- if tc .exists {
136
+
137
+ err := node .GenerateConfig (dstFile , tc .template )
138
+ if tc .err != nil {
139
+ if ! errors .Is (err , tc .err ) {
140
+ tt .Errorf ("got: %v, wanted: %v" , err , tc .err )
141
+ }
142
+ }
143
+ if tc .postExists {
54
144
cnt , err := os .ReadFile (dstFile )
55
145
if err != nil {
56
- t .Fatal (err )
146
+ tt .Fatal (err )
57
147
}
58
148
if string (cnt ) != tc .out {
59
- t .Errorf ("got %v, wanted %v" , string (cnt ), tc .out )
149
+ tt .Errorf ("got %v, wanted %v" , string (cnt ), tc .out )
60
150
}
61
151
} else {
62
152
if _ , err := os .Stat (dstFile ); err == nil {
63
- t .Errorf ("config file created" )
153
+ tt .Errorf ("config file created" )
64
154
}
65
155
}
66
156
})
@@ -235,7 +325,7 @@ func TestInterfacesAliases(t *testing.T) { // skipcq: GO-R1005
235
325
}
236
326
237
327
for name , tc := range tests {
238
- t .Run (name , func (tt * testing.T ) {
328
+ t .Run (name , func (* testing.T ) {
239
329
foundError := false
240
330
tc .node .OverwriteNode = tc .node
241
331
tc .node .InterfaceMappedPrefix = "eth"
0 commit comments