Files
bee/audit/internal/collector/board_test.go
Michael Chus f1e392a7fe feat(audit): 1.2 — board collector (dmidecode types 0, 1, 2)
- board.go: collectBoard(), parseBoard(), parseBIOSFirmware(), parseDMIFields(), cleanDMIValue()
- Reads System Information (type 1): serial, manufacturer, product_name, uuid
- Reads Base Board Information (type 2): part_number
- Reads BIOS Information (type 0): firmware version record
- cleanDMIValue strips vendor placeholders (O.E.M., Not Specified, Unknown, etc.)
- board_test.go: 6 table/case tests with dmidecode fixtures in testdata/
- collector.go: wired board + BIOS firmware into snapshot

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-05 10:35:14 +03:00

120 lines
3.2 KiB
Go

package collector
import (
"os"
"testing"
)
func TestParseBoard(t *testing.T) {
type1 := mustReadFile(t, "testdata/dmidecode_type1.txt")
type2 := mustReadFile(t, "testdata/dmidecode_type2.txt")
board := parseBoard(type1, type2)
if board.SerialNumber != "CAR315KA0803B90" {
t.Errorf("serial_number: got %q, want %q", board.SerialNumber, "CAR315KA0803B90")
}
if board.Manufacturer == nil || *board.Manufacturer != "Inspur" {
t.Errorf("manufacturer: got %v, want Inspur", board.Manufacturer)
}
if board.ProductName == nil || *board.ProductName != "NF5468M7" {
t.Errorf("product_name: got %v, want NF5468M7", board.ProductName)
}
if board.PartNumber == nil || *board.PartNumber != "YZCA-02758-105" {
t.Errorf("part_number: got %v, want YZCA-02758-105", board.PartNumber)
}
if board.UUID == nil || *board.UUID != "a1b2c3d4-e5f6-7890-abcd-ef1234567890" {
t.Errorf("uuid: got %v, want a1b2c3d4-e5f6-7890-abcd-ef1234567890", board.UUID)
}
}
func TestParseBoard_emptySerial(t *testing.T) {
type1 := mustReadFile(t, "testdata/dmidecode_type1_empty_serial.txt")
board := parseBoard(type1, "")
if board.SerialNumber != "" {
t.Errorf("expected empty serial for placeholder value, got %q", board.SerialNumber)
}
if board.Manufacturer != nil {
t.Errorf("expected nil manufacturer for placeholder, got %q", *board.Manufacturer)
}
if board.UUID != nil {
t.Errorf("expected nil UUID for 'Not Settable', got %q", *board.UUID)
}
}
func TestParseBIOSFirmware(t *testing.T) {
type0 := mustReadFile(t, "testdata/dmidecode_type0.txt")
fw := parseBIOSFirmware(type0)
if len(fw) != 1 {
t.Fatalf("expected 1 firmware record, got %d", len(fw))
}
if fw[0].DeviceName != "BIOS" {
t.Errorf("device_name: got %q, want BIOS", fw[0].DeviceName)
}
if fw[0].Version != "06.08.05" {
t.Errorf("version: got %q, want 06.08.05", fw[0].Version)
}
}
func TestParseBIOSFirmware_empty(t *testing.T) {
fw := parseBIOSFirmware("")
if len(fw) != 0 {
t.Errorf("expected no firmware records for empty input, got %d", len(fw))
}
}
func TestCleanDMIValue(t *testing.T) {
tests := []struct {
input string
want string
}{
{"CAR315KA0803B90", "CAR315KA0803B90"},
{"To Be Filled By O.E.M.", ""},
{"to be filled by o.e.m.", ""},
{"Not Specified", ""},
{"Not Settable", ""},
{"Unknown", ""},
{"N/A", ""},
{"None", ""},
{"NULL", ""},
{"Default String", ""},
{" Inspur ", "Inspur"},
{"", ""},
{"0", ""},
}
for _, tt := range tests {
got := cleanDMIValue(tt.input)
if got != tt.want {
t.Errorf("cleanDMIValue(%q) = %q, want %q", tt.input, got, tt.want)
}
}
}
func TestParseDMIFields(t *testing.T) {
type1 := mustReadFile(t, "testdata/dmidecode_type1.txt")
fields := parseDMIFields(type1, "System Information")
if fields["Manufacturer"] != "Inspur" {
t.Errorf("Manufacturer: got %q", fields["Manufacturer"])
}
if fields["Serial Number"] != "CAR315KA0803B90" {
t.Errorf("Serial Number: got %q", fields["Serial Number"])
}
// sub-list items must not be included
if _, ok := fields["PCI is supported"]; ok {
t.Error("sub-list item should not appear in fields")
}
}
func mustReadFile(t *testing.T, path string) string {
t.Helper()
b, err := os.ReadFile(path)
if err != nil {
t.Fatalf("read fixture %s: %v", path, err)
}
return string(b)
}