Просмотр исходного кода

validate session state in SetUserInfoFields test

Mike 6 месяцев назад
Родитель
Сommit
57457e1c08
2 измененных файлов с 19 добавлено и 5 удалено
  1. 17 2
      foodgroup/oservice_test.go
  2. 2 3
      state/session.go

+ 17 - 2
foodgroup/oservice_test.go

@@ -866,10 +866,12 @@ func TestOServiceService_SetUserInfoFields(t *testing.T) {
 		// mockParams is the list of params sent to mocks that satisfy this
 		// method's dependencies
 		mockParams mockParams
+		// checkSession validates the state of the session
+		checkSession func(*testing.T, *state.Session)
 	}{
 		{
 			name:     "set user status to visible aim < 6",
-			instance: newTestInstance("me"),
+			instance: newTestInstance("me", sessOptInvisible),
 			inputSNAC: wire.SNACMessage{
 				Frame: wire.SNACFrame{
 					RequestID: 1234,
@@ -909,6 +911,9 @@ func TestOServiceService_SetUserInfoFields(t *testing.T) {
 					},
 				},
 			},
+			checkSession: func(t *testing.T, session *state.Session) {
+				assert.False(t, session.Invisible())
+			},
 		},
 		{
 			name:     "set user status to invisible aim < 6",
@@ -952,10 +957,13 @@ func TestOServiceService_SetUserInfoFields(t *testing.T) {
 					},
 				},
 			},
+			checkSession: func(t *testing.T, session *state.Session) {
+				assert.True(t, session.Invisible())
+			},
 		},
 		{
 			name:     "set user status to visible aim >= 6",
-			instance: newTestInstance("me", sessOptSetFoodGroupVersion(wire.OService, 4)),
+			instance: newTestInstance("me", sessOptInvisible, sessOptSetFoodGroupVersion(wire.OService, 4)),
 			inputSNAC: wire.SNACMessage{
 				Frame: wire.SNACFrame{
 					RequestID: 1234,
@@ -995,6 +1003,9 @@ func TestOServiceService_SetUserInfoFields(t *testing.T) {
 					},
 				},
 			},
+			checkSession: func(t *testing.T, session *state.Session) {
+				assert.False(t, session.Invisible())
+			},
 		},
 		{
 			name:     "set user status to invisible aim >= 6",
@@ -1038,6 +1049,9 @@ func TestOServiceService_SetUserInfoFields(t *testing.T) {
 					},
 				},
 			},
+			checkSession: func(t *testing.T, session *state.Session) {
+				assert.True(t, session.Invisible())
+			},
 		},
 	}
 
@@ -1073,6 +1087,7 @@ func TestOServiceService_SetUserInfoFields(t *testing.T) {
 			} else {
 				assert.Equal(t, tc.expectOutput.Body, outputSNAC.Body)
 			}
+			tc.checkSession(t, tc.instance.Session())
 		})
 	}
 }

+ 2 - 3
state/session.go

@@ -1194,15 +1194,14 @@ func (s *SessionInstance) SetRemoteAddr(remoteAddr *netip.AddrPort) {
 	s.remoteAddr = remoteAddr
 }
 
-// SetUserInfoFlag sets a flag in the user info bitmask.
-func (s *SessionInstance) SetUserInfoFlag(flag uint16) (flags uint16) {
+// SetUserInfoFlag sets a flag on the user info bitmask.
+func (s *SessionInstance) SetUserInfoFlag(flag uint16) {
 	s.mutex.Lock()
 	defer s.mutex.Unlock()
 	if flag == wire.OServiceUserFlagUnavailable {
 		s.awayTime = s.session.nowFn()
 	}
 	s.userInfoBitmask |= flag
-	return s.userInfoBitmask
 }
 
 // SetUserStatusBitmask sets the user status bitmask.