CI / DMS Security-Test-Gate (AC5, Merge-Gate) (push) Canceled after 0s
CI / Connect Security-Test-Gate (QA-01 AC4, Merge-Gate) (push) Canceled after 0s
CI / DMS-Modul Supply-Chain-Scan (govulncheck) (pull_request) Canceled after 0s
CI / Web (dms-browser) (pull_request) Canceled after 0s
CI / Web (pdf-viewer) (pull_request) Canceled after 0s
CI / Web (shl) (pull_request) Canceled after 0s
Core-Pflichttest-Gate / pflichttest-gate (pull_request) Canceled after 0s
RBAC-Rollenhierarchie-Pflichtgate / rbac-policy-invariant (pull_request) Canceled after 0s
Workflow-Schnittstellen-Vertragstests / contract-tests (pull_request) Canceled after 0s
CI / Core-Modul (Build/Vet/Test) (push) Canceled after 0s
CI / DMS-Modul Supply-Chain-Scan (govulncheck) (push) Canceled after 0s
CI / Web (dms-browser) (push) Canceled after 0s
CI / Web (pdf-viewer) (push) Canceled after 0s
CI / Web (shl) (push) Canceled after 0s
Supply-Chain-Scan (Go) / govulncheck (push) Canceled after 0s
Workflow-Schnittstellen-Vertragstests / contract-tests (push) Canceled after 0s
CI / Core-Modul (Build/Vet/Test) (pull_request) Canceled after 0s
CI / DMS Security-Test-Gate (AC5, Merge-Gate) (pull_request) Canceled after 0s
CI / Connect Security-Test-Gate (QA-01 AC4, Merge-Gate) (pull_request) Canceled after 0s
Core-Schnittstellen-Vertragstests / contract-tests (pull_request) Canceled after 0s
Supply-Chain-Scan (Go) / govulncheck (pull_request) Canceled after 0s
Supply-Chain-Scan (npm) / npm-audit (pull_request) Canceled after 0s
CI / DMS-Modul (Lint/Build/Test/Coverage/Artefakt) (push) Canceled after 0s
CI / DMS-Modul (Lint/Build/Test/Coverage/Artefakt) (pull_request) Canceled after 0s
CI / Web-Barrierefreiheitspruefung (axe, Tastatur, Reflow, Textabstaende) (push) Canceled after 0s
CI / Web-Barrierefreiheitspruefung (axe, Tastatur, Reflow, Textabstaende) (pull_request) Canceled after 0s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
31 lines
1.2 KiB
Go
31 lines
1.2 KiB
Go
// Package contracttest implementiert Workflow QA-06: Vertragstests fuer die
|
|
// beiden von DMS/Mail konsumierten Workflow-Schnittstellen -- ENG-02 (Push:
|
|
// Modul-Adapter-Registrierung) und VOR-04 (Pull: Rueckkanal-API). Jeder Test
|
|
// prueft die TATSAECHLICHE Antwort einer echten Workflow-Komponente gegen
|
|
// ihr dokumentiertes Schema -- eine entfernte oder umbenannte Pflichteigenschaft
|
|
// laesst den jeweiligen Test fehlschlagen, BEVOR sie ein konsumierendes Modul
|
|
// bricht. Gleiches Muster wie Archive QA-06 (archive/internal/contracttest,
|
|
// RET-05), hier fuer zwei getrennte Richtungen statt einer gespiegelt.
|
|
package contracttest
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
)
|
|
|
|
// RequireJSONFields dekodiert data als JSON-Objekt und prueft, dass ALLE
|
|
// angegebenen Top-Level-Schluessel vorhanden sind. Liefert die fehlenden
|
|
// Schluessel zurueck -- leer bedeutet: Vertrag eingehalten.
|
|
func RequireJSONFields(data []byte, required []string) (missing []string, err error) {
|
|
var decoded map[string]any
|
|
if err := json.Unmarshal(data, &decoded); err != nil {
|
|
return nil, fmt.Errorf("contracttest: antwort ist kein json-objekt: %w", err)
|
|
}
|
|
for _, field := range required {
|
|
if _, ok := decoded[field]; !ok {
|
|
missing = append(missing, field)
|
|
}
|
|
}
|
|
return missing, nil
|
|
}
|