-
Notifications
You must be signed in to change notification settings - Fork 266
Expand file tree
/
Copy pathjest-verify.json
More file actions
1 lines (1 loc) · 23.1 KB
/
Copy pathjest-verify.json
File metadata and controls
1 lines (1 loc) · 23.1 KB
1
{"numFailedTestSuites":0,"numFailedTests":0,"numPassedTestSuites":2,"numPassedTests":63,"numPendingTestSuites":0,"numPendingTests":0,"numRuntimeErrorTestSuites":0,"numTodoTests":0,"numTotalTestSuites":2,"numTotalTests":63,"openHandles":[],"snapshot":{"added":0,"didUpdate":false,"failure":false,"filesAdded":0,"filesRemoved":0,"filesRemovedList":[],"filesUnmatched":0,"filesUpdated":0,"matched":0,"total":0,"unchecked":0,"uncheckedKeysByFile":[],"unmatched":0,"updated":0},"startTime":1785229797370,"success":true,"testResults":[{"assertionResults":[{"ancestorTitles":["POST /api/quota/requests"],"duration":270,"failureDetails":[],"failureMessages":[],"fullName":"POST /api/quota/requests 201 - creates a pending request with required fields","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"201 - creates a pending request with required fields"},{"ancestorTitles":["POST /api/quota/requests"],"duration":17,"failureDetails":[],"failureMessages":[],"fullName":"POST /api/quota/requests 201 - creates a request with optional overrides","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"201 - creates a request with optional overrides"},{"ancestorTitles":["POST /api/quota/requests"],"duration":45,"failureDetails":[],"failureMessages":[],"fullName":"POST /api/quota/requests 201 - accepts all valid tier values","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"status":"passed","title":"201 - accepts all valid tier values"},{"ancestorTitles":["POST /api/quota/requests"],"duration":14,"failureDetails":[],"failureMessages":[],"fullName":"POST /api/quota/requests 201 - persists the request in the store","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"201 - persists the request in the store"},{"ancestorTitles":["POST /api/quota/requests"],"duration":135,"failureDetails":[],"failureMessages":[],"fullName":"POST /api/quota/requests 400 VALIDATION_ERROR - missing required fields","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"400 VALIDATION_ERROR - missing required fields"},{"ancestorTitles":["POST /api/quota/requests"],"duration":16,"failureDetails":[],"failureMessages":[],"fullName":"POST /api/quota/requests 400 VALIDATION_ERROR - invalid requested_tier enum","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"400 VALIDATION_ERROR - invalid requested_tier enum"},{"ancestorTitles":["POST /api/quota/requests"],"duration":17,"failureDetails":[],"failureMessages":[],"fullName":"POST /api/quota/requests 400 VALIDATION_ERROR - reason too short (< 10 chars)","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"400 VALIDATION_ERROR - reason too short (< 10 chars)"},{"ancestorTitles":["POST /api/quota/requests"],"duration":17,"failureDetails":[],"failureMessages":[],"fullName":"POST /api/quota/requests 400 VALIDATION_ERROR - reason too long (> 1000 chars)","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"400 VALIDATION_ERROR - reason too long (> 1000 chars)"},{"ancestorTitles":["POST /api/quota/requests"],"duration":20,"failureDetails":[],"failureMessages":[],"fullName":"POST /api/quota/requests 400 VALIDATION_ERROR - missing reason entirely","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"400 VALIDATION_ERROR - missing reason entirely"},{"ancestorTitles":["POST /api/quota/requests"],"duration":18,"failureDetails":[],"failureMessages":[],"fullName":"POST /api/quota/requests 400 VALIDATION_ERROR - missing requested_tier entirely","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"400 VALIDATION_ERROR - missing requested_tier entirely"},{"ancestorTitles":["POST /api/quota/requests"],"duration":15,"failureDetails":[],"failureMessages":[],"fullName":"POST /api/quota/requests 401 - no authentication provided","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"401 - no authentication provided"},{"ancestorTitles":["POST /api/quota/requests"],"duration":19,"failureDetails":[],"failureMessages":[],"fullName":"POST /api/quota/requests returns X-Request-Id header in response","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"returns X-Request-Id header in response"},{"ancestorTitles":["POST /api/quota/requests"],"duration":13,"failureDetails":[],"failureMessages":[],"fullName":"POST /api/quota/requests 201 - returns X-Correlation-Id header and body field when client sends correlation-id","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"201 - returns X-Correlation-Id header and body field when client sends correlation-id"},{"ancestorTitles":["POST /api/quota/requests"],"duration":14,"failureDetails":[],"failureMessages":[],"fullName":"POST /api/quota/requests 201 - generates X-Correlation-Id when header is absent","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"201 - generates X-Correlation-Id when header is absent"},{"ancestorTitles":["GET /api/quota/requests"],"duration":16,"failureDetails":[],"failureMessages":[],"fullName":"GET /api/quota/requests 200 - returns empty array when no requests exist","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"200 - returns empty array when no requests exist"},{"ancestorTitles":["GET /api/quota/requests"],"duration":61,"failureDetails":[],"failureMessages":[],"fullName":"GET /api/quota/requests 200 - returns only the callers own requests","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"200 - returns only the callers own requests"},{"ancestorTitles":["GET /api/quota/requests"],"duration":84,"failureDetails":[],"failureMessages":[],"fullName":"GET /api/quota/requests 200 - returns multiple requests for the same developer","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"200 - returns multiple requests for the same developer"},{"ancestorTitles":["GET /api/quota/requests"],"duration":12,"failureDetails":[],"failureMessages":[],"fullName":"GET /api/quota/requests 200 - filters by ?status=pending","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"200 - filters by ?status=pending"},{"ancestorTitles":["GET /api/quota/requests"],"duration":19,"failureDetails":[],"failureMessages":[],"fullName":"GET /api/quota/requests 200 - filters by ?status=approved","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"200 - filters by ?status=approved"},{"ancestorTitles":["GET /api/quota/requests"],"duration":10,"failureDetails":[],"failureMessages":[],"fullName":"GET /api/quota/requests 200 - filters by ?status=rejected","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"200 - filters by ?status=rejected"},{"ancestorTitles":["GET /api/quota/requests"],"duration":11,"failureDetails":[],"failureMessages":[],"fullName":"GET /api/quota/requests 400 VALIDATION_ERROR - invalid status query param","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"400 VALIDATION_ERROR - invalid status query param"},{"ancestorTitles":["GET /api/quota/requests"],"duration":36,"failureDetails":[],"failureMessages":[],"fullName":"GET /api/quota/requests 401 - no authentication provided (list)","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"401 - no authentication provided (list)"},{"ancestorTitles":["GET /api/quota/requests"],"duration":14,"failureDetails":[],"failureMessages":[],"fullName":"GET /api/quota/requests 200 - does not return other developers requests without status filter","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"200 - does not return other developers requests without status filter"},{"ancestorTitles":["GET /api/quota/requests"],"duration":22,"failureDetails":[],"failureMessages":[],"fullName":"GET /api/quota/requests 200 - returns X-Correlation-Id header and body field on list","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"200 - returns X-Correlation-Id header and body field on list"},{"ancestorTitles":["GET /api/quota/requests"],"duration":19,"failureDetails":[],"failureMessages":[],"fullName":"GET /api/quota/requests 400 - returns correlationId in validation error response","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"400 - returns correlationId in validation error response"},{"ancestorTitles":["GET /api/quota/requests/:id"],"duration":42,"failureDetails":[],"failureMessages":[],"fullName":"GET /api/quota/requests/:id 200 - returns the callers own request by ID","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"200 - returns the callers own request by ID"},{"ancestorTitles":["GET /api/quota/requests/:id"],"duration":19,"failureDetails":[],"failureMessages":[],"fullName":"GET /api/quota/requests/:id 200 - response includes all expected fields","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"200 - response includes all expected fields"},{"ancestorTitles":["GET /api/quota/requests/:id"],"duration":33,"failureDetails":[],"failureMessages":[],"fullName":"GET /api/quota/requests/:id 404 QUOTA_REQUEST_NOT_FOUND - nonexistent ID","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"404 QUOTA_REQUEST_NOT_FOUND - nonexistent ID"},{"ancestorTitles":["GET /api/quota/requests/:id"],"duration":20,"failureDetails":[],"failureMessages":[],"fullName":"GET /api/quota/requests/:id 404 QUOTA_REQUEST_NOT_FOUND - ID belongs to different developer (ownership guard)","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"404 QUOTA_REQUEST_NOT_FOUND - ID belongs to different developer (ownership guard)"},{"ancestorTitles":["GET /api/quota/requests/:id"],"duration":23,"failureDetails":[],"failureMessages":[],"fullName":"GET /api/quota/requests/:id 401 - no authentication provided (get by id)","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"401 - no authentication provided (get by id)"},{"ancestorTitles":["GET /api/quota/requests/:id"],"duration":10,"failureDetails":[],"failureMessages":[],"fullName":"GET /api/quota/requests/:id 200 - caller can access their own approved request","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"200 - caller can access their own approved request"},{"ancestorTitles":["GET /api/quota/requests/:id"],"duration":20,"failureDetails":[],"failureMessages":[],"fullName":"GET /api/quota/requests/:id 200 - returns X-Correlation-Id header and body field on fetch by id","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"200 - returns X-Correlation-Id header and body field on fetch by id"},{"ancestorTitles":["GET /api/quota/requests/:id"],"duration":16,"failureDetails":[],"failureMessages":[],"fullName":"GET /api/quota/requests/:id 200 - caller can access their own rejected request","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"200 - caller can access their own rejected request"},{"ancestorTitles":["GET /api/quotas/counts"],"duration":14,"failureDetails":[],"failureMessages":[],"fullName":"GET /api/quotas/counts returns X-Correlation-Id header and body field for counts requests","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"returns X-Correlation-Id header and body field for counts requests"},{"ancestorTitles":["GET /api/quotas/counts"],"duration":37,"failureDetails":[],"failureMessages":[],"fullName":"GET /api/quotas/counts returns a summary of the caller requests by status","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"returns a summary of the caller requests by status"},{"ancestorTitles":["Tracing spans for /api/quota/requests"],"duration":18,"failureDetails":[],"failureMessages":[],"fullName":"Tracing spans for /api/quota/requests creates a span named POST /api/quota/requests on create","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"creates a span named POST /api/quota/requests on create"},{"ancestorTitles":["Tracing spans for /api/quota/requests"],"duration":14,"failureDetails":[],"failureMessages":[],"fullName":"Tracing spans for /api/quota/requests sets requestId attribute on the span from x-request-id header","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"sets requestId attribute on the span from x-request-id header"},{"ancestorTitles":["Tracing spans for /api/quota/requests"],"duration":18,"failureDetails":[],"failureMessages":[],"fullName":"Tracing spans for /api/quota/requests creates a span named GET /api/quota/requests on list","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"creates a span named GET /api/quota/requests on list"},{"ancestorTitles":["Tracing spans for /api/quota/requests"],"duration":42,"failureDetails":[],"failureMessages":[],"fullName":"Tracing spans for /api/quota/requests creates a span named GET /api/quota/requests/:id on fetch by ID","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"creates a span named GET /api/quota/requests/:id on fetch by ID"},{"ancestorTitles":["Tracing spans for /api/quota/requests"],"duration":17,"failureDetails":[],"failureMessages":[],"fullName":"Tracing spans for /api/quota/requests records exception and marks span as ERROR when the handler throws","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"records exception and marks span as ERROR when the handler throws"},{"ancestorTitles":["Tracing spans for /api/quota/requests"],"duration":30,"failureDetails":[],"failureMessages":[],"fullName":"Tracing spans for /api/quota/requests records exception and marks span as ERROR on ownership guard (cross-user access)","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"records exception and marks span as ERROR on ownership guard (cross-user access)"},{"ancestorTitles":["Tracing spans for /api/quota/requests"],"duration":17,"failureDetails":[],"failureMessages":[],"fullName":"Tracing spans for /api/quota/requests ends every span in the finally block even on success","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"ends every span in the finally block even on success"},{"ancestorTitles":["Tracing spans for /api/quota/requests"],"duration":19,"failureDetails":[],"failureMessages":[],"fullName":"Tracing spans for /api/quota/requests ends every span in the finally block even on error","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"ends every span in the finally block even on error"},{"ancestorTitles":["X-Correlation-Id propagation on /api/quota/requests"],"duration":75,"failureDetails":[],"failureMessages":[],"fullName":"X-Correlation-Id propagation on /api/quota/requests returns X-Correlation-Id header in POST response when client sends one","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"returns X-Correlation-Id header in POST response when client sends one"},{"ancestorTitles":["X-Correlation-Id propagation on /api/quota/requests"],"duration":15,"failureDetails":[],"failureMessages":[],"fullName":"X-Correlation-Id propagation on /api/quota/requests returns X-Correlation-Id header in GET list response when client sends one","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"returns X-Correlation-Id header in GET list response when client sends one"},{"ancestorTitles":["X-Correlation-Id propagation on /api/quota/requests"],"duration":197,"failureDetails":[],"failureMessages":[],"fullName":"X-Correlation-Id propagation on /api/quota/requests returns X-Correlation-Id header in GET /:id response when client sends one","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"returns X-Correlation-Id header in GET /:id response when client sends one"},{"ancestorTitles":["X-Correlation-Id propagation on /api/quota/requests"],"duration":16,"failureDetails":[],"failureMessages":[],"fullName":"X-Correlation-Id propagation on /api/quota/requests generates X-Correlation-Id when client does not send one","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"generates X-Correlation-Id when client does not send one"},{"ancestorTitles":["X-Correlation-Id propagation on /api/quota/requests"],"duration":8,"failureDetails":[],"failureMessages":[],"fullName":"X-Correlation-Id propagation on /api/quota/requests falls back to x-request-id when x-correlation-id is absent","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"falls back to x-request-id when x-correlation-id is absent"},{"ancestorTitles":["X-Correlation-Id propagation on /api/quota/requests"],"duration":56,"failureDetails":[],"failureMessages":[],"fullName":"X-Correlation-Id propagation on /api/quota/requests sanitises incoming x-correlation-id before echoing","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"sanitises incoming x-correlation-id before echoing"},{"ancestorTitles":["X-Correlation-Id propagation on /api/quota/requests"],"duration":71,"failureDetails":[],"failureMessages":[],"fullName":"X-Correlation-Id propagation on /api/quota/requests propagates x-correlation-id through POST then GET /:id flow","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"propagates x-correlation-id through POST then GET /:id flow"}],"endTime":1785229805216,"message":"","name":"C:\\Users\\Documents\\wave2\\Callora-Backend\\src\\routes\\quota\\requests.test.ts","startTime":1785229798372,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["Webhook Dispatcher"],"duration":13,"failureDetails":[],"failureMessages":[],"fullName":"Webhook Dispatcher successfully dispatches webhook on first attempt","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"successfully dispatches webhook on first attempt"},{"ancestorTitles":["Webhook Dispatcher"],"duration":3,"failureDetails":[],"failureMessages":[],"fullName":"Webhook Dispatcher propagates the active request id to outbound webhook headers","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"propagates the active request id to outbound webhook headers"},{"ancestorTitles":["Webhook Dispatcher"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"Webhook Dispatcher propagates the active correlation id to outbound webhook headers","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"propagates the active correlation id to outbound webhook headers"},{"ancestorTitles":["Webhook Dispatcher"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Webhook Dispatcher omits X-Request-Id header when no request context is set","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"omits X-Request-Id header when no request context is set"},{"ancestorTitles":["Webhook Dispatcher"],"duration":17,"failureDetails":[],"failureMessages":[],"fullName":"Webhook Dispatcher includes all expected webhook headers on dispatch","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"status":"passed","title":"includes all expected webhook headers on dispatch"},{"ancestorTitles":["Webhook Dispatcher"],"duration":4,"failureDetails":[],"failureMessages":[],"fullName":"Webhook Dispatcher retries on non-2xx response and uses same idempotency key","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"retries on non-2xx response and uses same idempotency key"},{"ancestorTitles":["Webhook Dispatcher"],"duration":11,"failureDetails":[],"failureMessages":[],"fullName":"Webhook Dispatcher exhausts retries and propagates last error","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"exhausts retries and propagates last error"},{"ancestorTitles":["Webhook Dispatcher"],"duration":26,"failureDetails":[],"failureMessages":[],"fullName":"Webhook Dispatcher does not start new deliveries after shutdown begins","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"does not start new deliveries after shutdown begins"},{"ancestorTitles":["Webhook Dispatcher"],"duration":3,"failureDetails":[],"failureMessages":[],"fullName":"Webhook Dispatcher fans out settlement_completed payloads to every registered endpoint","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"fans out settlement_completed payloads to every registered endpoint"},{"ancestorTitles":["Webhook Dispatcher","per-subscription retry policy"],"duration":3,"failureDetails":[],"failureMessages":[],"fullName":"Webhook Dispatcher per-subscription retry policy uses custom maxRetries override when configured","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"uses custom maxRetries override when configured"},{"ancestorTitles":["Webhook Dispatcher","per-subscription retry policy"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"Webhook Dispatcher per-subscription retry policy uses custom baseDelayMs override for exponential backoff","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"uses custom baseDelayMs override for exponential backoff"},{"ancestorTitles":["Webhook Dispatcher","per-subscription retry policy"],"duration":4,"failureDetails":[],"failureMessages":[],"fullName":"Webhook Dispatcher per-subscription retry policy respects maxRetries of 0 (no retry attempts)","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"respects maxRetries of 0 (no retry attempts)"},{"ancestorTitles":["Webhook Dispatcher","per-subscription retry policy"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"Webhook Dispatcher per-subscription retry policy uses default retry policy when subscription has no override","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"uses default retry policy when subscription has no override"}],"endTime":1785229806534,"message":"","name":"C:\\Users\\Documents\\wave2\\Callora-Backend\\src\\webhooks\\webhook.dispatcher.test.ts","startTime":1785229805898,"status":"passed","summary":""}],"wasInterrupted":false}