Files
cleveragents-core/robot/audit_service_wiring.robot
T
CoreRasurae 97c1007bb5
CI / push-validation (pull_request) Successful in 48s
CI / build (pull_request) Successful in 1m17s
CI / helm (pull_request) Successful in 1m0s
CI / lint (pull_request) Successful in 1m54s
CI / quality (pull_request) Successful in 1m55s
CI / security (pull_request) Successful in 2m5s
CI / typecheck (pull_request) Successful in 2m4s
CI / integration_tests (pull_request) Successful in 5m1s
CI / unit_tests (pull_request) Successful in 5m10s
CI / docker (pull_request) Successful in 1m51s
CI / coverage (pull_request) Successful in 12m47s
CI / status-check (pull_request) Successful in 8s
CI / benchmark-publish (push) Has started running
CI / benchmark-regression (push) Failing after 1m15s
CI / typecheck (push) Has started running
CI / security (push) Has started running
CI / quality (push) Has started running
CI / integration_tests (push) Has started running
CI / unit_tests (push) Has started running
CI / e2e_tests (push) Has started running
CI / lint (push) Successful in 56s
CI / helm (push) Successful in 53s
CI / push-validation (push) Successful in 54s
CI / build (push) Successful in 1m24s
CI / coverage (push) Blocked by required conditions
CI / docker (push) Blocked by required conditions
CI / status-check (push) Blocked by required conditions
feat(events): wire domain services to emit missing EventBus events
Add TokenAuthMiddleware to emit AUTH_SUCCESS/AUTH_FAILURE with spec-aligned audit details and wire it through the DI container using server.token resolution.

Add Behave and Robot coverage for auth event emission and end-to-end audit persistence, and update audit subscriber producer notes and changelog.

ISSUES CLOSED: #714
2026-05-15 22:19:57 +01:00

99 lines
4.3 KiB
Plaintext

*** Settings ***
Documentation Integration test for AuditService EventBus wiring
Resource ${CURDIR}/common.resource
Suite Setup Setup Test Environment With Database Isolation
Suite Teardown Cleanup Test Environment
*** Variables ***
${HELPER} ${CURDIR}/helper_audit_wiring.py
*** Test Cases ***
Audit Subscriber Records Events
[Documentation] Verify AuditEventSubscriber records events from EventBus
[Tags] observability audit
${result}= Run Process ${PYTHON} ${HELPER} record_events
... cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} AUDIT_OK
Audit Subscriber Redacts Sensitive Data
[Documentation] Verify sensitive data is redacted in audit entries
[Tags] observability audit security
${result}= Run Process ${PYTHON} ${HELPER} redact_secrets
... cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} REDACT_OK
Audit Subscriber Ignores Non-Security Events
[Documentation] Verify non-security events are not recorded
[Tags] observability audit
${result}= Run Process ${PYTHON} ${HELPER} ignore_non_security
... cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} FILTER_OK
Container Wires Audit Subscriber
[Documentation] Verify DI container registers AuditEventSubscriber
[Tags] observability audit di
${result}= Run Process ${PYTHON} ${HELPER} container_wiring
... cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} CONTAINER_OK
E2E Plan Lifecycle Through Audit Pipeline
[Documentation] End-to-end: PlanLifecycleService cancel_plan -> EventBus -> AuditEventSubscriber -> AuditService DB
[Tags] observability audit e2e
${result}= Run Process ${PYTHON} ${HELPER} e2e_plan_lifecycle
... cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} E2E_OK
User Identity Field Propagates Through Audit Pipeline
[Documentation] DomainEvent.user_identity propagates via AuditEventSubscriber to AuditService DB entry
[Tags] observability audit identity
${result}= Run Process ${PYTHON} ${HELPER} user_identity_field
... cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} IDENTITY_FIELD_OK
User Identity Fallback From Details
[Documentation] Backward compat: user_identity extracted from details when field is None
[Tags] observability audit identity
${result}= Run Process ${PYTHON} ${HELPER} user_identity_details_fallback
... cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} IDENTITY_FALLBACK_OK
User Identity Field Precedence Over Details
[Documentation] DomainEvent.user_identity field takes precedence over details dict
[Tags] observability audit identity
${result}= Run Process ${PYTHON} ${HELPER} user_identity_field_precedence
... cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} IDENTITY_PRECEDENCE_OK
Auth Middleware Emits Audit Events
[Documentation] End-to-end: TokenAuthMiddleware emits AUTH_SUCCESS/AUTH_FAILURE through audit pipeline
[Tags] observability audit auth
${result}= Run Process ${PYTHON} ${HELPER} auth_middleware_pipeline
... cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} AUTH_PIPELINE_OK