This project has:
- Handler-level unit tests (fast route/response checks)
- Full HTTP E2E flow test (what frontend consumes)
make testmake test runs API unit tests.
Run E2E test:
E2E_BASE_URL="https://<your-api-domain>" make test-e2eLocal SAM example:
E2E_BASE_URL="http://127.0.0.1:3000" make test-e2eIf E2E_BASE_URL is not set, E2E test is skipped.
For local SAM, ensure the Lambda environment points to a reachable DynamoDB table.
POST /links->api/tests/handlers/link-handler.test.tsGET /links/{shortCode}->api/tests/handlers/link-handler.test.tsPATCH /links/{shortCode}->api/tests/handlers/link-handler.test.tsDELETE /links/{shortCode}->api/tests/handlers/link-handler.test.tsGET /{shortCode}->api/tests/handlers/redirect.test.tsGET /links/{shortCode}/stats->api/tests/handlers/stats.test.tsGET /links/{shortCode}/stats/daily->api/tests/handlers/stats.test.ts
api/tests/e2e/url-shortener.e2e.test.tsruns full API flow:POST /linksGET /links/{shortCode}GET /{shortCode}?password=...GET /links/{shortCode}/statsGET /links/{shortCode}/stats/dailyPATCH /links/{shortCode}GET /{shortCode}DELETE /links/{shortCode}GET /links/{shortCode}(expects404after delete)
- Unit tests are handler-level and mock repository/security dependencies.
- E2E test is real HTTP traffic against
E2E_BASE_URL.