Skip to content

Commit ee6a467

Browse files
committed
Change tests to a table format
1 parent 5bc9fc6 commit ee6a467

File tree

1 file changed

+86
-74
lines changed

1 file changed

+86
-74
lines changed

runner/runner_test.go

Lines changed: 86 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -224,79 +224,91 @@ func TestRunner_CSVRow(t *testing.T) {
224224
}
225225

226226
func TestCreateNetworkpolicyInstance_AllowDenyFlags(t *testing.T) {
227-
// Test Allow flag blocks IPs outside allowed range
228-
options := &Options{}
229-
options.Allow = []string{"192.168.1.0/24"}
230-
231227
runner := &Runner{}
232-
np, err := runner.createNetworkpolicyInstance(options)
233-
require.Nil(t, err, "could not create networkpolicy instance")
234-
require.NotNil(t, np, "networkpolicy instance should not be nil")
235-
236-
// Should block IP outside allowed range
237-
allowed := np.Validate("8.8.8.8")
238-
require.False(t, allowed, "IP outside allowed range should be blocked")
239-
240-
// Should allow IP inside allowed range
241-
allowed = np.Validate("192.168.1.10")
242-
require.True(t, allowed, "IP inside allowed range should be allowed")
243-
244-
// Test Deny flag blocks IPs in denied range
245-
options = &Options{}
246-
options.Deny = []string{"127.0.0.0/8"}
247-
248-
np, err = runner.createNetworkpolicyInstance(options)
249-
require.Nil(t, err, "could not create networkpolicy instance")
250-
251-
// Should block IP in denied range
252-
allowed = np.Validate("127.0.0.1")
253-
require.False(t, allowed, "IP in denied range should be blocked")
254-
255-
// Should allow IP outside denied range
256-
allowed = np.Validate("8.8.8.8")
257-
require.True(t, allowed, "IP outside denied range should be allowed")
258-
259-
// Test combined Allow and Deny flags
260-
options = &Options{}
261-
options.Allow = []string{"192.168.0.0/16"} // Allow 192.168.x.x
262-
options.Deny = []string{"192.168.1.0/24"} // But deny 192.168.1.x
263-
264-
np, err = runner.createNetworkpolicyInstance(options)
265-
require.Nil(t, err, "could not create networkpolicy instance")
266-
267-
// Should block IP outside allowed range (even if not in deny list)
268-
allowed = np.Validate("10.0.0.1")
269-
require.False(t, allowed, "IP outside allowed range should be blocked")
270-
271-
// Should block IP in denied range (even if in allowed range)
272-
allowed = np.Validate("192.168.1.100")
273-
require.False(t, allowed, "IP in denied range should be blocked even if in allowed range")
274-
275-
// Should allow IP in allowed range but not in denied range
276-
allowed = np.Validate("192.168.2.50")
277-
require.True(t, allowed, "IP in allowed range but not in denied range should be allowed")
278-
279-
// Test with multiple Allow and Deny ranges
280-
options = &Options{}
281-
options.Allow = []string{"10.0.0.0/8", "172.16.0.0/12"} // Allow 10.x.x.x and 172.16-31.x.x
282-
options.Deny = []string{"10.1.0.0/16", "172.20.0.0/16"} // Deny 10.1.x.x and 172.20.x.x
283-
284-
np, err = runner.createNetworkpolicyInstance(options)
285-
require.Nil(t, err, "could not create networkpolicy instance")
286-
287-
// Test various scenarios
288-
allowed = np.Validate("10.0.1.1")
289-
require.True(t, allowed, "10.0.1.1 should be allowed (in allow range, not in deny)")
290-
291-
allowed = np.Validate("10.1.1.1")
292-
require.False(t, allowed, "10.1.1.1 should be blocked (in deny range)")
293-
294-
allowed = np.Validate("172.16.1.1")
295-
require.True(t, allowed, "172.16.1.1 should be allowed (in allow range, not in deny)")
296-
297-
allowed = np.Validate("172.20.1.1")
298-
require.False(t, allowed, "172.20.1.1 should be blocked (in deny range)")
299-
300-
allowed = np.Validate("192.168.1.1")
301-
require.False(t, allowed, "192.168.1.1 should be blocked (not in any allow range)")
228+
229+
tests := []struct {
230+
name string
231+
allow []string
232+
deny []string
233+
testCases []struct {
234+
ip string
235+
expected bool
236+
reason string
237+
}
238+
}{
239+
{
240+
name: "Allow flag blocks IPs outside allowed range",
241+
allow: []string{"192.168.1.0/24"},
242+
deny: nil,
243+
testCases: []struct {
244+
ip string
245+
expected bool
246+
reason string
247+
}{
248+
{"8.8.8.8", false, "IP outside allowed range should be blocked"},
249+
{"192.168.1.10", true, "IP inside allowed range should be allowed"},
250+
},
251+
},
252+
{
253+
name: "Deny flag blocks IPs in denied range",
254+
allow: nil,
255+
deny: []string{"127.0.0.0/8"},
256+
testCases: []struct {
257+
ip string
258+
expected bool
259+
reason string
260+
}{
261+
{"127.0.0.1", false, "IP in denied range should be blocked"},
262+
{"8.8.8.8", true, "IP outside denied range should be allowed"},
263+
},
264+
},
265+
{
266+
name: "Combined Allow and Deny flags",
267+
allow: []string{"192.168.0.0/16"},
268+
deny: []string{"192.168.1.0/24"},
269+
testCases: []struct {
270+
ip string
271+
expected bool
272+
reason string
273+
}{
274+
{"10.0.0.1", false, "IP outside allowed range should be blocked"},
275+
{"192.168.1.100", false, "IP in denied range should be blocked even if in allowed range"},
276+
{"192.168.2.50", true, "IP in allowed range but not in denied range should be allowed"},
277+
},
278+
},
279+
{
280+
name: "Multiple Allow and Deny ranges",
281+
allow: []string{"10.0.0.0/8", "172.16.0.0/12"},
282+
deny: []string{"10.1.0.0/16", "172.20.0.0/16"},
283+
testCases: []struct {
284+
ip string
285+
expected bool
286+
reason string
287+
}{
288+
{"10.0.1.1", true, "10.0.1.1 should be allowed (in allow range, not in deny)"},
289+
{"10.1.1.1", false, "10.1.1.1 should be blocked (in deny range)"},
290+
{"172.16.1.1", true, "172.16.1.1 should be allowed (in allow range, not in deny)"},
291+
{"172.20.1.1", false, "172.20.1.1 should be blocked (in deny range)"},
292+
{"192.168.1.1", false, "192.168.1.1 should be blocked (not in any allow range)"},
293+
},
294+
},
295+
}
296+
297+
for _, tc := range tests {
298+
t.Run(tc.name, func(t *testing.T) {
299+
options := &Options{
300+
Allow: tc.allow,
301+
Deny: tc.deny,
302+
}
303+
304+
np, err := runner.createNetworkpolicyInstance(options)
305+
require.Nil(t, err, "could not create networkpolicy instance")
306+
require.NotNil(t, np, "networkpolicy instance should not be nil")
307+
308+
for _, testCase := range tc.testCases {
309+
allowed := np.Validate(testCase.ip)
310+
require.Equal(t, testCase.expected, allowed, testCase.reason)
311+
}
312+
})
313+
}
302314
}

0 commit comments

Comments
 (0)