@@ -45,3 +45,62 @@ def test_sbom_fixture_top_level_shape():
4545 "licenses" ,
4646 "project" ,
4747 }
48+
49+
50+ def test_our_analyze_matches_fossa_analyze_top_level_keys ():
51+ """Our build_fossa_report_payload top-level keyset matches the real fixture."""
52+ from socketsecurity .fossa_compat import build_fossa_report_payload
53+ from socketsecurity .config import CliConfig
54+ from socketsecurity .core .classes import Diff
55+ config = CliConfig .from_args (["--api-token" , "test" , "--legal-format" , "fossa" ])
56+ ours = build_fossa_report_payload (Diff (), config )
57+ theirs = _load ("fossa-analyze-empty.json" )
58+ assert set (ours .keys ()) == set (theirs .keys ())
59+
60+
61+ def test_our_analyze_project_keys_match ():
62+ from socketsecurity .fossa_compat import build_fossa_report_payload
63+ from socketsecurity .config import CliConfig
64+ from socketsecurity .core .classes import Diff
65+ config = CliConfig .from_args (["--api-token" , "test" , "--legal-format" , "fossa" ])
66+ ours = build_fossa_report_payload (Diff (), config )
67+ theirs = _load ("fossa-analyze-empty.json" )
68+ assert set (ours ["project" ].keys ()) == set (theirs ["project" ].keys ())
69+
70+
71+ def test_our_sbom_matches_fossa_sbom_top_level_keys ():
72+ from socketsecurity .fossa_compat import build_fossa_attribution_payload
73+ from socketsecurity .config import CliConfig
74+ from socketsecurity .core .classes import Diff
75+ config = CliConfig .from_args (["--api-token" , "test" , "--legal-format" , "fossa" ])
76+ ours = build_fossa_attribution_payload (Diff (), config )
77+ theirs = _load ("fossa-sbom-populated.json" )
78+ assert set (ours .keys ()) == set (theirs .keys ())
79+
80+
81+ def test_our_sbom_project_keys_match ():
82+ from socketsecurity .fossa_compat import build_fossa_attribution_payload
83+ from socketsecurity .config import CliConfig
84+ from socketsecurity .core .classes import Diff
85+ config = CliConfig .from_args (["--api-token" , "test" , "--legal-format" , "fossa" ])
86+ ours = build_fossa_attribution_payload (Diff (), config )
87+ theirs = _load ("fossa-sbom-populated.json" )
88+ assert set (ours ["project" ].keys ()) == set (theirs ["project" ].keys ())
89+
90+
91+ def test_our_sbom_dependency_keys_match_when_populated ():
92+ """When we have at least one dependency, its keyset matches a real FOSSA dependency entry."""
93+ from socketsecurity .fossa_compat import build_fossa_attribution_payload
94+ from socketsecurity .config import CliConfig
95+ from socketsecurity .core .classes import Diff , Package
96+ pkg = Package (
97+ type = "pypi" , name = "x" , version = "1.0" , id = "pid" ,
98+ score = {}, alerts = [], direct = True ,
99+ )
100+ diff = Diff (packages = {"pid" : pkg })
101+ config = CliConfig .from_args (["--api-token" , "test" , "--legal-format" , "fossa" ])
102+ ours = build_fossa_attribution_payload (diff , config )
103+ theirs = _load ("fossa-sbom-populated.json" )
104+ our_dep = ours ["directDependencies" ][0 ]
105+ their_dep = theirs ["directDependencies" ][0 ]
106+ assert set (our_dep .keys ()) == set (their_dep .keys ())
0 commit comments