diff --git a/internal/csi-addons/networkfence/fencing_test.go b/internal/csi-addons/networkfence/fencing_test.go index c0994714fae5..20b2a3d0ce0b 100644 --- a/internal/csi-addons/networkfence/fencing_test.go +++ b/internal/csi-addons/networkfence/fencing_test.go @@ -169,3 +169,60 @@ func TestFetchIPfromEntry(t *testing.T) { }) } } + +func TestParseBlocklistEntries(t *testing.T) { + t.Parallel() + + tests := []struct { + output string + expected []string + expectedSize int + }{ + { + output: `listed 3 entries + 127.0.0.1:0/3710147553 2018-03-19 11:32:24.716146 + 192.168.0.1:0/1234567890 2022-08-23 14:12:34.567890`, + expected: []string{ + "127.0.0.1:0/3710147553 2018-03-19 11:32:24.716146", + "192.168.0.1:0/1234567890 2022-08-23 14:12:34.567890", + }, + expectedSize: 2, + }, + { + output: "listed 0 entries\n", + expected: []string{}, + expectedSize: 0, + }, + { + output: `listed 1 entries + 192.168.0.1:0/1234567890 2022-08-23 14:12:34.567890`, + expected: []string{ + "192.168.0.1:0/1234567890 2022-08-23 14:12:34.567890", + }, + expectedSize: 1, + }, + { + output: "", + expected: []string{}, + expectedSize: 0, + }, + } + + for _, tt := range tests { + ts := tt + t.Run(ts.output, func(t *testing.T) { + t.Parallel() + entries := parseBlocklistEntries(ts.output) + + if len(entries) != ts.expectedSize { + t.Errorf("expected length %d but got %d", ts.expectedSize, len(entries)) + } + + for i, entry := range entries { + if entry != ts.expected[i] { + t.Errorf("expected entry %s but got %s", ts.expected[i], entry) + } + } + }) + } +}