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
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
99 lines
4.3 KiB
Plaintext
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
|