codeflash-internal/tiles/codeflash-internal-rules/evals/scenario-2/task.md
2026-02-14 22:25:30 -05:00

1.8 KiB

Scenario 2: Add a Stripe Webhook Endpoint to cf-api

Context

The codeflash-internal monorepo has a cf-api Express server at js/cf-api/ that acts as the middleware layer between the VS Code Extension and the aiservice backend. The team needs to add a new Stripe webhook endpoint that processes subscription change events.

Key architectural constraints:

  • cf-api is an Express app running on port 3001
  • Webhook routes MUST be registered before the body parser middleware (raw body needed for Stripe signature verification)
  • instrument.ts must be imported first in the entry point (Sentry)
  • Tests use dependency injection: setXxxDependencies() / resetXxxDependencies()
  • Prisma schema is in common/prisma/schema.prisma, shared by cf-api and cf-webapp
  • common is CommonJS -- use require-style imports

Task

  1. Create a new webhook route handler at js/cf-api/routes/stripeWebhook.ts that:

    • Exports a router that handles POST /webhooks/stripe
    • Uses the raw request body for Stripe signature verification
    • Processes customer.subscription.updated and customer.subscription.deleted events
    • Updates the subscription status in the database via Prisma
  2. Register the webhook route in the Express app BEFORE the body parser middleware (this is critical for signature verification)

  3. Create a test file at js/cf-api/__tests__/stripeWebhook.test.ts that:

    • Uses the dependency injection pattern (setStripeDependencies() / resetStripeDependencies())
    • Mocks the Stripe signature verification
    • Tests both event types

Expected Outputs

  • js/cf-api/routes/stripeWebhook.ts -- route handler with raw body parsing
  • Updated Express app setup showing webhook route registered before body parser
  • js/cf-api/__tests__/stripeWebhook.test.ts -- tests using DI pattern
  • Any dependency injection setup (e.g., setStripeDependencies())