Skip to content

Commit 97d51df

Browse files
added SBOMOutput scaffold
1 parent feaa454 commit 97d51df

File tree

2 files changed

+81
-1
lines changed

2 files changed

+81
-1
lines changed

entrypoint/entrypoint/data_model.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,3 +102,19 @@ def from_args(OutputConfig, args):
102102
other_threshold=args.other,
103103
threshold_fixable_only=args.threshold_fixable_only
104104
)
105+
106+
107+
class SBOMOutput:
108+
def __init__(self,
109+
file_path=None,
110+
generation_success=False,
111+
return_code=None,
112+
generation_time=None,
113+
file_size=None,
114+
error_message=None):
115+
self.file_path = file_path
116+
self.generation_success = generation_success
117+
self.return_code = return_code
118+
self.generation_time = generation_time
119+
self.file_size = file_size
120+
self.error_message = error_message

entrypoint/tests/test_data_model.py

Lines changed: 65 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import unittest
2-
from entrypoint.data_model import ArtifactType, ScanConfig, OutputConfig, parse_comma_list
2+
from entrypoint.data_model import ArtifactType, ScanConfig, OutputConfig, SBOMOutput, parse_comma_list
33

44

55
class MockArgs:
@@ -323,3 +323,67 @@ def test_output_config_from_args_converts_boolean_fields(self):
323323
config = OutputConfig.from_args(mock_args)
324324
self.assertEqual(config.show_only_fixable_vulns, True)
325325
self.assertEqual(config.threshold_fixable_only, True)
326+
327+
def test_sbom_output_can_be_created(self):
328+
output = SBOMOutput()
329+
self.assertIsNotNone(output)
330+
331+
def test_sbom_output_has_file_path(self):
332+
output = SBOMOutput(file_path="/tmp/test.json")
333+
self.assertEqual(output.file_path, "/tmp/test.json")
334+
335+
def test_sbom_output_has_generation_success(self):
336+
output = SBOMOutput(generation_success=True)
337+
self.assertEqual(output.generation_success, True)
338+
339+
def test_sbom_output_has_return_code(self):
340+
output = SBOMOutput(return_code=0)
341+
self.assertEqual(output.return_code, 0)
342+
343+
def test_sbom_output_has_generation_time(self):
344+
output = SBOMOutput(generation_time=5.2)
345+
self.assertEqual(output.generation_time, 5.2)
346+
347+
def test_sbom_output_has_file_size(self):
348+
output = SBOMOutput(file_size=1024)
349+
self.assertEqual(output.file_size, 1024)
350+
351+
def test_sbom_output_has_error_message(self):
352+
output = SBOMOutput(error_message="Generation failed")
353+
self.assertEqual(output.error_message, "Generation failed")
354+
355+
def test_sbom_output_defaults(self):
356+
output = SBOMOutput()
357+
self.assertIsNone(output.file_path)
358+
self.assertEqual(output.generation_success, False)
359+
self.assertIsNone(output.return_code)
360+
self.assertIsNone(output.generation_time)
361+
self.assertIsNone(output.file_size)
362+
self.assertIsNone(output.error_message)
363+
364+
def test_sbom_output_success_scenario(self):
365+
output = SBOMOutput(
366+
file_path="/tmp/sbom.json",
367+
generation_success=True,
368+
return_code=0,
369+
generation_time=3.5,
370+
file_size=2048
371+
)
372+
self.assertEqual(output.file_path, "/tmp/sbom.json")
373+
self.assertEqual(output.generation_success, True)
374+
self.assertEqual(output.return_code, 0)
375+
self.assertEqual(output.generation_time, 3.5)
376+
self.assertEqual(output.file_size, 2048)
377+
self.assertIsNone(output.error_message)
378+
379+
def test_sbom_output_failure_scenario(self):
380+
output = SBOMOutput(
381+
generation_success=False,
382+
return_code=1,
383+
error_message="Timeout exceeded"
384+
)
385+
self.assertEqual(output.generation_success, False)
386+
self.assertEqual(output.return_code, 1)
387+
self.assertEqual(output.error_message, "Timeout exceeded")
388+
self.assertIsNone(output.file_path)
389+
self.assertIsNone(output.generation_time)

0 commit comments

Comments
 (0)