Skip to content

Add Real Object-Store Deletion Smoke Coverage #159

Description

@TheSilkky

Add Real Object-Store Deletion Smoke Coverage

Priority

P2

Type

testing

Labels

Suggested GitHub labels:

  • backlog
  • go
  • deployment
  • testing

Branch scope

  • Current branch: develop
  • Current HEAD: a5a29a9645195e149ed0c5d75cbffa5172dd9a7d
  • Target branch, if known: develop
  • Reviewed branch/ref, if applicable: not applicable
  • Reviewed commit SHA, if applicable: not applicable
  • Target release/version, if applicable: not applicable
  • Scope classification: follow-up-after-merge
  • Scope note: This draft was generated from the branch above. Revalidate against the target branch before creating or closing public GitHub issues if the branch has moved or has not yet merged.

Summary

Add optional smoke coverage that proves incident deletion removes committed encrypted blobs through a real S3-compatible object-store path while preserving public fail-closed behavior.

Context

The backend implements optional S3-compatible encrypted blob storage and private incident deletion with retryable blob deletion. docs/incident-deletion-retention-enforcement.md lists expanded S3-compatible deletion smoke coverage with real object-store tests as remaining test work. Existing unit tests cover S3 blob-store semantics through a fake client, but a real object-store smoke path can catch integration issues around conditional writes, object lookup, deletion, and bundle fail-closed behavior.

Proposed change

Add an optional local smoke test or script using an existing disposable MinIO/compose fixture or a one-off loopback-only object-store container. The smoke should upload encrypted chunks, verify the object exists, request deletion through the private API, run or wait for deletion processing, verify the object is gone or confirmed absent, and verify public viewer routes fail closed for the deleted incident.

Keep this opt-in and local. Do not require object-store services for the default go test ./... path.

Acceptance criteria

  • Smoke coverage runs only when explicitly invoked or when required test environment variables are set.
  • The test verifies committed encrypted objects are deleted through server-controlled stored paths.
  • Public viewer routes return the generic fail-closed shape after deletion and do not reveal deletion state.
  • Output avoids credentials, bucket URLs, object keys, stored paths, raw tokens, request bodies, uploaded bytes, plaintext, raw keys, and private deployment details.
  • Documentation explains how to run the smoke test locally without implying production readiness.

Tests / validation

  • gofmt -w ./cmd ./internal ./migrations, if Go files change
  • go test ./..., if code changes
  • go vet ./..., if code changes or CI/testing changes
  • simulator smoke test, if relevant
  • optional S3-compatible deletion smoke test
  • docs updated, if relevant
  • revalidate on target branch before public issue creation, if branch-scoped

Out of scope

  • Adding new cloud services or provider-specific deployment automation.
  • Requiring Docker Compose or MinIO for the default test suite.
  • Exposing object keys, bucket URLs, private endpoints, or stored paths in logs or public responses.
  • Backend decryption, key custody, or playable media export.

Notes

Relevant docs: docs/incident-deletion-retention-enforcement.md, docs/configuration.md, docs/deployment.md, compose/README.md.

Related completed issues: #94 and #130.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions