Vitest Results
Summary Pass
- Suites
- 30
- Tests
- 164
- Passed
- 164
- Failed
- 0
- Skipped
- 0
/home/runner/work/Cleo-Kick/Cleo-Kick/tests/chat.test.ts
Status: passed
Duration: 39 ms
Total: 16
-
passed
chatHandler emits overlay events even when broadcaster auth is missing
-
passed
chatHandler falls back to broadcaster info when sender is missing
-
passed
chatHandler defaults author to empty string when no sender or broadcaster username
-
passed
chatHandler does not emit overlay events for blank messages
-
passed
chatHandler continues when overlay socket is unavailable
-
passed
chatHandler reports overlay skip with unknown sender when usernames are missing
-
passed
chatHandler uses sender avatar when lookup fails
-
passed
chatHandler uses fallback avatar when lookup throws
-
passed
chatHandler uses sender avatar when lookup returns blank avatar
-
passed
chatHandler returns 404 when broadcaster is not registered for ping command
-
passed
chatHandler ping command returns API success response
-
passed
chatHandler ping command surfaces API errors
-
passed
chatHandler returns success when command prefix has no command
-
passed
chatHandler ignores events with missing content
-
passed
chatHandler ignores unknown commands
-
passed
chatHandler supplies relay overrides when env bindings exist
/home/runner/work/Cleo-Kick/Cleo-Kick/tests/events.test.ts
Status: passed
Duration: 29 ms
Total: 20
-
passed
followEvent returns 404 when broadcaster is not registered
-
passed
followEvent thanks the follower when a broadcaster is registered
-
passed
followEvent propagates chat failure responses
-
passed
livestreamStatusUpdate returns acknowledgement when broadcaster missing
-
passed
livestreamStatusUpdate notifies chat when livestream status changes
-
passed
livestreamStatusUpdate surfaces livestream send failures
-
passed
subscription events newSubscriber thanks the subscriber
-
passed
subscription events newSubscriber returns 404 when broadcaster missing
-
passed
subscription events newSubscriber returns failed send status
-
passed
subscription events giftedSubs handles failed sends with same response
-
passed
subscription events giftedSubs acknowledges successful gifts
-
passed
subscription events giftedSubs returns 404 when broadcaster missing
-
passed
subscription events renewedSub acknowledges renewal with duration
-
passed
subscription events renewedSub returns 404 when broadcaster missing
-
passed
subscription events renewedSub propagates failed send
-
passed
kicksGifted includes thank-you message with gift message when present
-
passed
kicksGifted omits gift message when message text is empty
-
passed
kicksGifted omits gift message when message is missing
-
passed
kicksGifted returns 404 when broadcaster missing
-
passed
kicksGifted propagates failed kick gift messages
/home/runner/work/Cleo-Kick/Cleo-Kick/tests/index.test.ts
Status: passed
Duration: 572 ms
Total: 23
-
passed
index routes GET / returns error when dashboard url missing
-
passed
index routes GET / redirects to configured dashboard
-
passed
index routes POST /webhook returns success when validation passes
-
passed
index routes POST /webhook handles livestream status updates
-
passed
index routes POST /webhook handles new subscriptions
-
passed
index routes POST /webhook handles gifted subscriptions
-
passed
index routes POST /webhook handles subscription renewals
-
passed
index routes POST /webhook handles gifted kicks
-
passed
index routes POST /webhook routes chat messages
-
passed
index routes POST /webhook returns 422 for unknown event types
-
passed
index routes POST /webhook rejects requests with bad signatures
-
passed
index routes POST /webhook records validation errors when DB configured
-
passed
index routes POST /webhook reports unexpected errors
-
passed
index routes GET /health responds with ok
-
passed
index routes POST /debug/test-email returns 400 when developer email missing
-
passed
index routes POST /debug/test-email sends a test message
-
passed
index routes POST /debug/test-email rejects invalid JSON payloads
-
passed
index routes POST /debug/test-email falls back to default message and merges context
-
passed
index routes POST /debug/test-email ignores non-object context payloads
-
passed
index routes POST /debug/test-email treats null context as empty
-
passed
index routes POST /debug/test-email skips JSON parsing when header missing
-
passed
index routes POST /debug/test-email defaults message when missing
-
passed
index routes default index export initialises the app
/home/runner/work/Cleo-Kick/Cleo-Kick/tests/logError.test.ts
Status: passed
Duration: 36 ms
Total: 9
-
passed
recordError warns once when database url is missing and still notifies developers
-
passed
recordError persists error logs when database configuration is present
-
passed
recordError logs persistence failures but continues processing
-
passed
recordError forwards errors to Logtail when configured
-
passed
recordError logs Logtail failures but continues
-
passed
recordError logs notification failures
-
passed
recordError stores provided stack traces and ignores non-numeric statuses for Logtail
-
passed
recordError logs Logtail initialisation failures only once
-
passed
recordError reuses existing Logtail client when token matches
/home/runner/work/Cleo-Kick/Cleo-Kick/tests/messages.test.ts
Status: passed
Duration: 6 ms
Total: 2
-
passed
sendMessage returns chat response when request succeeds
-
passed
sendMessage returns API error when request fails
/home/runner/work/Cleo-Kick/Cleo-Kick/tests/middleware.test.ts
Status: passed
Duration: 189 ms
Total: 46
-
passed
createKickWebhookValidationMiddleware stores validated webhook on context and calls next handler
-
passed
createKickWebhookValidationMiddleware handles signature errors by returning 403 and logging once
-
passed
createKickWebhookValidationMiddleware handles typed webhook errors with custom message
-
passed
createKickWebhookValidationMiddleware handles unexpected failures with 500 response
-
passed
createKickWebhookValidationMiddleware populates broadcaster auth when account has valid token
-
passed
createKickWebhookValidationMiddleware refreshes token when access token is missing or expired
-
passed
createKickWebhookValidationMiddleware logs a warning when cache invalidation is rate limited
-
passed
createKickWebhookValidationMiddleware logs a warning when cache invalidation fails
-
passed
createKickWebhookValidationMiddleware returns null broadcaster auth when account is not registered
-
passed
createKickWebhookValidationMiddleware returns 500 when database binding is missing
-
passed
createKickWebhookValidationMiddleware returns 500 when broadcaster account is missing a refresh token
-
passed
createKickWebhookValidationMiddleware returns 500 when Kick OAuth credentials are missing
-
passed
createKickWebhookValidationMiddleware returns 500 when refreshing the access token fails
-
passed
createKickWebhookValidationMiddleware returns 500 when refresh response omits an access token
-
passed
createKickWebhookValidationMiddleware clears stored tokens when refresh token is invalid
-
passed
resolveBroadcasterAuth (internal) uses cached account within ttl without re-querying
-
passed
resolveBroadcasterAuth (internal) re-queries database when cache entry expires
-
passed
resolveBroadcasterAuth (internal) clearAccountCacheEntries removes specific cache entry
-
passed
resolveBroadcasterAuth (internal) returns null when broadcaster id is missing without a step logger
-
passed
resolveBroadcasterAuth (internal) formats account cache tag with sanitized characters
-
passed
resolveBroadcasterAuth (internal) formats account cache tag when id is empty
-
passed
resolveBroadcasterAuth (internal) reuses stored refresh token when the refresh response omits one
-
passed
resolveBroadcasterAuth (internal) refreshes token even when Accelerate invalidate is unavailable
-
passed
resolveBroadcasterAuth (internal) records introspection metadata without token type
-
passed
resolveBroadcasterAuth (internal) skips local cache cleared note when entry already missing
-
passed
resolveBroadcasterAuth (internal) throws when refresh token introspection reports inactive
-
passed
resolveBroadcasterAuth (internal) reports introspection error reason when description is missing
-
passed
resolveBroadcasterAuth (internal) defaults inactive reason when introspection omits error details
-
passed
resolveBroadcasterAuth (internal) clears tokens when refresh request fails with invalid_grant
-
passed
resolveBroadcasterAuth (internal) propagates non-error refresh failures without clearing tokens
-
passed
resolveBroadcasterAuth (internal) continues when refresh token introspection request fails
-
passed
resolveBroadcasterAuth (internal) extracts broadcaster id from fallback payload shape
-
passed
resolveBroadcasterAuth (internal) returns null when fallback broadcaster id is invalid
-
passed
validateRefreshToken helper surfaces empty response detail when body is blank
-
passed
validateRefreshToken helper reports <no response body> when payload cannot be read
-
passed
validateRefreshToken helper throws when introspection succeeds with empty body
-
passed
validateRefreshToken helper throws when introspection returns malformed JSON
-
passed
validateRefreshToken helper throws when introspection payload is missing active flag
-
passed
validateRefreshToken helper uses error field when description is missing
-
passed
validateRefreshToken helper falls back to raw payload when JSON parsing fails
-
passed
validateRefreshToken helper returns parsed payload when introspection succeeds
-
passed
validateRefreshToken helper falls back to Buffer when btoa is unavailable
-
passed
validateRefreshToken helper omits authorization header when credentials cannot be encoded
-
passed
validateRefreshToken helper falls back to raw payload when error fields are not strings
-
passed
formatStepMeta omits output when meta is empty or undefined
-
passed
formatStepMeta formats supported value types
/home/runner/work/Cleo-Kick/Cleo-Kick/tests/notifyDeveloper.test.ts
Status: passed
Duration: 20 ms
Total: 8
-
passed
notifyDeveloperOfError warns once when configuration is incomplete
-
passed
notifyDeveloperOfError sends formatted email when configuration is complete
-
passed
notifyDeveloperOfError logs a structured error when MailChannels returns an error
-
passed
notifyDeveloperOfError logs unexpected errors
-
passed
notifyDeveloperOfError serializes symbol context to empty object placeholder
-
passed
notifyDeveloperOfError stringifies BigInt context via fallback
-
passed
notifyDeveloperOfError preserves small JSON payloads without truncation
-
passed
notifyDeveloperOfError truncates oversized JSON payloads
/home/runner/work/Cleo-Kick/Cleo-Kick/tests/overlayRoute.test.ts
Status: passed
Duration: 44 ms
Total: 6
-
passed
overlay test-message route returns 503 until the socket server is ready
-
passed
overlay test-message route returns 400 when JSON parsing fails
-
passed
overlay test-message route returns 400 when formatted roomId is empty
-
passed
overlay test-message route propagates send failures
-
passed
overlay test-message route sends synthetic chat messages
-
passed
overlay test-message route falls back to default text, author, and optional metadata
/home/runner/work/Cleo-Kick/Cleo-Kick/tests/overlaySocket.test.ts
Status: passed
Duration: 39 ms
Total: 12
-
passed
overlaySocket warns only once when the relay endpoint is missing
-
passed
overlaySocket emits payloads over the socket client
-
passed
overlaySocket guards against duplicate finalize calls
-
passed
overlaySocket returns null when the socket connection fails
-
passed
overlaySocket returns null when the socket emit fails
-
passed
overlaySocket formatOverlayRoomId ensures the expected prefix
-
passed
overlaySocket reports relay readiness state
-
passed
overlaySocket exposes relay config snapshots
-
passed
overlaySocket treats blank relay config values as unset
-
passed
overlaySocket skips emitting when roomId or text are missing
-
passed
overlaySocket sanitizes optional payload fields
-
passed
overlaySocket defaults the author to server when omitted
/home/runner/work/Cleo-Kick/Cleo-Kick/tests/prisma.test.ts
Status: passed
Duration: 6 ms
Total: 4
-
passed
getDb creates a new Prisma client for an unseen datasource
-
passed
getDb reuses cached client for the same datasource
-
passed
getDb creates distinct clients for different datasources
-
passed
getDb throws when database url is missing
/home/runner/work/Cleo-Kick/Cleo-Kick/tests/validateWebhook.test.ts
Status: passed
Duration: 1.33 s
Total: 16
-
passed
validateKickWebhook verifies signature and returns typed payload for known events
-
passed
validateKickWebhook handles every known event type
-
passed
validateKickWebhook throws when required headers are missing
-
passed
validateKickWebhook throws when timestamp header is missing
-
passed
validateKickWebhook throws when signature header is missing
-
passed
validateKickWebhook validates timestamp parse and tolerance window
-
passed
validateKickWebhook throws when signature verification fails
-
passed
validateKickWebhook rejects invalid JSON payloads
-
passed
validateKickWebhook returns raw payload for unknown event types
-
passed
validateKickWebhook defaults event metadata when headers are omitted
-
passed
validateKickWebhook falls back to version 1 when event version header is empty
-
passed
validateKickWebhook rejects invalid base64 signatures
-
passed
validateKickWebhook caches public key when fetched value stays the same
-
passed
validateKickWebhook uses provided PEM without fetching
-
passed
validateKickWebhook falls back to embedded public key when remote payload invalid
-
passed
validateKickWebhook falls back when public key endpoint responds with error
/home/runner/work/Cleo-Kick/Cleo-Kick/tests/webhookRouteOverrides.test.ts
Status: passed
Duration: 36 ms
Total: 2
-
passed
registerWebhookRoute dependency resolution uses default dependencies when no overrides provided
-
passed
registerWebhookRoute dependency resolution merges handler overrides while preserving defaults