feat(cra): CRA Readiness Check lead-magnet on /sdk/cra (Track A)
Low-friction, stateless readiness check (no project/DB): business-scope answers (internet / parameter app / remote maintenance / updates / firmware / personal data / critical infra) -> Annex III/IV classification (reuses _classify) + a high-level guideline grouped Code / Prozess / Dokumentation (via Annex I evidence_type) + conformity path + deadlines + rough effort + the "we implement" hook and a CTA into the existing project workflow. Endpoint POST /api/v1/cra/ readiness. Reuse + reframe of the existing CRA module — no duplicate questionnaire. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
"""Stateless CRA readiness check: scope answers -> classification + grouped guideline."""
|
||||
from fastapi import FastAPI
|
||||
from fastapi.testclient import TestClient
|
||||
from compliance.api.cra_assess_routes import router
|
||||
|
||||
app = FastAPI()
|
||||
app.include_router(router, prefix="/api")
|
||||
client = TestClient(app)
|
||||
|
||||
|
||||
def test_connected_product_in_scope_with_grouped_guideline():
|
||||
r = client.post("/api/v1/cra/readiness", json={
|
||||
"intended_use": "App fuer Industrieanlagen", "connected_to_internet": True, "has_software_updates": True})
|
||||
assert r.status_code == 200
|
||||
d = r.json()
|
||||
assert d["in_scope"] is True
|
||||
assert d["counts"]["code"] > 0 and d["counts"]["process"] > 0 and d["counts"]["document"] > 0
|
||||
assert d["total_effort_days"] > 0
|
||||
assert len(d["deadlines"]) >= 1
|
||||
|
||||
|
||||
def test_remote_maintenance_implies_connectivity():
|
||||
d = client.post("/api/v1/cra/readiness", json={"intended_use": "x", "remote_maintenance": True}).json()
|
||||
assert d["in_scope"] is True
|
||||
|
||||
|
||||
def test_no_digital_element_not_in_scope():
|
||||
d = client.post("/api/v1/cra/readiness", json={"intended_use": ""}).json()
|
||||
assert d["in_scope"] is False
|
||||
assert d["classification"] == "NOT_IN_SCOPE"
|
||||
assert d["counts"]["code"] == 0
|
||||
Reference in New Issue
Block a user