Files
2026-05-27 23:29:53 +01:00

1.9 KiB

Capability Spec Delta: api-tenant-provider-memory (foundation-fix-gap-2-tenant-chain)

Package: @suaveplan/api-tenant-provider-memory Status: PROPOSED

MODIFIED Requirements

Requirement: Boundary validation through tenantRecordSchema

Every record entering the backing store SHALL be parsed through tenantRecordSchema from @suaveplan/api-tenant-provider/tenant-record. As of the foundation-fix-gap-2-tenant-chain change, tenantRecordSchema requires a non-empty slug and accepts an optional metadata bag — callers MUST supply slug on every record entering the store. Schema failures (including missing/empty slug) raise TENANT_PROVIDER_MEMORY.INVALID_RECORD.

Scenario: seed with malformed record is rejected

  • WHEN createMemoryTenantProvider({ tenants: [{ id: "", slug: "x", status: "active", ... }] }) is called
  • THEN the call throws TenantProviderMemoryError with code TENANT_PROVIDER_MEMORY.INVALID_RECORD

Scenario: seed with missing slug is rejected

  • WHEN createMemoryTenantProvider({ tenants: [{ id: "t1", status: "active", createdAt }] }) (no slug) is called
  • THEN the call throws TenantProviderMemoryError with code TENANT_PROVIDER_MEMORY.INVALID_RECORD

Scenario: add() validates input

  • WHEN add({ id: "", slug: "x", ... }) is called with an empty id
  • THEN the call throws TenantProviderMemoryError with code TENANT_PROVIDER_MEMORY.INVALID_RECORD

Scenario: invalid options shape rejected

  • WHEN createMemoryTenantProvider({ tenants: "not-an-array" }) is called
  • THEN the call throws TenantProviderMemoryError with code TENANT_PROVIDER_MEMORY.INVALID_RECORD

Verified by: src/provider/provider.test.ts::"rejects malformed seed record (INVALID_RECORD)" AND src/provider/provider.test.ts::"add rejects malformed record (INVALID_RECORD)" AND src/provider/provider.test.ts::"rejects invalid options shape".