11import unittest
2- from entrypoint .data_model import ArtifactType , ScanConfig , parse_comma_list
2+ from entrypoint .data_model import ArtifactType , ScanConfig , OutputConfig , parse_comma_list
33
44
55class MockArgs :
@@ -13,6 +13,24 @@ class MockArgs:
1313 skip_files = './media,/tmp/foo'
1414
1515
16+ class MockOutputArgs :
17+ display_vuln_findings = 'enabled'
18+ show_only_fixable_vulns = True
19+ out_sbom = 'test_sbom.json'
20+ out_scan = 'test_scan.json'
21+ out_scan_csv = 'test_scan.csv'
22+ out_scan_markdown = 'test_scan.md'
23+ out_dockerfile_scan_csv = 'test_dockerfile.csv'
24+ out_dockerfile_scan_md = 'test_dockerfile.md'
25+ thresholds = True
26+ critical = 5
27+ high = 10
28+ medium = 15
29+ low = 20
30+ other = 25
31+ threshold_fixable_only = True
32+
33+
1634class TestDataModel (unittest .TestCase ):
1735
1836 def test_artifact_type_repository_exists (self ):
@@ -196,3 +214,112 @@ def test_scan_config_comprehensive_access(self):
196214 self .assertEqual (config .sbomgen_version , "1.8.0" )
197215 self .assertEqual (config .timeout , 300 )
198216 self .assertEqual (config .platform , "linux/amd64" )
217+
218+ def test_output_config_can_be_created (self ):
219+ config = OutputConfig ()
220+ self .assertIsNotNone (config )
221+
222+ def test_output_config_has_display_vulnerability_findings (self ):
223+ config = OutputConfig (display_vulnerability_findings = "enabled" )
224+ self .assertEqual (config .display_vulnerability_findings , True )
225+
226+ def test_output_config_has_show_only_fixable_vulns (self ):
227+ config = OutputConfig (show_only_fixable_vulns = True )
228+ self .assertEqual (config .show_only_fixable_vulns , True )
229+
230+ def test_output_config_has_output_sbom_path (self ):
231+ config = OutputConfig (output_sbom_path = "./sbom_123.json" )
232+ self .assertEqual (config .output_sbom_path , "./sbom_123.json" )
233+
234+ def test_output_config_has_output_inspector_scan_path (self ):
235+ config = OutputConfig (output_inspector_scan_path = "inspector_scan_123.json" )
236+ self .assertEqual (config .output_inspector_scan_path , "inspector_scan_123.json" )
237+
238+ def test_output_config_uses_action_yml_defaults (self ):
239+ config = OutputConfig ()
240+ self .assertEqual (config .display_vulnerability_findings , False )
241+ self .assertEqual (config .show_only_fixable_vulns , False )
242+ self .assertEqual (config .output_sbom_path , "sbom.json" )
243+ self .assertEqual (config .output_inspector_scan_path , "inspector-scan.json" )
244+ self .assertEqual (config .output_inspector_scan_path_csv , "inspector-scan.csv" )
245+ self .assertEqual (config .output_inspector_scan_path_markdown , "inspector-scan.md" )
246+ self .assertEqual (config .output_dockerfile_scan_csv , "inspector-dockerfile-scan.csv" )
247+ self .assertEqual (config .output_dockerfile_scan_markdown , "inspector-dockerfile-scan.md" )
248+ self .assertEqual (config .thresholds , False )
249+ self .assertEqual (config .critical_threshold , 0 )
250+ self .assertEqual (config .high_threshold , 0 )
251+ self .assertEqual (config .medium_threshold , 0 )
252+ self .assertEqual (config .low_threshold , 0 )
253+ self .assertEqual (config .other_threshold , 0 )
254+ self .assertEqual (config .threshold_fixable_only , False )
255+
256+ def test_output_config_converts_enabled_to_true (self ):
257+ config = OutputConfig (display_vulnerability_findings = "enabled" )
258+ self .assertEqual (config .display_vulnerability_findings , True )
259+
260+ def test_output_config_converts_disabled_to_false (self ):
261+ config = OutputConfig (display_vulnerability_findings = "disabled" )
262+ self .assertEqual (config .display_vulnerability_findings , False )
263+
264+ def test_output_config_converts_invalid_string_to_false (self ):
265+ config = OutputConfig (display_vulnerability_findings = "invalid" )
266+ self .assertEqual (config .display_vulnerability_findings , False )
267+
268+ def test_output_config_has_output_inspector_scan_path_csv (self ):
269+ config = OutputConfig (output_inspector_scan_path_csv = "inspector_scan_123.csv" )
270+ self .assertEqual (config .output_inspector_scan_path_csv , "inspector_scan_123.csv" )
271+
272+ def test_output_config_has_output_inspector_scan_path_markdown (self ):
273+ config = OutputConfig (output_inspector_scan_path_markdown = "inspector_scan_123.md" )
274+ self .assertEqual (config .output_inspector_scan_path_markdown , "inspector_scan_123.md" )
275+
276+ def test_output_config_has_output_dockerfile_scan_csv (self ):
277+ config = OutputConfig (output_dockerfile_scan_csv = "dockerfile_scan_123.csv" )
278+ self .assertEqual (config .output_dockerfile_scan_csv , "dockerfile_scan_123.csv" )
279+
280+ def test_output_config_has_output_dockerfile_scan_markdown (self ):
281+ config = OutputConfig (output_dockerfile_scan_markdown = "dockerfile_scan_123.md" )
282+ self .assertEqual (config .output_dockerfile_scan_markdown , "dockerfile_scan_123.md" )
283+
284+ def test_output_config_has_thresholds (self ):
285+ config = OutputConfig (thresholds = True )
286+ self .assertEqual (config .thresholds , True )
287+
288+ def test_output_config_has_critical_threshold (self ):
289+ config = OutputConfig (critical_threshold = 5 )
290+ self .assertEqual (config .critical_threshold , 5 )
291+
292+ def test_output_config_has_threshold_fixable_only (self ):
293+ config = OutputConfig (threshold_fixable_only = True )
294+ self .assertEqual (config .threshold_fixable_only , True )
295+
296+ def test_output_config_from_args_exists (self ):
297+ mock_args = MockOutputArgs ()
298+ config = OutputConfig .from_args (mock_args )
299+ self .assertIsNotNone (config )
300+
301+ def test_output_config_from_args_converts_display_vuln_findings (self ):
302+ mock_args = MockOutputArgs ()
303+ config = OutputConfig .from_args (mock_args )
304+ self .assertEqual (config .display_vulnerability_findings , True )
305+
306+ def test_output_config_from_args_converts_output_paths (self ):
307+ mock_args = MockOutputArgs ()
308+ config = OutputConfig .from_args (mock_args )
309+ self .assertEqual (config .output_sbom_path , 'test_sbom.json' )
310+ self .assertEqual (config .output_inspector_scan_path , 'test_scan.json' )
311+ self .assertEqual (config .output_inspector_scan_path_csv , 'test_scan.csv' )
312+
313+ def test_output_config_from_args_converts_thresholds (self ):
314+ mock_args = MockOutputArgs ()
315+ config = OutputConfig .from_args (mock_args )
316+ self .assertEqual (config .thresholds , True )
317+ self .assertEqual (config .critical_threshold , 5 )
318+ self .assertEqual (config .high_threshold , 10 )
319+ self .assertEqual (config .threshold_fixable_only , True )
320+
321+ def test_output_config_from_args_converts_boolean_fields (self ):
322+ mock_args = MockOutputArgs ()
323+ config = OutputConfig .from_args (mock_args )
324+ self .assertEqual (config .show_only_fixable_vulns , True )
325+ self .assertEqual (config .threshold_fixable_only , True )
0 commit comments