towerops-agent/snmp_test.go

134 lines
2.8 KiB
Go

package main
import (
"testing"
"github.com/gosnmp/gosnmp"
)
func TestSnmpValueToString(t *testing.T) {
tests := []struct {
name string
pdu gosnmp.SnmpPDU
want string
}{
{
name: "integer",
pdu: gosnmp.SnmpPDU{Type: gosnmp.Integer, Value: 42},
want: "42",
},
{
name: "string",
pdu: gosnmp.SnmpPDU{Type: gosnmp.OctetString, Value: []byte("Linux router")},
want: "Linux router",
},
{
name: "hex bytes",
pdu: gosnmp.SnmpPDU{Type: gosnmp.OctetString, Value: []byte{0x00, 0x1a, 0x2b}},
want: "00:1a:2b",
},
{
name: "oid",
pdu: gosnmp.SnmpPDU{Type: gosnmp.ObjectIdentifier, Value: "1.3.6.1.2.1.1.1.0"},
want: "1.3.6.1.2.1.1.1.0",
},
{
name: "counter32",
pdu: gosnmp.SnmpPDU{Type: gosnmp.Counter32, Value: uint(12345)},
want: "12345",
},
{
name: "counter64",
pdu: gosnmp.SnmpPDU{Type: gosnmp.Counter64, Value: uint64(9876543210)},
want: "9876543210",
},
{
name: "gauge32",
pdu: gosnmp.SnmpPDU{Type: gosnmp.Gauge32, Value: uint(999)},
want: "999",
},
{
name: "timeticks",
pdu: gosnmp.SnmpPDU{Type: gosnmp.TimeTicks, Value: uint32(12345678)},
want: "12345678",
},
{
name: "ip address",
pdu: gosnmp.SnmpPDU{Type: gosnmp.IPAddress, Value: "192.168.1.1"},
want: "192.168.1.1",
},
{
name: "null",
pdu: gosnmp.SnmpPDU{Type: gosnmp.Null, Value: nil},
want: "null",
},
{
name: "no such object",
pdu: gosnmp.SnmpPDU{Type: gosnmp.NoSuchObject, Value: nil},
want: "null",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got := snmpValueToString(tt.pdu)
if got != tt.want {
t.Errorf("got %q, want %q", got, tt.want)
}
})
}
}
func TestMapAuthProtocol(t *testing.T) {
tests := []struct {
input string
want gosnmp.SnmpV3AuthProtocol
}{
{"MD5", gosnmp.MD5},
{"SHA", gosnmp.SHA},
{"SHA-256", gosnmp.SHA256},
{"SHA-512", gosnmp.SHA512},
{"unknown", gosnmp.SHA},
}
for _, tt := range tests {
got := mapAuthProtocol(tt.input)
if got != tt.want {
t.Errorf("mapAuthProtocol(%q) = %v, want %v", tt.input, got, tt.want)
}
}
}
func TestMapPrivProtocol(t *testing.T) {
tests := []struct {
input string
want gosnmp.SnmpV3PrivProtocol
}{
{"DES", gosnmp.DES},
{"AES", gosnmp.AES},
{"AES-256", gosnmp.AES256},
{"unknown", gosnmp.AES},
}
for _, tt := range tests {
got := mapPrivProtocol(tt.input)
if got != tt.want {
t.Errorf("mapPrivProtocol(%q) = %v, want %v", tt.input, got, tt.want)
}
}
}
func TestFormatHex(t *testing.T) {
tests := []struct {
input []byte
want string
}{
{nil, ""},
{[]byte{}, ""},
{[]byte{0xAB}, "ab"},
{[]byte{0x00, 0xFF, 0x1A}, "00:ff:1a"},
}
for _, tt := range tests {
got := formatHex(tt.input)
if got != tt.want {
t.Errorf("formatHex(%v) = %q, want %q", tt.input, got, tt.want)
}
}
}