Add unit tests for SBOM ingestion and transformation
Some checks failed
Docs CI / lint-and-preview (push) Has been cancelled
Some checks failed
Docs CI / lint-and-preview (push) Has been cancelled
- Implement `SbomIngestServiceCollectionExtensionsTests` to verify the SBOM ingestion pipeline exports snapshots correctly. - Create `SbomIngestTransformerTests` to ensure the transformation produces expected nodes and edges, including deduplication of license nodes and normalization of timestamps. - Add `SbomSnapshotExporterTests` to test the export functionality for manifest, adjacency, nodes, and edges. - Introduce `VexOverlayTransformerTests` to validate the transformation of VEX nodes and edges. - Set up project file for the test project with necessary dependencies and configurations. - Include JSON fixture files for testing purposes.
This commit is contained in:
106
docs/assets/authority/authority-plugin-component.svg
Normal file
106
docs/assets/authority/authority-plugin-component.svg
Normal file
@@ -0,0 +1,106 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 960 420" role="img">
|
||||
<title>Authority Standard plug-in component topology</title>
|
||||
<defs>
|
||||
<style>
|
||||
.cluster { fill: #0b1120; stroke: #1e293b; stroke-width: 2; rx: 20; ry: 20; }
|
||||
.cluster-title { fill: #e2e8f0; font: 16px "Segoe UI", sans-serif; font-weight: 600; }
|
||||
.node { fill: #1e293b; stroke: #334155; stroke-width: 2; rx: 12; ry: 12; }
|
||||
.node text { fill: #f8fafc; font: 14px "Segoe UI", sans-serif; }
|
||||
.node-small { fill: #0f172a; stroke: #334155; stroke-width: 2; rx: 12; ry: 12; }
|
||||
.node-small text { fill: #e2e8f0; font: 13px "Segoe UI", sans-serif; }
|
||||
.annotation { fill: #94a3b8; font: 12px "Segoe UI", sans-serif; }
|
||||
.arrow { fill: none; stroke: #38bdf8; stroke-width: 2.5; marker-end: url(#arrow); }
|
||||
</style>
|
||||
<marker id="arrow" markerWidth="12" markerHeight="12" refX="10" refY="6" orient="auto">
|
||||
<path d="M0,0 L12,6 L0,12 z" fill="#38bdf8" />
|
||||
</marker>
|
||||
</defs>
|
||||
|
||||
<rect class="cluster" x="30" y="60" width="260" height="320" rx="20" ry="20" />
|
||||
<text class="cluster-title" x="65" y="88">Authority Host</text>
|
||||
<g class="node">
|
||||
<rect x="50" y="110" width="220" height="48" rx="12" ry="12" />
|
||||
<text x="60" y="138">Configuration Loader</text>
|
||||
<text class="annotation" x="60" y="156">AuthorityPluginConfigurationLoader</text>
|
||||
</g>
|
||||
<g class="node">
|
||||
<rect x="50" y="175" width="220" height="52" rx="12" ry="12" />
|
||||
<text x="60" y="205">PluginHost registrar loader</text>
|
||||
<text class="annotation" x="60" y="223">IAuthorityPluginRegistrar</text>
|
||||
</g>
|
||||
<g class="node">
|
||||
<rect x="50" y="245" width="220" height="52" rx="12" ry="12" />
|
||||
<text x="60" y="275">Minimal API endpoints</text>
|
||||
<text class="annotation" x="60" y="293">/token, /device/code, /internal/*</text>
|
||||
</g>
|
||||
<g class="node">
|
||||
<rect x="50" y="315" width="220" height="52" rx="12" ry="12" />
|
||||
<text x="60" y="345">Structured telemetry</text>
|
||||
<text class="annotation" x="60" y="363">logs - metrics - traces</text>
|
||||
</g>
|
||||
|
||||
<rect class="cluster" x="350" y="40" width="260" height="360" rx="20" ry="20" />
|
||||
<text class="cluster-title" x="378" y="68">Standard plug-in</text>
|
||||
<g class="node">
|
||||
<rect x="370" y="90" width="220" height="50" rx="12" ry="12" />
|
||||
<text x="380" y="118">StandardPluginRegistrar</text>
|
||||
<text class="annotation" x="380" y="136">bind services & capabilities</text>
|
||||
</g>
|
||||
<g class="node">
|
||||
<rect x="370" y="155" width="220" height="50" rx="12" ry="12" />
|
||||
<text x="380" y="183">StandardPluginOptions</text>
|
||||
<text class="annotation" x="380" y="201">offline YAML configuration</text>
|
||||
</g>
|
||||
<g class="node">
|
||||
<rect x="370" y="220" width="220" height="50" rx="12" ry="12" />
|
||||
<text x="380" y="248">Capability metadata</text>
|
||||
<text class="annotation" x="380" y="266">password - bootstrap - clientProvisioning</text>
|
||||
</g>
|
||||
<g class="node">
|
||||
<rect x="370" y="285" width="220" height="48" rx="12" ry="12" />
|
||||
<text x="380" y="313">IIdentityProviderPlugin</text>
|
||||
<text class="annotation" x="380" y="331">password & bootstrap flows</text>
|
||||
</g>
|
||||
<g class="node">
|
||||
<rect x="370" y="345" width="220" height="48" rx="12" ry="12" />
|
||||
<text x="380" y="373">StandardUserCredentialStore</text>
|
||||
<text class="annotation" x="380" y="391">Mongo-backed state</text>
|
||||
</g>
|
||||
|
||||
<rect class="cluster" x="670" y="60" width="260" height="320" rx="20" ry="20" />
|
||||
<text class="cluster-title" x="715" y="88">External systems</text>
|
||||
<g class="node-small">
|
||||
<rect x="690" y="110" width="220" height="46" rx="12" ry="12" />
|
||||
<text x="700" y="138">Offline secrets bundle</text>
|
||||
<text class="annotation" x="700" y="156">keys - salts - bootstrap users</text>
|
||||
</g>
|
||||
<g class="node-small">
|
||||
<rect x="690" y="170" width="220" height="46" rx="12" ry="12" />
|
||||
<text x="700" y="198">MongoDB cluster</text>
|
||||
<text class="annotation" x="700" y="216">credential & lockout state</text>
|
||||
</g>
|
||||
<g class="node-small">
|
||||
<rect x="690" y="230" width="220" height="46" rx="12" ry="12" />
|
||||
<text x="700" y="258">Audit/event sink</text>
|
||||
<text class="annotation" x="700" y="276">authority.security.* stream</text>
|
||||
</g>
|
||||
<g class="node-small">
|
||||
<rect x="690" y="290" width="220" height="46" rx="12" ry="12" />
|
||||
<text x="700" y="318">Offline kit exports</text>
|
||||
<text class="annotation" x="700" y="336">docs/assets and config bundles</text>
|
||||
</g>
|
||||
|
||||
<path class="arrow" d="M270 134 H340" />
|
||||
<path class="arrow" d="M270 204 H340" />
|
||||
<path class="arrow" d="M270 256 H340" />
|
||||
<path class="arrow" d="M270 326 H340" />
|
||||
<path class="arrow" d="M470 140 L470 176" />
|
||||
<path class="arrow" d="M470 205 L470 236" />
|
||||
<path class="arrow" d="M470 270 L470 308" />
|
||||
<path class="arrow" d="M470 330 L470 362" />
|
||||
<path class="arrow" d="M592 120 C630 104, 650 104, 670 120" />
|
||||
<path class="arrow" d="M592 190 C630 180, 650 182, 670 196" />
|
||||
<path class="arrow" d="M592 248 C630 246, 650 246, 670 250" />
|
||||
<path class="arrow" d="M592 308 C630 308, 650 318, 670 326" />
|
||||
<path class="arrow" d="M592 360 L670 360" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.0 KiB |
Reference in New Issue
Block a user