Skip to content

Commit

Permalink
[pre-commit.ci] auto fixes from pre-commit.com hooks
Browse files Browse the repository at this point in the history
for more information, see https://pre-commit.ci
  • Loading branch information
pre-commit-ci[bot] committed Jan 13, 2025
1 parent 314f5ae commit bcffc20
Showing 1 changed file with 138 additions and 122 deletions.
260 changes: 138 additions & 122 deletions tests/cmd/test_merge.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,10 @@
]
}"""


def get_sbom1():
return SBOM.from_json(sbom1_json)
return SBOM.from_json(sbom1_json)


sbom2_json = """{
"software": [
Expand Down Expand Up @@ -125,33 +127,40 @@ def get_sbom1():
]
}"""


def get_sbom2():
return SBOM.from_json(sbom2_json)
return SBOM.from_json(sbom2_json)


sbom3 = None
sbom4 = None


def get_config():
return {
"system": {
"UUID": "6a0ee431-842f-4963-8867-ef0ef6998003",
"name": "",
"vendor": None,
"captureStart": 1689186121,
"captureEnd": 1689186146,
}
}
return {
"system": {
"UUID": "6a0ee431-842f-4963-8867-ef0ef6998003",
"name": "",
"vendor": None,
"captureStart": 1689186121,
"captureEnd": 1689186146,
}
}


def get_sbom3():
with open(
pathlib.Path(__file__).parent / "../data/sample_sboms/helics_binaries_sbom.json",
"r",
) as f:
return SBOM.from_json(f.read())
with open(
pathlib.Path(__file__).parent / "../data/sample_sboms/helics_binaries_sbom.json",
"r",
) as f:
return SBOM.from_json(f.read())


def get_sbom4():
with open(pathlib.Path(__file__).parent / "../data/sample_sboms/helics_libs_sbom.json", "r") as f:
return SBOM.from_json(f.read())
with open(
pathlib.Path(__file__).parent / "../data/sample_sboms/helics_libs_sbom.json", "r"
) as f:
return SBOM.from_json(f.read())


# Test Functions
Expand Down Expand Up @@ -215,127 +224,134 @@ def test_cmdline_merge():


def test_merge_with_add_system_true():
sbom1 = get_sbom1()
sbom2 = get_sbom2()
outfile_name = generate_filename("test_merge_with_add_system_true")
pm = get_plugin_manager()
output_writer = pm.get_plugin("surfactant.output.cytrics_writer")
input_sboms = [sbom1, sbom2]
config_file = get_config()
config_file["system"]["UUID"] = "6a0ee431-842f-4963-8867-ef0ef6998003"
with open(outfile_name, "w") as sbom_outfile:
merge(input_sboms, sbom_outfile, config_file, output_writer, add_system=True)

with open(outfile_name, "r") as j:
generated_sbom = json.loads(j.read())
assert generated_sbom["systems"]
assert generated_sbom["systems"][0]["UUID"] == config_file["system"]["UUID"]
os.remove(os.path.abspath(outfile_name))
sbom1 = get_sbom1()
sbom2 = get_sbom2()
outfile_name = generate_filename("test_merge_with_add_system_true")
pm = get_plugin_manager()
output_writer = pm.get_plugin("surfactant.output.cytrics_writer")
input_sboms = [sbom1, sbom2]
config_file = get_config()
config_file["system"]["UUID"] = "6a0ee431-842f-4963-8867-ef0ef6998003"
with open(outfile_name, "w") as sbom_outfile:
merge(input_sboms, sbom_outfile, config_file, output_writer, add_system=True)

with open(outfile_name, "r") as j:
generated_sbom = json.loads(j.read())
assert generated_sbom["systems"]
assert generated_sbom["systems"][0]["UUID"] == config_file["system"]["UUID"]

os.remove(os.path.abspath(outfile_name))


def test_merge_with_add_system_false():
sbom1 = get_sbom1()
sbom2 = get_sbom2()
outfile_name = generate_filename("test_merge_with_add_system_false")
pm = get_plugin_manager()
output_writer = pm.get_plugin("surfactant.output.cytrics_writer")
input_sboms = [sbom1, sbom2]
config_file = get_config()
config_file["system"]["UUID"] = "6a0ee431-842f-4963-8867-ef0ef6998003"
with open(outfile_name, "w") as sbom_outfile:
merge(input_sboms, sbom_outfile, config_file, output_writer, add_system=False)

with open(outfile_name, "r") as j:
generated_sbom = json.loads(j.read())
assert not generated_sbom["systems"]
os.remove(os.path.abspath(outfile_name))
sbom1 = get_sbom1()
sbom2 = get_sbom2()
outfile_name = generate_filename("test_merge_with_add_system_false")
pm = get_plugin_manager()
output_writer = pm.get_plugin("surfactant.output.cytrics_writer")
input_sboms = [sbom1, sbom2]
config_file = get_config()
config_file["system"]["UUID"] = "6a0ee431-842f-4963-8867-ef0ef6998003"
with open(outfile_name, "w") as sbom_outfile:
merge(input_sboms, sbom_outfile, config_file, output_writer, add_system=False)

with open(outfile_name, "r") as j:
generated_sbom = json.loads(j.read())
assert not generated_sbom["systems"]

os.remove(os.path.abspath(outfile_name))


def test_merge_with_custom_system_relationship():
sbom1 = get_sbom1()
sbom2 = get_sbom2()
outfile_name = generate_filename("test_merge_with_custom_system_relationship")
pm = get_plugin_manager()
output_writer = pm.get_plugin("surfactant.output.cytrics_writer")
input_sboms = [sbom1, sbom2]
config_file = get_config()
config_file["systemRelationship"] = "DependsOn"
with open(outfile_name, "w") as sbom_outfile:
merge(input_sboms, sbom_outfile, config_file, output_writer, add_system=True)

with open(outfile_name, "r") as j:
generated_sbom = json.loads(j.read())
for relationship in generated_sbom["relationships"]:
if relationship["xUUID"] == config_file["system"]["UUID"]:
assert relationship["relationship"] == "DependsOn"

os.remove(os.path.abspath(outfile_name))
sbom1 = get_sbom1()
sbom2 = get_sbom2()
outfile_name = generate_filename("test_merge_with_custom_system_relationship")
pm = get_plugin_manager()
output_writer = pm.get_plugin("surfactant.output.cytrics_writer")
input_sboms = [sbom1, sbom2]
config_file = get_config()
config_file["systemRelationship"] = "DependsOn"
with open(outfile_name, "w") as sbom_outfile:
merge(input_sboms, sbom_outfile, config_file, output_writer, add_system=True)

with open(outfile_name, "r") as j:
generated_sbom = json.loads(j.read())
for relationship in generated_sbom["relationships"]:
if relationship["xUUID"] == config_file["system"]["UUID"]:
assert relationship["relationship"] == "DependsOn"

os.remove(os.path.abspath(outfile_name))


def test_merge_with_specified_system_uuid():
sbom1 = get_sbom1()
sbom2 = get_sbom2()
outfile_name = generate_filename("test_merge_with_specified_system_uuid")
pm = get_plugin_manager()
output_writer = pm.get_plugin("surfactant.output.cytrics_writer")
input_sboms = [sbom1, sbom2]
config_file = get_config()
system_uuid = "123e4567-e89b-12d3-a456-426614174000"
with open(outfile_name, "w") as sbom_outfile:
merge(input_sboms, sbom_outfile, config_file, output_writer, add_system=True, system_uuid=system_uuid)
sbom1 = get_sbom1()
sbom2 = get_sbom2()
outfile_name = generate_filename("test_merge_with_specified_system_uuid")
pm = get_plugin_manager()
output_writer = pm.get_plugin("surfactant.output.cytrics_writer")
input_sboms = [sbom1, sbom2]
config_file = get_config()
system_uuid = "123e4567-e89b-12d3-a456-426614174000"
with open(outfile_name, "w") as sbom_outfile:
merge(
input_sboms,
sbom_outfile,
config_file,
output_writer,
add_system=True,
system_uuid=system_uuid,
)

with open(outfile_name, "r") as j:
generated_sbom = json.loads(j.read())
assert any(system["UUID"] == system_uuid for system in generated_sbom["systems"])
with open(outfile_name, "r") as j:
generated_sbom = json.loads(j.read())
assert any(system["UUID"] == system_uuid for system in generated_sbom["systems"])

os.remove(os.path.abspath(outfile_name))
os.remove(os.path.abspath(outfile_name))


def test_prevent_orphaned_system_uuid():
sbom1 = get_sbom1()
sbom2 = get_sbom2()
outfile_name = generate_filename("test_prevent_orphaned_system_uuid")
pm = get_plugin_manager()
output_writer = pm.get_plugin("surfactant.output.cytrics_writer")
input_sboms = [sbom1, sbom2]
config_file = get_config()
# Get rid of the system UUID field from the config file
# This will make it try to generate a random UUID, but won't add it since add_system is False
del config_file["system"]["UUID"]
with open(outfile_name, "w") as sbom_outfile:
merge(input_sboms, sbom_outfile, config_file, output_writer, add_system=False)

with open(outfile_name, "r") as j:
generated_sbom = json.loads(j.read())
assert not generated_sbom["systems"]

os.remove(os.path.abspath(outfile_name))
sbom1 = get_sbom1()
sbom2 = get_sbom2()
outfile_name = generate_filename("test_prevent_orphaned_system_uuid")
pm = get_plugin_manager()
output_writer = pm.get_plugin("surfactant.output.cytrics_writer")
input_sboms = [sbom1, sbom2]
config_file = get_config()
# Get rid of the system UUID field from the config file
# This will make it try to generate a random UUID, but won't add it since add_system is False
del config_file["system"]["UUID"]
with open(outfile_name, "w") as sbom_outfile:
merge(input_sboms, sbom_outfile, config_file, output_writer, add_system=False)

with open(outfile_name, "r") as j:
generated_sbom = json.loads(j.read())
assert not generated_sbom["systems"]

os.remove(os.path.abspath(outfile_name))


def test_add_random_system_uuid():
sbom1 = get_sbom1()
sbom2 = get_sbom2()
outfile_name = generate_filename("test_prevent_orphaned_system_uuid")
pm = get_plugin_manager()
output_writer = pm.get_plugin("surfactant.output.cytrics_writer")
input_sboms = [sbom1, sbom2]
config_file = get_config()
# Get rid of the system UUID field from the config file
# This will make it try to generate a random UUID, but won't add it since add_system is False
original_config_system_UUID = config_file["system"]["UUID"]
del config_file["system"]["UUID"]
with open(outfile_name, "w") as sbom_outfile:
merge(input_sboms, sbom_outfile, config_file, output_writer, add_system=True)

with open(outfile_name, "r") as j:
generated_sbom = json.loads(j.read())
assert generated_sbom["systems"]
# Check that the UUID of the generated system is actually random
assert generated_sbom["systems"][0]["UUID"] != original_config_system_UUID
os.remove(os.path.abspath(outfile_name))
sbom1 = get_sbom1()
sbom2 = get_sbom2()
outfile_name = generate_filename("test_prevent_orphaned_system_uuid")
pm = get_plugin_manager()
output_writer = pm.get_plugin("surfactant.output.cytrics_writer")
input_sboms = [sbom1, sbom2]
config_file = get_config()
# Get rid of the system UUID field from the config file
# This will make it try to generate a random UUID, but won't add it since add_system is False
original_config_system_UUID = config_file["system"]["UUID"]
del config_file["system"]["UUID"]
with open(outfile_name, "w") as sbom_outfile:
merge(input_sboms, sbom_outfile, config_file, output_writer, add_system=True)

with open(outfile_name, "r") as j:
generated_sbom = json.loads(j.read())
assert generated_sbom["systems"]
# Check that the UUID of the generated system is actually random
assert generated_sbom["systems"][0]["UUID"] != original_config_system_UUID

os.remove(os.path.abspath(outfile_name))


def generate_filename(name, ext=".json"):
Expand Down

0 comments on commit bcffc20

Please sign in to comment.