mirror of
https://github.com/netbirdio/netbird.git
synced 2024-12-12 09:50:47 +01:00
0c8f8a62c7
In some operation systems, the sys info contains invalid characters. In this patch try to keep the original fallback logic but filter out the cases when the character is invalid.
199 lines
5.2 KiB
Go
199 lines
5.2 KiB
Go
package system
|
|
|
|
import "testing"
|
|
|
|
func Test_sysInfo(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
sysInfo SysInfo
|
|
wantSerialNum string
|
|
wantProdName string
|
|
wantManufacturer string
|
|
}{
|
|
{
|
|
name: "Test Case 1",
|
|
sysInfo: SysInfo{
|
|
ChassisSerial: "Default string",
|
|
ProductSerial: "Default string",
|
|
BoardSerial: "M80-G8013200245",
|
|
ProductName: "B650M-HDV/M.2",
|
|
BoardName: "B650M-HDV/M.2",
|
|
ProductVendor: "ASRock",
|
|
},
|
|
wantSerialNum: "Default string",
|
|
wantProdName: "B650M-HDV/M.2",
|
|
wantManufacturer: "ASRock",
|
|
},
|
|
{
|
|
name: "Empty Chassis Serial",
|
|
sysInfo: SysInfo{
|
|
ChassisSerial: "",
|
|
ProductSerial: "Default string",
|
|
BoardSerial: "M80-G8013200245",
|
|
ProductName: "B650M-HDV/M.2",
|
|
BoardName: "B650M-HDV/M.2",
|
|
ProductVendor: "ASRock",
|
|
},
|
|
wantSerialNum: "Default string",
|
|
wantProdName: "B650M-HDV/M.2",
|
|
wantManufacturer: "ASRock",
|
|
},
|
|
{
|
|
name: "Empty Chassis Serial",
|
|
sysInfo: SysInfo{
|
|
ChassisSerial: "",
|
|
ProductSerial: "Default string",
|
|
BoardSerial: "M80-G8013200245",
|
|
ProductName: "B650M-HDV/M.2",
|
|
BoardName: "B650M-HDV/M.2",
|
|
ProductVendor: "ASRock",
|
|
},
|
|
wantSerialNum: "Default string",
|
|
wantProdName: "B650M-HDV/M.2",
|
|
wantManufacturer: "ASRock",
|
|
},
|
|
{
|
|
name: "Fallback to Product Serial",
|
|
sysInfo: SysInfo{
|
|
ChassisSerial: "Default string",
|
|
ProductSerial: "Product serial",
|
|
BoardSerial: "M80-G8013200245",
|
|
ProductName: "B650M-HDV/M.2",
|
|
BoardName: "B650M-HDV/M.2",
|
|
ProductVendor: "ASRock",
|
|
},
|
|
wantSerialNum: "Product serial",
|
|
wantProdName: "B650M-HDV/M.2",
|
|
wantManufacturer: "ASRock",
|
|
},
|
|
{
|
|
name: "Fallback to Product Serial with default string",
|
|
sysInfo: SysInfo{
|
|
ChassisSerial: "Default string",
|
|
ProductSerial: "Default string",
|
|
BoardSerial: "M80-G8013200245",
|
|
ProductName: "B650M-HDV/M.2",
|
|
BoardName: "B650M-HDV/M.2",
|
|
ProductVendor: "ASRock",
|
|
},
|
|
wantSerialNum: "Default string",
|
|
wantProdName: "B650M-HDV/M.2",
|
|
wantManufacturer: "ASRock",
|
|
},
|
|
{
|
|
name: "Non UTF-8 in Chassis Serial",
|
|
sysInfo: SysInfo{
|
|
ChassisSerial: "\x80",
|
|
ProductSerial: "Product serial",
|
|
BoardSerial: "M80-G8013200245",
|
|
ProductName: "B650M-HDV/M.2",
|
|
BoardName: "B650M-HDV/M.2",
|
|
ProductVendor: "ASRock",
|
|
},
|
|
wantSerialNum: "Product serial",
|
|
wantProdName: "B650M-HDV/M.2",
|
|
wantManufacturer: "ASRock",
|
|
},
|
|
{
|
|
name: "Non UTF-8 in Chassis Serial and Product Serial",
|
|
sysInfo: SysInfo{
|
|
ChassisSerial: "\x80",
|
|
ProductSerial: "\x80",
|
|
BoardSerial: "M80-G8013200245",
|
|
ProductName: "B650M-HDV/M.2",
|
|
BoardName: "B650M-HDV/M.2",
|
|
ProductVendor: "ASRock",
|
|
},
|
|
wantSerialNum: "M80-G8013200245",
|
|
wantProdName: "B650M-HDV/M.2",
|
|
wantManufacturer: "ASRock",
|
|
},
|
|
{
|
|
name: "Non UTF-8 in Chassis Serial and Product Serial and BoardSerial",
|
|
sysInfo: SysInfo{
|
|
ChassisSerial: "\x80",
|
|
ProductSerial: "\x80",
|
|
BoardSerial: "\x80",
|
|
ProductName: "B650M-HDV/M.2",
|
|
BoardName: "B650M-HDV/M.2",
|
|
ProductVendor: "ASRock",
|
|
},
|
|
wantSerialNum: "",
|
|
wantProdName: "B650M-HDV/M.2",
|
|
wantManufacturer: "ASRock",
|
|
},
|
|
|
|
{
|
|
name: "Empty Product Name",
|
|
sysInfo: SysInfo{
|
|
ChassisSerial: "Default string",
|
|
ProductSerial: "Default string",
|
|
BoardSerial: "M80-G8013200245",
|
|
ProductName: "",
|
|
BoardName: "boardname",
|
|
ProductVendor: "ASRock",
|
|
},
|
|
wantSerialNum: "Default string",
|
|
wantProdName: "boardname",
|
|
wantManufacturer: "ASRock",
|
|
},
|
|
{
|
|
name: "Invalid Product Name",
|
|
sysInfo: SysInfo{
|
|
ChassisSerial: "Default string",
|
|
ProductSerial: "Default string",
|
|
BoardSerial: "M80-G8013200245",
|
|
ProductName: "\x80",
|
|
BoardName: "boardname",
|
|
ProductVendor: "ASRock",
|
|
},
|
|
wantSerialNum: "Default string",
|
|
wantProdName: "boardname",
|
|
wantManufacturer: "ASRock",
|
|
},
|
|
{
|
|
name: "Invalid BoardName Name",
|
|
sysInfo: SysInfo{
|
|
ChassisSerial: "Default string",
|
|
ProductSerial: "Default string",
|
|
BoardSerial: "M80-G8013200245",
|
|
ProductName: "\x80",
|
|
BoardName: "\x80",
|
|
ProductVendor: "ASRock",
|
|
},
|
|
wantSerialNum: "Default string",
|
|
wantProdName: "",
|
|
wantManufacturer: "ASRock",
|
|
},
|
|
{
|
|
name: "Invalid chars",
|
|
sysInfo: SysInfo{
|
|
ChassisSerial: "\x80",
|
|
ProductSerial: "\x80",
|
|
BoardSerial: "\x80",
|
|
ProductName: "\x80",
|
|
BoardName: "\x80",
|
|
ProductVendor: "\x80",
|
|
},
|
|
wantSerialNum: "",
|
|
wantProdName: "",
|
|
wantManufacturer: "",
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
gotSerialNum, gotProdName, gotManufacturer := sysInfo(tt.sysInfo)
|
|
if gotSerialNum != tt.wantSerialNum {
|
|
t.Errorf("sysInfo() gotSerialNum = %v, want %v", gotSerialNum, tt.wantSerialNum)
|
|
}
|
|
if gotProdName != tt.wantProdName {
|
|
t.Errorf("sysInfo() gotProdName = %v, want %v", gotProdName, tt.wantProdName)
|
|
}
|
|
if gotManufacturer != tt.wantManufacturer {
|
|
t.Errorf("sysInfo() gotManufacturer = %v, want %v", gotManufacturer, tt.wantManufacturer)
|
|
}
|
|
})
|
|
}
|
|
}
|