From 241b7dfec13de7de2d5d96ae46e2ccb6a510af3c Mon Sep 17 00:00:00 2001 From: streamer45 Date: Tue, 6 Aug 2024 17:23:03 +0200 Subject: [PATCH] Review tests to ensure mocked calls are executed --- server/configuration_test.go | 2 ++ server/job_service_test.go | 11 +++-------- server/rtcd_test.go | 15 +++++++++++++++ server/websocket_test.go | 35 ++++++++++++++++++++++++++++------- 4 files changed, 48 insertions(+), 15 deletions(-) diff --git a/server/configuration_test.go b/server/configuration_test.go index 613348788..b6dc531da 100644 --- a/server/configuration_test.go +++ b/server/configuration_test.go @@ -215,6 +215,8 @@ func TestConfigurationIsValid(t *testing.T) { func TestGetClientConfig(t *testing.T) { mockAPI := &pluginMocks.MockAPI{} + defer mockAPI.AssertExpectations(t) + p := &Plugin{ MattermostPlugin: plugin.MattermostPlugin{ API: mockAPI, diff --git a/server/job_service_test.go b/server/job_service_test.go index 479715e54..fa72a25ee 100644 --- a/server/job_service_test.go +++ b/server/job_service_test.go @@ -69,8 +69,10 @@ func TestJobServiceStopJob(t *testing.T) { }) t.Run("sending events", func(t *testing.T) { + defer mockAPI.AssertExpectations(t) + defer mockMetrics.AssertExpectations(t) + mockMetrics.On("IncWebSocketEvent", "out", wsEventJobStop).Once() - mockMetrics.On("IncWebSocketEvent", "out", wsEventCallEnd).Once() mockAPI.On("PublishWebSocketEvent", wsEventJobStop, map[string]any{ "job_id": "jobID", @@ -79,13 +81,6 @@ func TestJobServiceStopJob(t *testing.T) { ReliableClusterSend: true, }).Once() - mockAPI.On("PublishWebSocketEvent", wsEventCallEnd, map[string]any{ - "channelID": "callChannelID", - }, &model.WebsocketBroadcast{ - ConnectionId: "botConnID", - ReliableClusterSend: true, - }).Once() - err := p.jobService.StopJob("callChannelID", "jobID", "botUserID", "botConnID") require.NoError(t, err) }) diff --git a/server/rtcd_test.go b/server/rtcd_test.go index 1ad48cf5e..8b08a41d6 100644 --- a/server/rtcd_test.go +++ b/server/rtcd_test.go @@ -42,6 +42,11 @@ func TestGetHostForNewCall(t *testing.T) { mockClientB := &rtcdMocks.MockRTCDClient{} mockClientC := &rtcdMocks.MockRTCDClient{} + defer mockClientA.AssertExpectations(t) + defer mockClientB.AssertExpectations(t) + defer mockClientC.AssertExpectations(t) + defer mockAPI.AssertExpectations(t) + mockClientA.On("Connected").Return(true).Once() mockClientB.On("Connected").Return(true).Once() mockClientC.On("Connected").Return(true).Once() @@ -100,6 +105,11 @@ func TestGetHostForNewCall(t *testing.T) { mockClientB := &rtcdMocks.MockRTCDClient{} mockClientC := &rtcdMocks.MockRTCDClient{} + defer mockClientA.AssertExpectations(t) + defer mockClientB.AssertExpectations(t) + defer mockClientC.AssertExpectations(t) + defer mockAPI.AssertExpectations(t) + mockClientA.On("Connected").Return(false).Once() mockClientB.On("Connected").Return(false).Once() mockClientC.On("Connected").Return(false).Once() @@ -155,6 +165,11 @@ func TestGetHostForNewCall(t *testing.T) { mockClientB := &rtcdMocks.MockRTCDClient{} mockClientC := &rtcdMocks.MockRTCDClient{} + defer mockClientA.AssertExpectations(t) + defer mockClientB.AssertExpectations(t) + defer mockClientC.AssertExpectations(t) + defer mockAPI.AssertExpectations(t) + m := &rtcdClientManager{ ctx: &Plugin{ MattermostPlugin: plugin.MattermostPlugin{ diff --git a/server/websocket_test.go b/server/websocket_test.go index 932b927ac..523ce1e03 100644 --- a/server/websocket_test.go +++ b/server/websocket_test.go @@ -33,6 +33,9 @@ func TestHandleBotWSReconnect(t *testing.T) { mockAPI := &pluginMocks.MockAPI{} mockMetrics := &serverMocks.MockMetrics{} + defer mockAPI.AssertExpectations(t) + defer mockMetrics.AssertExpectations(t) + p := Plugin{ MattermostPlugin: plugin.MattermostPlugin{ API: mockAPI, @@ -52,8 +55,6 @@ func TestHandleBotWSReconnect(t *testing.T) { mockMetrics.On("ObserveClusterMutexGrabTime", "mutex_call", mock.AnythingOfType("float64")) mockMetrics.On("ObserveClusterMutexLockedTime", "mutex_call", mock.AnythingOfType("float64")) mockMetrics.On("ObserveAppHandlersTime", mock.AnythingOfType("string"), mock.AnythingOfType("float64")) - mockMetrics.On("IncStoreOp", "KVGet") - mockMetrics.On("IncStoreOp", "KVSet") channelID := model.NewId() @@ -269,6 +270,8 @@ func TestWSReader(t *testing.T) { }) t.Run("valid session", func(_ *testing.T) { + defer mockAPI.AssertExpectations(t) + mockAPI.On("GetSession", "authSessionID").Return(&model.Session{ Id: "authSessionID", ExpiresAt: time.Now().UnixMilli() + 60000, @@ -289,6 +292,8 @@ func TestWSReader(t *testing.T) { }) t.Run("valid session, no expiration", func(_ *testing.T) { + defer mockAPI.AssertExpectations(t) + mockAPI.On("GetSession", "authSessionID").Return(&model.Session{ Id: "authSessionID", }, nil).Once() @@ -308,6 +313,8 @@ func TestWSReader(t *testing.T) { }) t.Run("expired session", func(_ *testing.T) { + defer mockAPI.AssertExpectations(t) + expiresAt := time.Now().UnixMilli() us := newUserSession("userID", "channelID", "connID", "callID", false) @@ -339,6 +346,8 @@ func TestWSReader(t *testing.T) { }) t.Run("revoked session", func(_ *testing.T) { + defer mockAPI.AssertExpectations(t) + us := newUserSession("userID", "channelID", "connID", "callID", false) mockAPI.On("GetSession", "authSessionID").Return(nil, @@ -372,6 +381,9 @@ func TestHandleCallStateRequest(t *testing.T) { mockAPI := &pluginMocks.MockAPI{} mockMetrics := &serverMocks.MockMetrics{} + defer mockAPI.AssertExpectations(t) + defer mockMetrics.AssertExpectations(t) + p := Plugin{ MattermostPlugin: plugin.MattermostPlugin{ API: mockAPI, @@ -391,8 +403,6 @@ func TestHandleCallStateRequest(t *testing.T) { mockMetrics.On("ObserveClusterMutexGrabTime", "mutex_call", mock.AnythingOfType("float64")) mockMetrics.On("ObserveClusterMutexLockedTime", "mutex_call", mock.AnythingOfType("float64")) mockMetrics.On("ObserveAppHandlersTime", mock.AnythingOfType("string"), mock.AnythingOfType("float64")) - mockMetrics.On("IncStoreOp", "KVGet") - mockMetrics.On("IncStoreOp", "KVSet") channelID := model.NewId() userID := model.NewId() @@ -424,7 +434,6 @@ func TestHandleCallStateRequest(t *testing.T) { }) require.NoError(t, err) - mockAPI.On("KVDelete", "mutex_call_"+channelID).Return(nil).Once() mockAPI.On("HasPermissionToChannel", userID, channelID, model.PermissionReadChannel).Return(true).Once() mockMetrics.On("IncWebSocketEvent", "out", "call_state").Once() mockAPI.On("PublishWebSocketEvent", "call_state", mock.Anything, mock.Anything).Once() @@ -504,6 +513,9 @@ func TestPublishWebSocketEvent(t *testing.T) { }) t.Run("broadcast", func(_ *testing.T) { + defer mockAPI.AssertExpectations(t) + defer mockMetrics.AssertExpectations(t) + data := map[string]any{} bc := &WebSocketBroadcast{ ChannelID: callChannelID, @@ -528,6 +540,9 @@ func TestPublishWebSocketEvent(t *testing.T) { }) t.Run("specified users, including bot", func(_ *testing.T) { + defer mockAPI.AssertExpectations(t) + defer mockMetrics.AssertExpectations(t) + data := map[string]any{} bc := &WebSocketBroadcast{ ChannelID: callChannelID, @@ -561,13 +576,16 @@ func TestPublishWebSocketEvent(t *testing.T) { }, }).Once() - mockMetrics.On("IncWebSocketEvent", "out", wsEventUserReacted).Times(3) + mockMetrics.On("IncWebSocketEvent", "out", wsEventUserReacted).Times(2) p.publishWebSocketEvent(wsEventUserReacted, data, bc) }) }) t.Run("connection specific", func(_ *testing.T) { + defer mockAPI.AssertExpectations(t) + defer mockMetrics.AssertExpectations(t) + data := map[string]any{ "session_id": "userSessionID", } @@ -586,6 +604,9 @@ func TestPublishWebSocketEvent(t *testing.T) { }) t.Run("specified users", func(_ *testing.T) { + defer mockAPI.AssertExpectations(t) + defer mockMetrics.AssertExpectations(t) + data := map[string]any{} bc := &WebSocketBroadcast{ ChannelID: callChannelID, @@ -595,7 +616,7 @@ func TestPublishWebSocketEvent(t *testing.T) { "userD", }, } - mockMetrics.On("IncWebSocketEvent", "out", wsEventUserMuted).Twice() + mockMetrics.On("IncWebSocketEvent", "out", wsEventUserMuted).Once() mockAPI.On("PublishWebSocketEvent", wsEventUserMuted, data, &model.WebsocketBroadcast{ ChannelId: callChannelID,