@@ -24,6 +24,7 @@ func TestDetect_SmartctlScan(t *testing.T) {
2424 fakeConfig .EXPECT ().GetDeviceOverrides ().AnyTimes ().Return ([]models.ScanOverride {})
2525 fakeConfig .EXPECT ().GetString ("commands.metrics_smartctl_bin" ).AnyTimes ().Return ("smartctl" )
2626 fakeConfig .EXPECT ().GetString ("commands.metrics_scan_args" ).AnyTimes ().Return ("--scan --json" )
27+ fakeConfig .EXPECT ().IsAllowlistedDevice (gomock .Any ()).AnyTimes ().Return (true )
2728
2829 fakeShell := mock_shell .NewMockInterface (mockCtrl )
2930 testScanResults , err := os .ReadFile ("testdata/smartctl_scan_simple.json" )
@@ -53,6 +54,7 @@ func TestDetect_SmartctlScan_Megaraid(t *testing.T) {
5354 fakeConfig .EXPECT ().GetDeviceOverrides ().AnyTimes ().Return ([]models.ScanOverride {})
5455 fakeConfig .EXPECT ().GetString ("commands.metrics_smartctl_bin" ).AnyTimes ().Return ("smartctl" )
5556 fakeConfig .EXPECT ().GetString ("commands.metrics_scan_args" ).AnyTimes ().Return ("--scan --json" )
57+ fakeConfig .EXPECT ().IsAllowlistedDevice (gomock .Any ()).AnyTimes ().Return (true )
5658
5759 fakeShell := mock_shell .NewMockInterface (mockCtrl )
5860 testScanResults , err := os .ReadFile ("testdata/smartctl_scan_megaraid.json" )
@@ -85,6 +87,7 @@ func TestDetect_SmartctlScan_Nvme(t *testing.T) {
8587 fakeConfig .EXPECT ().GetDeviceOverrides ().AnyTimes ().Return ([]models.ScanOverride {})
8688 fakeConfig .EXPECT ().GetString ("commands.metrics_smartctl_bin" ).AnyTimes ().Return ("smartctl" )
8789 fakeConfig .EXPECT ().GetString ("commands.metrics_scan_args" ).AnyTimes ().Return ("--scan --json" )
90+ fakeConfig .EXPECT ().IsAllowlistedDevice (gomock .Any ()).AnyTimes ().Return (true )
8891
8992 fakeShell := mock_shell .NewMockInterface (mockCtrl )
9093 testScanResults , err := os .ReadFile ("testdata/smartctl_scan_nvme.json" )
@@ -116,6 +119,7 @@ func TestDetect_TransformDetectedDevices_Empty(t *testing.T) {
116119 fakeConfig .EXPECT ().GetDeviceOverrides ().AnyTimes ().Return ([]models.ScanOverride {})
117120 fakeConfig .EXPECT ().GetString ("commands.metrics_smartctl_bin" ).AnyTimes ().Return ("smartctl" )
118121 fakeConfig .EXPECT ().GetString ("commands.metrics_scan_args" ).AnyTimes ().Return ("--scan --json" )
122+ fakeConfig .EXPECT ().IsAllowlistedDevice (gomock .Any ()).AnyTimes ().Return (true )
119123
120124 detectedDevices := models.Scan {
121125 Devices : []models.ScanDevice {
@@ -149,6 +153,7 @@ func TestDetect_TransformDetectedDevices_Ignore(t *testing.T) {
149153 fakeConfig .EXPECT ().GetDeviceOverrides ().AnyTimes ().Return ([]models.ScanOverride {{Device : "/dev/sda" , DeviceType : nil , Ignore : true }})
150154 fakeConfig .EXPECT ().GetString ("commands.metrics_smartctl_bin" ).AnyTimes ().Return ("smartctl" )
151155 fakeConfig .EXPECT ().GetString ("commands.metrics_scan_args" ).AnyTimes ().Return ("--scan --json" )
156+ fakeConfig .EXPECT ().IsAllowlistedDevice (gomock .Any ()).AnyTimes ().Return (true )
152157
153158 detectedDevices := models.Scan {
154159 Devices : []models.ScanDevice {
@@ -180,6 +185,7 @@ func TestDetect_TransformDetectedDevices_Raid(t *testing.T) {
180185 fakeConfig .EXPECT ().GetString ("host.id" ).AnyTimes ().Return ("" )
181186 fakeConfig .EXPECT ().GetString ("commands.metrics_smartctl_bin" ).AnyTimes ().Return ("smartctl" )
182187 fakeConfig .EXPECT ().GetString ("commands.metrics_scan_args" ).AnyTimes ().Return ("--scan --json" )
188+ fakeConfig .EXPECT ().IsAllowlistedDevice (gomock .Any ()).AnyTimes ().Return (true )
183189 fakeConfig .EXPECT ().GetDeviceOverrides ().AnyTimes ().Return ([]models.ScanOverride {
184190 {
185191 Device : "/dev/bus/0" ,
@@ -223,6 +229,7 @@ func TestDetect_TransformDetectedDevices_Simple(t *testing.T) {
223229 fakeConfig .EXPECT ().GetString ("commands.metrics_smartctl_bin" ).AnyTimes ().Return ("smartctl" )
224230 fakeConfig .EXPECT ().GetString ("commands.metrics_scan_args" ).AnyTimes ().Return ("--scan --json" )
225231 fakeConfig .EXPECT ().GetDeviceOverrides ().AnyTimes ().Return ([]models.ScanOverride {{Device : "/dev/sda" , DeviceType : []string {"sat+megaraid" }}})
232+ fakeConfig .EXPECT ().IsAllowlistedDevice (gomock .Any ()).AnyTimes ().Return (true )
226233 detectedDevices := models.Scan {
227234 Devices : []models.ScanDevice {
228235 {
@@ -256,6 +263,7 @@ func TestDetect_TransformDetectedDevices_WithoutDeviceTypeOverride(t *testing.T)
256263 fakeConfig .EXPECT ().GetString ("commands.metrics_smartctl_bin" ).AnyTimes ().Return ("smartctl" )
257264 fakeConfig .EXPECT ().GetString ("commands.metrics_scan_args" ).AnyTimes ().Return ("--scan --json" )
258265 fakeConfig .EXPECT ().GetDeviceOverrides ().AnyTimes ().Return ([]models.ScanOverride {{Device : "/dev/sda" }})
266+ fakeConfig .EXPECT ().IsAllowlistedDevice (gomock .Any ()).AnyTimes ().Return (true )
259267 detectedDevices := models.Scan {
260268 Devices : []models.ScanDevice {
261269 {
@@ -302,6 +310,46 @@ func TestDetect_TransformDetectedDevices_WhenDeviceNotDetected(t *testing.T) {
302310 require .Equal (t , "ata" , transformedDevices [0 ].DeviceType )
303311}
304312
313+ func TestDetect_TransformDetectedDevices_AllowListFilters (t * testing.T ) {
314+ mockCtrl := gomock .NewController (t )
315+ defer mockCtrl .Finish ()
316+
317+ fakeConfig := mock_config .NewMockInterface (mockCtrl )
318+ fakeConfig .EXPECT ().GetString ("host.id" ).AnyTimes ().Return ("" )
319+ fakeConfig .EXPECT ().GetString ("commands.metrics_smartctl_bin" ).AnyTimes ().Return ("smartctl" )
320+ fakeConfig .EXPECT ().GetString ("commands.metrics_scan_args" ).AnyTimes ().Return ("--scan --json" )
321+ fakeConfig .EXPECT ().GetDeviceOverrides ().AnyTimes ().Return ([]models.ScanOverride {{Device : "/dev/sda" , DeviceType : []string {"sat+megaraid" }}})
322+ fakeConfig .EXPECT ().IsAllowlistedDevice ("/dev/sda" ).Return (true )
323+ fakeConfig .EXPECT ().IsAllowlistedDevice ("/dev/sdb" ).Return (false )
324+ detectedDevices := models.Scan {
325+ Devices : []models.ScanDevice {
326+ {
327+ Name : "/dev/sda" ,
328+ InfoName : "/dev/sda" ,
329+ Protocol : "ata" ,
330+ Type : "ata" ,
331+ },
332+ {
333+ Name : "/dev/sdb" ,
334+ InfoName : "/dev/sdb" ,
335+ Protocol : "ata" ,
336+ Type : "ata" ,
337+ },
338+ },
339+ }
340+
341+ d := detect.Detect {
342+ Config : fakeConfig ,
343+ }
344+
345+ // test
346+ transformedDevices := d .TransformDetectedDevices (detectedDevices )
347+
348+ // assert
349+ require .Equal (t , 1 , len (transformedDevices ))
350+ require .Equal (t , "sda" , transformedDevices [0 ].DeviceName )
351+ }
352+
305353func TestDetect_SmartCtlInfo (t * testing.T ) {
306354 t .Run ("should report nvme info" , func (t * testing.T ) {
307355 ctrl := gomock .NewController (t )
0 commit comments