-
Notifications
You must be signed in to change notification settings - Fork 0
Closed
Description
Overview
The SignalR hubs lack unit test coverage. There are 16 hub classes with ~3,744 lines of code and no dedicated unit tests.
Scope
High Priority Hubs
- TaskHub (192 lines) - Task lifecycle management, subscription methods
- SecureHub (220 lines) - Base authentication hub, connection lifecycle
- SpendNotificationHub (355 lines) - Spend threshold alerts
Medium Priority Hubs
- UsageAnalyticsHub (524 lines) - Analytics streaming
- VirtualKeyManagementHub (425 lines) - Key management operations
- HealthMonitoringHub (330 lines) - Health status broadcasts
Lower Priority Hubs
- MetricsHub, WebhookDeliveryHub, SystemNotificationHub
- ImageGenerationHub, VideoGenerationHub, ContentGenerationHub
- AcknowledgmentHub, SecurityMonitoringHub
Test Cases Needed
SecureHub (Base Class)
-
OnConnectedAsyncadds connection to virtual key group -
OnConnectedAsyncaborts connection without valid virtual key -
OnDisconnectedAsyncremoves from virtual key group -
RequireVirtualKeyIdthrows HubException when unauthorized -
GetVirtualKeyIdextracts ID from context correctly -
CanAccessTaskAsyncvalidates resource ownership
TaskHub
-
SubscribeToTaskwith valid task ID adds to group -
SubscribeToTaskwith invalid task ID throws HubException -
SubscribeToTaskwith non-existent task throws "Task not found" -
SubscribeToTaskwith unauthorized task throws "Unauthorized access" -
UnsubscribeFromTaskremoves from group -
SubscribeToTaskTypeadds to type-specific group -
TaskStartednotifies correct groups -
TaskProgresssends progress to task group -
TaskCompleted/TaskFailed/TaskCancellednotify correctly
SpendNotificationHub
- Threshold subscription and notification
- Spend alert broadcasting
- Virtual key group notifications
Implementation Notes
- Create test base class with mock HubCallerContext and Groups
- Use Moq to mock IHubContext, IAsyncTaskService, ISignalRAuthenticationService
- Test both success and error scenarios
- Verify group membership operations
Related Files
/Services/ConduitLLM.Gateway/Hubs//Tests/ConduitLLM.Tests/Gateway/(add newHubs/directory)
References
- Closes partially: Add comprehensive tests for SignalR hubs and event handlers #218