Skip to content

test(coverage): provision handlers 75→80% via bufconn fake provisioner#156

Merged
mastermanas805 merged 1 commit into
masterfrom
coverage/api-handlers-resource-bufconn-95
May 22, 2026
Merged

test(coverage): provision handlers 75→80% via bufconn fake provisioner#156
mastermanas805 merged 1 commit into
masterfrom
coverage/api-handlers-resource-bufconn-95

Conversation

@mastermanas805
Copy link
Copy Markdown
Member

Summary

  • Adds a minimal, production-safe seam provisioner.NewClientFromConn(conn, secret) so handler tests can inject a bufconn-backed *provisioner.Client. This lets the provClient != nil arms of provisionDB/provisionCache/provisionNoSQL/provisionQueue actually execute (they previously 503'd in tests with no gRPC seam, capping coverage at ~75%).
  • New tests stand up an in-process fake ProvisionerServiceServer on a google.golang.org/grpc/test/bufconn listener and drive: gRPC provision success (anon + authenticated, tier/limits echo, env default, dedup), gRPC error → 503 (+soft-delete), persist failure → 503 + best-effort DeprovisionResource (the deprovisionBestEffort non-nil path, previously 0%), dedicated tier-gate + growth success, single-twin (dev env) + bulk-twin via gRPC, queue count cap, cross-service 429, invalid-team 400, decrypt-fail dedup, resource Delete deprovision-via-gRPC, and webhook authenticated/dedup/cross-service branches.
  • Production behaviour unchanged: NewClientFromConn is the only new export and merely wraps an already-dialed conn; NewClient still owns the dial in prod.

Coverage (statement-level, target files)

Aggregate 74.9% → 79.8%. Per-file: db 87.4%, cache 80.5%, nosql 81.9%, queue 81.6%, webhook 78.8%, provision_helper 80.5%, resource 76.4%, resource_metrics 92.5%, storage 70.0%.

Note: the ≥95% goal was not fully reached. The remaining gap is concentrated in storage.go broker-mode/presign (needs a PrefixScopedKeys=false provider stub) and resource.go provider faults — out of scope for the bufconn provision-arm focus and tracked as follow-up.

Test plan

  • CI gate green (build + vet + go test ./... -short -p 1)
  • go build ./... + go vet ./... clean
  • go test ./internal/handlers ./internal/provisioner -p 1 green on a fresh test DB

🤖 Generated with Claude Code

…ufconn fake provisioner

The provision happy-paths (provisionDB/provisionCache/provisionNoSQL/
provisionQueue) call a concrete *provisioner.Client over gRPC with no test
seam, so they returned 503 in tests and stayed uncovered (the prior agent
maxed at ~75%). This adds a minimal, production-safe seam —
provisioner.NewClientFromConn(conn, secret) — that builds a Client around an
already-dialed grpc.ClientConn. Tests stand up an in-process fake
ProvisionerServiceServer on a google.golang.org/grpc/test/bufconn listener and
inject it into the db/cache/nosql/queue handlers, so the `provClient != nil`
arms actually execute.

New coverage:
- gRPC provision success (anon + authenticated) for db/cache/nosql/queue,
  tier + limits echo, env default, dedup
- gRPC error -> 503 provision_failed (+ soft-delete) on every arm
- persist failure (bad AES key) -> 503 + best-effort gRPC DeprovisionResource
  (the deprovisionBestEffort non-nil-client path, previously 0%)
- dedicated tier-gate (402) + dedicated growth success
- single-twin (dev env) + bulk-twin via ProvisionForTwinCore over gRPC
- queue per-tier count cap, cross-service daily-cap 429, invalid-team 400
- anon dedup with corrupted ciphertext (decrypt-fail fall-through)
- resource Delete deprovision-via-gRPC + cross-team/bad-uuid/not-found
- webhook authenticated, anon-dedup, cross-service branches

Production behaviour is unchanged: NewClientFromConn is the only new export
and merely wraps an existing conn (NewClient still owns the dial in prod).

Aggregate over the resource files: 74.9% -> 79.8%. Per-file:
db 87.4%, cache 80.5%, nosql 81.9%, queue 81.6%, webhook 78.8%,
provision_helper 80.5% (storage/resource broker + deep-fault branches remain).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@mastermanas805 mastermanas805 merged commit 81cb3f7 into master May 22, 2026
10 of 11 checks passed
@mastermanas805 mastermanas805 deleted the coverage/api-handlers-resource-bufconn-95 branch May 22, 2026 03:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant