master
go 76 lines 1.88 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 package parity
4
5 import (
6 "strings"
7 "testing"
8
9 "github.com/stretchr/testify/require"
10 )
11
12 func TestParseWalk(t *testing.T) {
13 input := strings.Join([]string{
14 `.1.3.6.1.2.1.1.5.0 = STRING: "test-host"`,
15 `.1.3.6.1.2.1.1.1.0 = STRING: "line1`,
16 `line2"`,
17 `invalid line should be ignored`,
18 `.1.3.6.1.2.1.1.2.0 = OID: .1.3.6.1.4.1.9.1.1045`,
19 }, "\n")
20
21 records, err := ParseWalk(strings.NewReader(input))
22 require.NoError(t, err)
23 require.Len(t, records, 3)
24
25 require.Equal(t, "1.3.6.1.2.1.1.5.0", records[0].OID)
26 require.Equal(t, "STRING", records[0].Type)
27 require.Equal(t, "test-host", records[0].Value)
28
29 require.Equal(t, "1.3.6.1.2.1.1.1.0", records[1].OID)
30 require.Equal(t, "line1\nline2", records[1].Value)
31
32 require.Equal(t, "1.3.6.1.2.1.1.2.0", records[2].OID)
33 require.Equal(t, ".1.3.6.1.4.1.9.1.1045", records[2].Value)
34 }
35
36 func TestParseWalk_MultilineQuotedValueWithEscapes(t *testing.T) {
37 input := strings.Join([]string{
38 `.1.3.6.1.2.1.1.6.0 = STRING: "line1\\`,
39 `line2\"`,
40 `line3"`,
41 }, "\n")
42
43 records, err := ParseWalk(strings.NewReader(input))
44 require.NoError(t, err)
45 require.Len(t, records, 1)
46 require.Equal(t, "line1\\\\\nline2\"\nline3", records[0].Value)
47 }
48
49 func TestWalkDatasetLookupCachesByOID(t *testing.T) {
50 ds := WalkDataset{
51 Records: []WalkRecord{
52 {OID: "1.3.6.1.2.1.1.5.0", Type: "STRING", Value: "test-host"},
53 },
54 }
55
56 record, ok := ds.Lookup(".1.3.6.1.2.1.1.5.0")
57 require.True(t, ok)
58 require.Equal(t, "test-host", record.Value)
59 require.Contains(t, ds.byOID, "1.3.6.1.2.1.1.5.0")
60 }
61
62 func TestWalkDatasetSortedOIDs_UsesNumericOIDOrdering(t *testing.T) {
63 ds := WalkDataset{
64 Records: []WalkRecord{
65 {OID: "1.3.6.1.2.1.1.10.0"},
66 {OID: "1.3.6.1.2.1.1.2.0"},
67 {OID: "1.3.6.1.2.1.1.2.1"},
68 },
69 }
70
71 require.Equal(t, []string{
72 "1.3.6.1.2.1.1.2.0",
73 "1.3.6.1.2.1.1.2.1",
74 "1.3.6.1.2.1.1.10.0",
75 }, ds.SortedOIDs())
76 }