Mike 7 месяцев назад
Родитель
Сommit
90cfba9683
65 измененных файлов с 7262 добавлено и 3998 удалено
  1. 6 17
      .mockery.yaml
  2. 236 129
      foodgroup/mock_account_manager_test.go
  3. 142 84
      foodgroup/mock_bart_item_manager_test.go
  4. 95 49
      foodgroup/mock_buddy_broadcaster_test.go
  5. 89 39
      foodgroup/mock_chat_message_relayer_test.go
  6. 92 57
      foodgroup/mock_chat_room_registry_test.go
  7. 60 37
      foodgroup/mock_chat_session_registry_test.go
  8. 195 89
      foodgroup/mock_client_side_buddy_list_manager_test.go
  9. 58 46
      foodgroup/mock_cookie_baker_test.go
  10. 138 80
      foodgroup/mock_feedbag_manager_test.go
  11. 154 92
      foodgroup/mock_icq_user_finder_test.go
  12. 169 77
      foodgroup/mock_icq_user_updater_test.go
  13. 64 29
      foodgroup/mock_message_relayer_test.go
  14. 112 67
      foodgroup/mock_offline_message_manager_test.go
  15. 234 139
      foodgroup/mock_profile_manager_test.go
  16. 77 47
      foodgroup/mock_relationship_fetcher_test.go
  17. 55 37
      foodgroup/mock_session_registry_test.go
  18. 33 26
      foodgroup/mock_session_retriever_test.go
  19. 94 54
      foodgroup/mock_user_manager_manager_test.go
  20. 142 84
      server/http/mock_account_manager_test.go
  21. 117 67
      server/http/mock_bart_asset_manager_test.go
  22. 39 27
      server/http/mock_chat_room_creator_test.go
  23. 43 32
      server/http/mock_chat_room_retriever_test.go
  24. 33 26
      server/http/mock_chat_session_retriever_test.go
  25. 155 97
      server/http/mock_directory_manager_test.go
  26. 44 34
      server/http/mock_feedbag_retriever_test.go
  27. 42 24
      server/http/mock_message_relayer_test.go
  28. 43 32
      server/http/mock_profile_retriever_test.go
  29. 40 34
      server/http/mock_session_retriever_test.go
  30. 127 77
      server/http/mock_user_manager_test.go
  31. 56 36
      server/kerberos/mock_auth_test.go
  32. 117 64
      server/oscar/mock_admin_service_test.go
  33. 282 156
      server/oscar/mock_auth_test.go
  34. 112 64
      server/oscar/mock_bart_service_test.go
  35. 74 47
      server/oscar/mock_buddy_list_registry_test.go
  36. 144 73
      server/oscar/mock_buddy_service_test.go
  37. 132 74
      server/oscar/mock_chat_nav_service_test.go
  38. 54 34
      server/oscar/mock_chat_service_test.go
  39. 30 21
      server/oscar/mock_chat_session_manager_test.go
  40. 65 39
      server/oscar/mock_departure_notifier_test.go
  41. 243 114
      server/oscar/mock_feedbag_service_test.go
  42. 234 109
      server/oscar/mock_icbm_service_test.go
  43. 465 161
      server/oscar/mock_icq_service_test.go
  44. 196 99
      server/oscar/mock_locate_service_test.go
  45. 77 52
      server/oscar/mock_odir_service_test.go
  46. 33 26
      server/oscar/mock_online_notifier_test.go
  47. 293 127
      server/oscar/mock_oservice_service_test.go
  48. 144 73
      server/oscar/mock_permit_deny_service_test.go
  49. 45 30
      server/oscar/mock_rate_limit_updater_test.go
  50. 40 28
      server/oscar/mock_response_writer_test.go
  51. 44 27
      server/oscar/mock_stats_service_test.go
  52. 48 32
      server/oscar/mock_user_lookup_service_test.go
  53. 54 34
      server/toc/mock_admin_service_test.go
  54. 246 139
      server/toc/mock_auth_service_test.go
  55. 59 37
      server/toc/mock_buddy_list_registry_test.go
  56. 110 59
      server/toc/mock_buddy_service_test.go
  57. 132 74
      server/toc/mock_chat_nav_service_test.go
  58. 54 34
      server/toc/mock_chat_service_test.go
  59. 58 46
      server/toc/mock_cookie_baker_test.go
  60. 52 36
      server/toc/mock_dir_search_service_test.go
  61. 168 79
      server/toc/mock_icbm_service_test.go
  62. 142 74
      server/toc/mock_locate_service_test.go
  63. 119 56
      server/toc/mock_oservice_service_test.go
  64. 144 73
      server/toc/mock_permit_deny_service_test.go
  65. 68 42
      server/toc/mock_toc_config_store_test.go

+ 6 - 17
.mockery.yaml

@@ -1,22 +1,17 @@
-with-expecter: true
-dir: "{{.InterfaceDir}}"
-mockname: "mock{{.InterfaceName}}"
-inpackage: true
+dir: '{{.InterfaceDir}}'
+structname: mock{{.InterfaceName}}
+template: testify
+template-data:
+  unroll-variadic: true
 packages:
   github.com/mk6i/retro-aim-server/server/oscar:
     interfaces:
       AuthService:
         config:
           filename: "mock_auth_test.go"
-      Handler:
-        config:
-          filename: "mock_handler_test.go"
       OnlineNotifier:
         config:
           filename: "mock_online_notifier_test.go"
-      UserManager:
-        config:
-          filename: "mock_user_manager_test.go"
       RateLimitUpdater:
         config:
           filename: "mock_rate_limit_updater_test.go"
@@ -79,9 +74,6 @@ packages:
       AccountManager:
         config:
           filename: "mock_account_manager_test.go"
-      AccountRetriever:
-        config:
-          filename: "mock_account_retriever_test.go"
       BARTAssetManager:
         config:
           filename: "mock_bart_asset_manager_test.go"
@@ -147,9 +139,6 @@ packages:
       ICQUserUpdater:
         config:
           filename: "mock_icq_user_updater_test.go"
-      LegacyBuddyListManager:
-        config:
-          filename: "mock_legacy_buddy_list_manager_test.go"
       ClientSideBuddyListManager:
         config:
           filename: "mock_client_side_buddy_list_manager_test.go"
@@ -216,4 +205,4 @@ packages:
     interfaces:
       AuthService:
         config:
-          filename: "mock_auth_test.go"
+          filename: "mock_auth_test.go"

+ 236 - 129
foodgroup/mock_account_manager_test.go

@@ -1,16 +1,31 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package foodgroup
 
 import (
-	context "context"
-	mail "net/mail"
+	"context"
+	"net/mail"
 
+	"github.com/mk6i/retro-aim-server/state"
 	mock "github.com/stretchr/testify/mock"
-
-	state "github.com/mk6i/retro-aim-server/state"
 )
 
+// newMockAccountManager creates a new instance of mockAccountManager. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockAccountManager(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockAccountManager {
+	mock := &mockAccountManager{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockAccountManager is an autogenerated mock type for the AccountManager type
 type mockAccountManager struct {
 	mock.Mock
@@ -24,9 +39,9 @@ func (_m *mockAccountManager) EXPECT() *mockAccountManager_Expecter {
 	return &mockAccountManager_Expecter{mock: &_m.Mock}
 }
 
-// ConfirmStatus provides a mock function with given fields: ctx, screenName
-func (_m *mockAccountManager) ConfirmStatus(ctx context.Context, screenName state.IdentScreenName) (bool, error) {
-	ret := _m.Called(ctx, screenName)
+// ConfirmStatus provides a mock function for the type mockAccountManager
+func (_mock *mockAccountManager) ConfirmStatus(ctx context.Context, screenName state.IdentScreenName) (bool, error) {
+	ret := _mock.Called(ctx, screenName)
 
 	if len(ret) == 0 {
 		panic("no return value specified for ConfirmStatus")
@@ -34,21 +49,19 @@ func (_m *mockAccountManager) ConfirmStatus(ctx context.Context, screenName stat
 
 	var r0 bool
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) (bool, error)); ok {
-		return rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) (bool, error)); ok {
+		return returnFunc(ctx, screenName)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) bool); ok {
-		r0 = rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) bool); ok {
+		r0 = returnFunc(ctx, screenName)
 	} else {
 		r0 = ret.Get(0).(bool)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, state.IdentScreenName) error); ok {
-		r1 = rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, state.IdentScreenName) error); ok {
+		r1 = returnFunc(ctx, screenName)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -66,24 +79,35 @@ func (_e *mockAccountManager_Expecter) ConfirmStatus(ctx interface{}, screenName
 
 func (_c *mockAccountManager_ConfirmStatus_Call) Run(run func(ctx context.Context, screenName state.IdentScreenName)) *mockAccountManager_ConfirmStatus_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockAccountManager_ConfirmStatus_Call) Return(_a0 bool, _a1 error) *mockAccountManager_ConfirmStatus_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockAccountManager_ConfirmStatus_Call) Return(b bool, err error) *mockAccountManager_ConfirmStatus_Call {
+	_c.Call.Return(b, err)
 	return _c
 }
 
-func (_c *mockAccountManager_ConfirmStatus_Call) RunAndReturn(run func(context.Context, state.IdentScreenName) (bool, error)) *mockAccountManager_ConfirmStatus_Call {
+func (_c *mockAccountManager_ConfirmStatus_Call) RunAndReturn(run func(ctx context.Context, screenName state.IdentScreenName) (bool, error)) *mockAccountManager_ConfirmStatus_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// EmailAddress provides a mock function with given fields: ctx, screenName
-func (_m *mockAccountManager) EmailAddress(ctx context.Context, screenName state.IdentScreenName) (*mail.Address, error) {
-	ret := _m.Called(ctx, screenName)
+// EmailAddress provides a mock function for the type mockAccountManager
+func (_mock *mockAccountManager) EmailAddress(ctx context.Context, screenName state.IdentScreenName) (*mail.Address, error) {
+	ret := _mock.Called(ctx, screenName)
 
 	if len(ret) == 0 {
 		panic("no return value specified for EmailAddress")
@@ -91,23 +115,21 @@ func (_m *mockAccountManager) EmailAddress(ctx context.Context, screenName state
 
 	var r0 *mail.Address
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) (*mail.Address, error)); ok {
-		return rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) (*mail.Address, error)); ok {
+		return returnFunc(ctx, screenName)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) *mail.Address); ok {
-		r0 = rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) *mail.Address); ok {
+		r0 = returnFunc(ctx, screenName)
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).(*mail.Address)
 		}
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, state.IdentScreenName) error); ok {
-		r1 = rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, state.IdentScreenName) error); ok {
+		r1 = returnFunc(ctx, screenName)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -125,24 +147,35 @@ func (_e *mockAccountManager_Expecter) EmailAddress(ctx interface{}, screenName
 
 func (_c *mockAccountManager_EmailAddress_Call) Run(run func(ctx context.Context, screenName state.IdentScreenName)) *mockAccountManager_EmailAddress_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockAccountManager_EmailAddress_Call) Return(_a0 *mail.Address, _a1 error) *mockAccountManager_EmailAddress_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockAccountManager_EmailAddress_Call) Return(address *mail.Address, err error) *mockAccountManager_EmailAddress_Call {
+	_c.Call.Return(address, err)
 	return _c
 }
 
-func (_c *mockAccountManager_EmailAddress_Call) RunAndReturn(run func(context.Context, state.IdentScreenName) (*mail.Address, error)) *mockAccountManager_EmailAddress_Call {
+func (_c *mockAccountManager_EmailAddress_Call) RunAndReturn(run func(ctx context.Context, screenName state.IdentScreenName) (*mail.Address, error)) *mockAccountManager_EmailAddress_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// RegStatus provides a mock function with given fields: ctx, screenName
-func (_m *mockAccountManager) RegStatus(ctx context.Context, screenName state.IdentScreenName) (uint16, error) {
-	ret := _m.Called(ctx, screenName)
+// RegStatus provides a mock function for the type mockAccountManager
+func (_mock *mockAccountManager) RegStatus(ctx context.Context, screenName state.IdentScreenName) (uint16, error) {
+	ret := _mock.Called(ctx, screenName)
 
 	if len(ret) == 0 {
 		panic("no return value specified for RegStatus")
@@ -150,21 +183,19 @@ func (_m *mockAccountManager) RegStatus(ctx context.Context, screenName state.Id
 
 	var r0 uint16
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) (uint16, error)); ok {
-		return rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) (uint16, error)); ok {
+		return returnFunc(ctx, screenName)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) uint16); ok {
-		r0 = rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) uint16); ok {
+		r0 = returnFunc(ctx, screenName)
 	} else {
 		r0 = ret.Get(0).(uint16)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, state.IdentScreenName) error); ok {
-		r1 = rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, state.IdentScreenName) error); ok {
+		r1 = returnFunc(ctx, screenName)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -182,36 +213,46 @@ func (_e *mockAccountManager_Expecter) RegStatus(ctx interface{}, screenName int
 
 func (_c *mockAccountManager_RegStatus_Call) Run(run func(ctx context.Context, screenName state.IdentScreenName)) *mockAccountManager_RegStatus_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockAccountManager_RegStatus_Call) Return(_a0 uint16, _a1 error) *mockAccountManager_RegStatus_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockAccountManager_RegStatus_Call) Return(v uint16, err error) *mockAccountManager_RegStatus_Call {
+	_c.Call.Return(v, err)
 	return _c
 }
 
-func (_c *mockAccountManager_RegStatus_Call) RunAndReturn(run func(context.Context, state.IdentScreenName) (uint16, error)) *mockAccountManager_RegStatus_Call {
+func (_c *mockAccountManager_RegStatus_Call) RunAndReturn(run func(ctx context.Context, screenName state.IdentScreenName) (uint16, error)) *mockAccountManager_RegStatus_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// SetUserPassword provides a mock function with given fields: ctx, screenName, newPassword
-func (_m *mockAccountManager) SetUserPassword(ctx context.Context, screenName state.IdentScreenName, newPassword string) error {
-	ret := _m.Called(ctx, screenName, newPassword)
+// SetUserPassword provides a mock function for the type mockAccountManager
+func (_mock *mockAccountManager) SetUserPassword(ctx context.Context, screenName state.IdentScreenName, newPassword string) error {
+	ret := _mock.Called(ctx, screenName, newPassword)
 
 	if len(ret) == 0 {
 		panic("no return value specified for SetUserPassword")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, string) error); ok {
-		r0 = rf(ctx, screenName, newPassword)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, string) error); ok {
+		r0 = returnFunc(ctx, screenName, newPassword)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -230,36 +271,51 @@ func (_e *mockAccountManager_Expecter) SetUserPassword(ctx interface{}, screenNa
 
 func (_c *mockAccountManager_SetUserPassword_Call) Run(run func(ctx context.Context, screenName state.IdentScreenName, newPassword string)) *mockAccountManager_SetUserPassword_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName), args[2].(string))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		var arg2 string
+		if args[2] != nil {
+			arg2 = args[2].(string)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockAccountManager_SetUserPassword_Call) Return(_a0 error) *mockAccountManager_SetUserPassword_Call {
-	_c.Call.Return(_a0)
+func (_c *mockAccountManager_SetUserPassword_Call) Return(err error) *mockAccountManager_SetUserPassword_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockAccountManager_SetUserPassword_Call) RunAndReturn(run func(context.Context, state.IdentScreenName, string) error) *mockAccountManager_SetUserPassword_Call {
+func (_c *mockAccountManager_SetUserPassword_Call) RunAndReturn(run func(ctx context.Context, screenName state.IdentScreenName, newPassword string) error) *mockAccountManager_SetUserPassword_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// UpdateConfirmStatus provides a mock function with given fields: ctx, screenName, confirmStatus
-func (_m *mockAccountManager) UpdateConfirmStatus(ctx context.Context, screenName state.IdentScreenName, confirmStatus bool) error {
-	ret := _m.Called(ctx, screenName, confirmStatus)
+// UpdateConfirmStatus provides a mock function for the type mockAccountManager
+func (_mock *mockAccountManager) UpdateConfirmStatus(ctx context.Context, screenName state.IdentScreenName, confirmStatus bool) error {
+	ret := _mock.Called(ctx, screenName, confirmStatus)
 
 	if len(ret) == 0 {
 		panic("no return value specified for UpdateConfirmStatus")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, bool) error); ok {
-		r0 = rf(ctx, screenName, confirmStatus)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, bool) error); ok {
+		r0 = returnFunc(ctx, screenName, confirmStatus)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -278,36 +334,51 @@ func (_e *mockAccountManager_Expecter) UpdateConfirmStatus(ctx interface{}, scre
 
 func (_c *mockAccountManager_UpdateConfirmStatus_Call) Run(run func(ctx context.Context, screenName state.IdentScreenName, confirmStatus bool)) *mockAccountManager_UpdateConfirmStatus_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName), args[2].(bool))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		var arg2 bool
+		if args[2] != nil {
+			arg2 = args[2].(bool)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockAccountManager_UpdateConfirmStatus_Call) Return(_a0 error) *mockAccountManager_UpdateConfirmStatus_Call {
-	_c.Call.Return(_a0)
+func (_c *mockAccountManager_UpdateConfirmStatus_Call) Return(err error) *mockAccountManager_UpdateConfirmStatus_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockAccountManager_UpdateConfirmStatus_Call) RunAndReturn(run func(context.Context, state.IdentScreenName, bool) error) *mockAccountManager_UpdateConfirmStatus_Call {
+func (_c *mockAccountManager_UpdateConfirmStatus_Call) RunAndReturn(run func(ctx context.Context, screenName state.IdentScreenName, confirmStatus bool) error) *mockAccountManager_UpdateConfirmStatus_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// UpdateDisplayScreenName provides a mock function with given fields: ctx, displayScreenName
-func (_m *mockAccountManager) UpdateDisplayScreenName(ctx context.Context, displayScreenName state.DisplayScreenName) error {
-	ret := _m.Called(ctx, displayScreenName)
+// UpdateDisplayScreenName provides a mock function for the type mockAccountManager
+func (_mock *mockAccountManager) UpdateDisplayScreenName(ctx context.Context, displayScreenName state.DisplayScreenName) error {
+	ret := _mock.Called(ctx, displayScreenName)
 
 	if len(ret) == 0 {
 		panic("no return value specified for UpdateDisplayScreenName")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.DisplayScreenName) error); ok {
-		r0 = rf(ctx, displayScreenName)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.DisplayScreenName) error); ok {
+		r0 = returnFunc(ctx, displayScreenName)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -325,36 +396,46 @@ func (_e *mockAccountManager_Expecter) UpdateDisplayScreenName(ctx interface{},
 
 func (_c *mockAccountManager_UpdateDisplayScreenName_Call) Run(run func(ctx context.Context, displayScreenName state.DisplayScreenName)) *mockAccountManager_UpdateDisplayScreenName_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.DisplayScreenName))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.DisplayScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.DisplayScreenName)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockAccountManager_UpdateDisplayScreenName_Call) Return(_a0 error) *mockAccountManager_UpdateDisplayScreenName_Call {
-	_c.Call.Return(_a0)
+func (_c *mockAccountManager_UpdateDisplayScreenName_Call) Return(err error) *mockAccountManager_UpdateDisplayScreenName_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockAccountManager_UpdateDisplayScreenName_Call) RunAndReturn(run func(context.Context, state.DisplayScreenName) error) *mockAccountManager_UpdateDisplayScreenName_Call {
+func (_c *mockAccountManager_UpdateDisplayScreenName_Call) RunAndReturn(run func(ctx context.Context, displayScreenName state.DisplayScreenName) error) *mockAccountManager_UpdateDisplayScreenName_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// UpdateEmailAddress provides a mock function with given fields: ctx, screenName, emailAddress
-func (_m *mockAccountManager) UpdateEmailAddress(ctx context.Context, screenName state.IdentScreenName, emailAddress *mail.Address) error {
-	ret := _m.Called(ctx, screenName, emailAddress)
+// UpdateEmailAddress provides a mock function for the type mockAccountManager
+func (_mock *mockAccountManager) UpdateEmailAddress(ctx context.Context, screenName state.IdentScreenName, emailAddress *mail.Address) error {
+	ret := _mock.Called(ctx, screenName, emailAddress)
 
 	if len(ret) == 0 {
 		panic("no return value specified for UpdateEmailAddress")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, *mail.Address) error); ok {
-		r0 = rf(ctx, screenName, emailAddress)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, *mail.Address) error); ok {
+		r0 = returnFunc(ctx, screenName, emailAddress)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -373,36 +454,51 @@ func (_e *mockAccountManager_Expecter) UpdateEmailAddress(ctx interface{}, scree
 
 func (_c *mockAccountManager_UpdateEmailAddress_Call) Run(run func(ctx context.Context, screenName state.IdentScreenName, emailAddress *mail.Address)) *mockAccountManager_UpdateEmailAddress_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName), args[2].(*mail.Address))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		var arg2 *mail.Address
+		if args[2] != nil {
+			arg2 = args[2].(*mail.Address)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockAccountManager_UpdateEmailAddress_Call) Return(_a0 error) *mockAccountManager_UpdateEmailAddress_Call {
-	_c.Call.Return(_a0)
+func (_c *mockAccountManager_UpdateEmailAddress_Call) Return(err error) *mockAccountManager_UpdateEmailAddress_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockAccountManager_UpdateEmailAddress_Call) RunAndReturn(run func(context.Context, state.IdentScreenName, *mail.Address) error) *mockAccountManager_UpdateEmailAddress_Call {
+func (_c *mockAccountManager_UpdateEmailAddress_Call) RunAndReturn(run func(ctx context.Context, screenName state.IdentScreenName, emailAddress *mail.Address) error) *mockAccountManager_UpdateEmailAddress_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// UpdateRegStatus provides a mock function with given fields: ctx, screenName, regStatus
-func (_m *mockAccountManager) UpdateRegStatus(ctx context.Context, screenName state.IdentScreenName, regStatus uint16) error {
-	ret := _m.Called(ctx, screenName, regStatus)
+// UpdateRegStatus provides a mock function for the type mockAccountManager
+func (_mock *mockAccountManager) UpdateRegStatus(ctx context.Context, screenName state.IdentScreenName, regStatus uint16) error {
+	ret := _mock.Called(ctx, screenName, regStatus)
 
 	if len(ret) == 0 {
 		panic("no return value specified for UpdateRegStatus")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, uint16) error); ok {
-		r0 = rf(ctx, screenName, regStatus)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, uint16) error); ok {
+		r0 = returnFunc(ctx, screenName, regStatus)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -421,24 +517,40 @@ func (_e *mockAccountManager_Expecter) UpdateRegStatus(ctx interface{}, screenNa
 
 func (_c *mockAccountManager_UpdateRegStatus_Call) Run(run func(ctx context.Context, screenName state.IdentScreenName, regStatus uint16)) *mockAccountManager_UpdateRegStatus_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName), args[2].(uint16))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		var arg2 uint16
+		if args[2] != nil {
+			arg2 = args[2].(uint16)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockAccountManager_UpdateRegStatus_Call) Return(_a0 error) *mockAccountManager_UpdateRegStatus_Call {
-	_c.Call.Return(_a0)
+func (_c *mockAccountManager_UpdateRegStatus_Call) Return(err error) *mockAccountManager_UpdateRegStatus_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockAccountManager_UpdateRegStatus_Call) RunAndReturn(run func(context.Context, state.IdentScreenName, uint16) error) *mockAccountManager_UpdateRegStatus_Call {
+func (_c *mockAccountManager_UpdateRegStatus_Call) RunAndReturn(run func(ctx context.Context, screenName state.IdentScreenName, regStatus uint16) error) *mockAccountManager_UpdateRegStatus_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// User provides a mock function with given fields: ctx, screenName
-func (_m *mockAccountManager) User(ctx context.Context, screenName state.IdentScreenName) (*state.User, error) {
-	ret := _m.Called(ctx, screenName)
+// User provides a mock function for the type mockAccountManager
+func (_mock *mockAccountManager) User(ctx context.Context, screenName state.IdentScreenName) (*state.User, error) {
+	ret := _mock.Called(ctx, screenName)
 
 	if len(ret) == 0 {
 		panic("no return value specified for User")
@@ -446,23 +558,21 @@ func (_m *mockAccountManager) User(ctx context.Context, screenName state.IdentSc
 
 	var r0 *state.User
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) (*state.User, error)); ok {
-		return rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) (*state.User, error)); ok {
+		return returnFunc(ctx, screenName)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) *state.User); ok {
-		r0 = rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) *state.User); ok {
+		r0 = returnFunc(ctx, screenName)
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).(*state.User)
 		}
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, state.IdentScreenName) error); ok {
-		r1 = rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, state.IdentScreenName) error); ok {
+		r1 = returnFunc(ctx, screenName)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -480,31 +590,28 @@ func (_e *mockAccountManager_Expecter) User(ctx interface{}, screenName interfac
 
 func (_c *mockAccountManager_User_Call) Run(run func(ctx context.Context, screenName state.IdentScreenName)) *mockAccountManager_User_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockAccountManager_User_Call) Return(_a0 *state.User, _a1 error) *mockAccountManager_User_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockAccountManager_User_Call) Return(user *state.User, err error) *mockAccountManager_User_Call {
+	_c.Call.Return(user, err)
 	return _c
 }
 
-func (_c *mockAccountManager_User_Call) RunAndReturn(run func(context.Context, state.IdentScreenName) (*state.User, error)) *mockAccountManager_User_Call {
+func (_c *mockAccountManager_User_Call) RunAndReturn(run func(ctx context.Context, screenName state.IdentScreenName) (*state.User, error)) *mockAccountManager_User_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockAccountManager creates a new instance of mockAccountManager. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockAccountManager(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockAccountManager {
-	mock := &mockAccountManager{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 142 - 84
foodgroup/mock_bart_item_manager_test.go

@@ -1,16 +1,31 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package foodgroup
 
 import (
-	context "context"
+	"context"
 
-	state "github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/wire"
 	mock "github.com/stretchr/testify/mock"
-
-	wire "github.com/mk6i/retro-aim-server/wire"
 )
 
+// newMockBARTItemManager creates a new instance of mockBARTItemManager. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockBARTItemManager(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockBARTItemManager {
+	mock := &mockBARTItemManager{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockBARTItemManager is an autogenerated mock type for the BARTItemManager type
 type mockBARTItemManager struct {
 	mock.Mock
@@ -24,9 +39,9 @@ func (_m *mockBARTItemManager) EXPECT() *mockBARTItemManager_Expecter {
 	return &mockBARTItemManager_Expecter{mock: &_m.Mock}
 }
 
-// BARTItem provides a mock function with given fields: ctx, hash
-func (_m *mockBARTItemManager) BARTItem(ctx context.Context, hash []byte) ([]byte, error) {
-	ret := _m.Called(ctx, hash)
+// BARTItem provides a mock function for the type mockBARTItemManager
+func (_mock *mockBARTItemManager) BARTItem(ctx context.Context, hash []byte) ([]byte, error) {
+	ret := _mock.Called(ctx, hash)
 
 	if len(ret) == 0 {
 		panic("no return value specified for BARTItem")
@@ -34,23 +49,21 @@ func (_m *mockBARTItemManager) BARTItem(ctx context.Context, hash []byte) ([]byt
 
 	var r0 []byte
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, []byte) ([]byte, error)); ok {
-		return rf(ctx, hash)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, []byte) ([]byte, error)); ok {
+		return returnFunc(ctx, hash)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, []byte) []byte); ok {
-		r0 = rf(ctx, hash)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, []byte) []byte); ok {
+		r0 = returnFunc(ctx, hash)
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).([]byte)
 		}
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, []byte) error); ok {
-		r1 = rf(ctx, hash)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, []byte) error); ok {
+		r1 = returnFunc(ctx, hash)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -68,24 +81,35 @@ func (_e *mockBARTItemManager_Expecter) BARTItem(ctx interface{}, hash interface
 
 func (_c *mockBARTItemManager_BARTItem_Call) Run(run func(ctx context.Context, hash []byte)) *mockBARTItemManager_BARTItem_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].([]byte))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 []byte
+		if args[1] != nil {
+			arg1 = args[1].([]byte)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockBARTItemManager_BARTItem_Call) Return(_a0 []byte, _a1 error) *mockBARTItemManager_BARTItem_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockBARTItemManager_BARTItem_Call) Return(bytes []byte, err error) *mockBARTItemManager_BARTItem_Call {
+	_c.Call.Return(bytes, err)
 	return _c
 }
 
-func (_c *mockBARTItemManager_BARTItem_Call) RunAndReturn(run func(context.Context, []byte) ([]byte, error)) *mockBARTItemManager_BARTItem_Call {
+func (_c *mockBARTItemManager_BARTItem_Call) RunAndReturn(run func(ctx context.Context, hash []byte) ([]byte, error)) *mockBARTItemManager_BARTItem_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// BuddyIconMetadata provides a mock function with given fields: ctx, screenName
-func (_m *mockBARTItemManager) BuddyIconMetadata(ctx context.Context, screenName state.IdentScreenName) (*wire.BARTID, error) {
-	ret := _m.Called(ctx, screenName)
+// BuddyIconMetadata provides a mock function for the type mockBARTItemManager
+func (_mock *mockBARTItemManager) BuddyIconMetadata(ctx context.Context, screenName state.IdentScreenName) (*wire.BARTID, error) {
+	ret := _mock.Called(ctx, screenName)
 
 	if len(ret) == 0 {
 		panic("no return value specified for BuddyIconMetadata")
@@ -93,23 +117,21 @@ func (_m *mockBARTItemManager) BuddyIconMetadata(ctx context.Context, screenName
 
 	var r0 *wire.BARTID
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) (*wire.BARTID, error)); ok {
-		return rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) (*wire.BARTID, error)); ok {
+		return returnFunc(ctx, screenName)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) *wire.BARTID); ok {
-		r0 = rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) *wire.BARTID); ok {
+		r0 = returnFunc(ctx, screenName)
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).(*wire.BARTID)
 		}
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, state.IdentScreenName) error); ok {
-		r1 = rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, state.IdentScreenName) error); ok {
+		r1 = returnFunc(ctx, screenName)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -127,36 +149,46 @@ func (_e *mockBARTItemManager_Expecter) BuddyIconMetadata(ctx interface{}, scree
 
 func (_c *mockBARTItemManager_BuddyIconMetadata_Call) Run(run func(ctx context.Context, screenName state.IdentScreenName)) *mockBARTItemManager_BuddyIconMetadata_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockBARTItemManager_BuddyIconMetadata_Call) Return(_a0 *wire.BARTID, _a1 error) *mockBARTItemManager_BuddyIconMetadata_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockBARTItemManager_BuddyIconMetadata_Call) Return(bARTID *wire.BARTID, err error) *mockBARTItemManager_BuddyIconMetadata_Call {
+	_c.Call.Return(bARTID, err)
 	return _c
 }
 
-func (_c *mockBARTItemManager_BuddyIconMetadata_Call) RunAndReturn(run func(context.Context, state.IdentScreenName) (*wire.BARTID, error)) *mockBARTItemManager_BuddyIconMetadata_Call {
+func (_c *mockBARTItemManager_BuddyIconMetadata_Call) RunAndReturn(run func(ctx context.Context, screenName state.IdentScreenName) (*wire.BARTID, error)) *mockBARTItemManager_BuddyIconMetadata_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// DeleteBARTItem provides a mock function with given fields: ctx, hash
-func (_m *mockBARTItemManager) DeleteBARTItem(ctx context.Context, hash []byte) error {
-	ret := _m.Called(ctx, hash)
+// DeleteBARTItem provides a mock function for the type mockBARTItemManager
+func (_mock *mockBARTItemManager) DeleteBARTItem(ctx context.Context, hash []byte) error {
+	ret := _mock.Called(ctx, hash)
 
 	if len(ret) == 0 {
 		panic("no return value specified for DeleteBARTItem")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, []byte) error); ok {
-		r0 = rf(ctx, hash)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, []byte) error); ok {
+		r0 = returnFunc(ctx, hash)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -174,36 +206,46 @@ func (_e *mockBARTItemManager_Expecter) DeleteBARTItem(ctx interface{}, hash int
 
 func (_c *mockBARTItemManager_DeleteBARTItem_Call) Run(run func(ctx context.Context, hash []byte)) *mockBARTItemManager_DeleteBARTItem_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].([]byte))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 []byte
+		if args[1] != nil {
+			arg1 = args[1].([]byte)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockBARTItemManager_DeleteBARTItem_Call) Return(_a0 error) *mockBARTItemManager_DeleteBARTItem_Call {
-	_c.Call.Return(_a0)
+func (_c *mockBARTItemManager_DeleteBARTItem_Call) Return(err error) *mockBARTItemManager_DeleteBARTItem_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockBARTItemManager_DeleteBARTItem_Call) RunAndReturn(run func(context.Context, []byte) error) *mockBARTItemManager_DeleteBARTItem_Call {
+func (_c *mockBARTItemManager_DeleteBARTItem_Call) RunAndReturn(run func(ctx context.Context, hash []byte) error) *mockBARTItemManager_DeleteBARTItem_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// InsertBARTItem provides a mock function with given fields: ctx, hash, blob, itemType
-func (_m *mockBARTItemManager) InsertBARTItem(ctx context.Context, hash []byte, blob []byte, itemType uint16) error {
-	ret := _m.Called(ctx, hash, blob, itemType)
+// InsertBARTItem provides a mock function for the type mockBARTItemManager
+func (_mock *mockBARTItemManager) InsertBARTItem(ctx context.Context, hash []byte, blob []byte, itemType uint16) error {
+	ret := _mock.Called(ctx, hash, blob, itemType)
 
 	if len(ret) == 0 {
 		panic("no return value specified for InsertBARTItem")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, []byte, []byte, uint16) error); ok {
-		r0 = rf(ctx, hash, blob, itemType)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, []byte, []byte, uint16) error); ok {
+		r0 = returnFunc(ctx, hash, blob, itemType)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -223,24 +265,45 @@ func (_e *mockBARTItemManager_Expecter) InsertBARTItem(ctx interface{}, hash int
 
 func (_c *mockBARTItemManager_InsertBARTItem_Call) Run(run func(ctx context.Context, hash []byte, blob []byte, itemType uint16)) *mockBARTItemManager_InsertBARTItem_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].([]byte), args[2].([]byte), args[3].(uint16))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 []byte
+		if args[1] != nil {
+			arg1 = args[1].([]byte)
+		}
+		var arg2 []byte
+		if args[2] != nil {
+			arg2 = args[2].([]byte)
+		}
+		var arg3 uint16
+		if args[3] != nil {
+			arg3 = args[3].(uint16)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+			arg3,
+		)
 	})
 	return _c
 }
 
-func (_c *mockBARTItemManager_InsertBARTItem_Call) Return(_a0 error) *mockBARTItemManager_InsertBARTItem_Call {
-	_c.Call.Return(_a0)
+func (_c *mockBARTItemManager_InsertBARTItem_Call) Return(err error) *mockBARTItemManager_InsertBARTItem_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockBARTItemManager_InsertBARTItem_Call) RunAndReturn(run func(context.Context, []byte, []byte, uint16) error) *mockBARTItemManager_InsertBARTItem_Call {
+func (_c *mockBARTItemManager_InsertBARTItem_Call) RunAndReturn(run func(ctx context.Context, hash []byte, blob []byte, itemType uint16) error) *mockBARTItemManager_InsertBARTItem_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// ListBARTItems provides a mock function with given fields: ctx, itemType
-func (_m *mockBARTItemManager) ListBARTItems(ctx context.Context, itemType uint16) ([]state.BARTItem, error) {
-	ret := _m.Called(ctx, itemType)
+// ListBARTItems provides a mock function for the type mockBARTItemManager
+func (_mock *mockBARTItemManager) ListBARTItems(ctx context.Context, itemType uint16) ([]state.BARTItem, error) {
+	ret := _mock.Called(ctx, itemType)
 
 	if len(ret) == 0 {
 		panic("no return value specified for ListBARTItems")
@@ -248,23 +311,21 @@ func (_m *mockBARTItemManager) ListBARTItems(ctx context.Context, itemType uint1
 
 	var r0 []state.BARTItem
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, uint16) ([]state.BARTItem, error)); ok {
-		return rf(ctx, itemType)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, uint16) ([]state.BARTItem, error)); ok {
+		return returnFunc(ctx, itemType)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, uint16) []state.BARTItem); ok {
-		r0 = rf(ctx, itemType)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, uint16) []state.BARTItem); ok {
+		r0 = returnFunc(ctx, itemType)
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).([]state.BARTItem)
 		}
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, uint16) error); ok {
-		r1 = rf(ctx, itemType)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, uint16) error); ok {
+		r1 = returnFunc(ctx, itemType)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -282,31 +343,28 @@ func (_e *mockBARTItemManager_Expecter) ListBARTItems(ctx interface{}, itemType
 
 func (_c *mockBARTItemManager_ListBARTItems_Call) Run(run func(ctx context.Context, itemType uint16)) *mockBARTItemManager_ListBARTItems_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(uint16))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 uint16
+		if args[1] != nil {
+			arg1 = args[1].(uint16)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockBARTItemManager_ListBARTItems_Call) Return(_a0 []state.BARTItem, _a1 error) *mockBARTItemManager_ListBARTItems_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockBARTItemManager_ListBARTItems_Call) Return(bARTItems []state.BARTItem, err error) *mockBARTItemManager_ListBARTItems_Call {
+	_c.Call.Return(bARTItems, err)
 	return _c
 }
 
-func (_c *mockBARTItemManager_ListBARTItems_Call) RunAndReturn(run func(context.Context, uint16) ([]state.BARTItem, error)) *mockBARTItemManager_ListBARTItems_Call {
+func (_c *mockBARTItemManager_ListBARTItems_Call) RunAndReturn(run func(ctx context.Context, itemType uint16) ([]state.BARTItem, error)) *mockBARTItemManager_ListBARTItems_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockBARTItemManager creates a new instance of mockBARTItemManager. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockBARTItemManager(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockBARTItemManager {
-	mock := &mockBARTItemManager{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 95 - 49
foodgroup/mock_buddy_broadcaster_test.go

@@ -1,16 +1,31 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package foodgroup
 
 import (
-	context "context"
+	"context"
 
-	state "github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/wire"
 	mock "github.com/stretchr/testify/mock"
-
-	wire "github.com/mk6i/retro-aim-server/wire"
 )
 
+// newMockbuddyBroadcaster creates a new instance of mockbuddyBroadcaster. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockbuddyBroadcaster(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockbuddyBroadcaster {
+	mock := &mockbuddyBroadcaster{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockbuddyBroadcaster is an autogenerated mock type for the buddyBroadcaster type
 type mockbuddyBroadcaster struct {
 	mock.Mock
@@ -24,21 +39,20 @@ func (_m *mockbuddyBroadcaster) EXPECT() *mockbuddyBroadcaster_Expecter {
 	return &mockbuddyBroadcaster_Expecter{mock: &_m.Mock}
 }
 
-// BroadcastBuddyArrived provides a mock function with given fields: ctx, screenName, userInfo
-func (_m *mockbuddyBroadcaster) BroadcastBuddyArrived(ctx context.Context, screenName state.IdentScreenName, userInfo wire.TLVUserInfo) error {
-	ret := _m.Called(ctx, screenName, userInfo)
+// BroadcastBuddyArrived provides a mock function for the type mockbuddyBroadcaster
+func (_mock *mockbuddyBroadcaster) BroadcastBuddyArrived(ctx context.Context, screenName state.IdentScreenName, userInfo wire.TLVUserInfo) error {
+	ret := _mock.Called(ctx, screenName, userInfo)
 
 	if len(ret) == 0 {
 		panic("no return value specified for BroadcastBuddyArrived")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, wire.TLVUserInfo) error); ok {
-		r0 = rf(ctx, screenName, userInfo)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, wire.TLVUserInfo) error); ok {
+		r0 = returnFunc(ctx, screenName, userInfo)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -57,36 +71,51 @@ func (_e *mockbuddyBroadcaster_Expecter) BroadcastBuddyArrived(ctx interface{},
 
 func (_c *mockbuddyBroadcaster_BroadcastBuddyArrived_Call) Run(run func(ctx context.Context, screenName state.IdentScreenName, userInfo wire.TLVUserInfo)) *mockbuddyBroadcaster_BroadcastBuddyArrived_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName), args[2].(wire.TLVUserInfo))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		var arg2 wire.TLVUserInfo
+		if args[2] != nil {
+			arg2 = args[2].(wire.TLVUserInfo)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockbuddyBroadcaster_BroadcastBuddyArrived_Call) Return(_a0 error) *mockbuddyBroadcaster_BroadcastBuddyArrived_Call {
-	_c.Call.Return(_a0)
+func (_c *mockbuddyBroadcaster_BroadcastBuddyArrived_Call) Return(err error) *mockbuddyBroadcaster_BroadcastBuddyArrived_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockbuddyBroadcaster_BroadcastBuddyArrived_Call) RunAndReturn(run func(context.Context, state.IdentScreenName, wire.TLVUserInfo) error) *mockbuddyBroadcaster_BroadcastBuddyArrived_Call {
+func (_c *mockbuddyBroadcaster_BroadcastBuddyArrived_Call) RunAndReturn(run func(ctx context.Context, screenName state.IdentScreenName, userInfo wire.TLVUserInfo) error) *mockbuddyBroadcaster_BroadcastBuddyArrived_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// BroadcastBuddyDeparted provides a mock function with given fields: ctx, sess
-func (_m *mockbuddyBroadcaster) BroadcastBuddyDeparted(ctx context.Context, sess *state.Session) error {
-	ret := _m.Called(ctx, sess)
+// BroadcastBuddyDeparted provides a mock function for the type mockbuddyBroadcaster
+func (_mock *mockbuddyBroadcaster) BroadcastBuddyDeparted(ctx context.Context, sess *state.Session) error {
+	ret := _mock.Called(ctx, sess)
 
 	if len(ret) == 0 {
 		panic("no return value specified for BroadcastBuddyDeparted")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session) error); ok {
-		r0 = rf(ctx, sess)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session) error); ok {
+		r0 = returnFunc(ctx, sess)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -104,36 +133,46 @@ func (_e *mockbuddyBroadcaster_Expecter) BroadcastBuddyDeparted(ctx interface{},
 
 func (_c *mockbuddyBroadcaster_BroadcastBuddyDeparted_Call) Run(run func(ctx context.Context, sess *state.Session)) *mockbuddyBroadcaster_BroadcastBuddyDeparted_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockbuddyBroadcaster_BroadcastBuddyDeparted_Call) Return(_a0 error) *mockbuddyBroadcaster_BroadcastBuddyDeparted_Call {
-	_c.Call.Return(_a0)
+func (_c *mockbuddyBroadcaster_BroadcastBuddyDeparted_Call) Return(err error) *mockbuddyBroadcaster_BroadcastBuddyDeparted_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockbuddyBroadcaster_BroadcastBuddyDeparted_Call) RunAndReturn(run func(context.Context, *state.Session) error) *mockbuddyBroadcaster_BroadcastBuddyDeparted_Call {
+func (_c *mockbuddyBroadcaster_BroadcastBuddyDeparted_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session) error) *mockbuddyBroadcaster_BroadcastBuddyDeparted_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// BroadcastVisibility provides a mock function with given fields: ctx, you, filter, sendDepartures
-func (_m *mockbuddyBroadcaster) BroadcastVisibility(ctx context.Context, you *state.Session, filter []state.IdentScreenName, sendDepartures bool) error {
-	ret := _m.Called(ctx, you, filter, sendDepartures)
+// BroadcastVisibility provides a mock function for the type mockbuddyBroadcaster
+func (_mock *mockbuddyBroadcaster) BroadcastVisibility(ctx context.Context, you *state.Session, filter []state.IdentScreenName, sendDepartures bool) error {
+	ret := _mock.Called(ctx, you, filter, sendDepartures)
 
 	if len(ret) == 0 {
 		panic("no return value specified for BroadcastVisibility")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, []state.IdentScreenName, bool) error); ok {
-		r0 = rf(ctx, you, filter, sendDepartures)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, []state.IdentScreenName, bool) error); ok {
+		r0 = returnFunc(ctx, you, filter, sendDepartures)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -153,31 +192,38 @@ func (_e *mockbuddyBroadcaster_Expecter) BroadcastVisibility(ctx interface{}, yo
 
 func (_c *mockbuddyBroadcaster_BroadcastVisibility_Call) Run(run func(ctx context.Context, you *state.Session, filter []state.IdentScreenName, sendDepartures bool)) *mockbuddyBroadcaster_BroadcastVisibility_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].([]state.IdentScreenName), args[3].(bool))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 []state.IdentScreenName
+		if args[2] != nil {
+			arg2 = args[2].([]state.IdentScreenName)
+		}
+		var arg3 bool
+		if args[3] != nil {
+			arg3 = args[3].(bool)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+			arg3,
+		)
 	})
 	return _c
 }
 
-func (_c *mockbuddyBroadcaster_BroadcastVisibility_Call) Return(_a0 error) *mockbuddyBroadcaster_BroadcastVisibility_Call {
-	_c.Call.Return(_a0)
+func (_c *mockbuddyBroadcaster_BroadcastVisibility_Call) Return(err error) *mockbuddyBroadcaster_BroadcastVisibility_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockbuddyBroadcaster_BroadcastVisibility_Call) RunAndReturn(run func(context.Context, *state.Session, []state.IdentScreenName, bool) error) *mockbuddyBroadcaster_BroadcastVisibility_Call {
+func (_c *mockbuddyBroadcaster_BroadcastVisibility_Call) RunAndReturn(run func(ctx context.Context, you *state.Session, filter []state.IdentScreenName, sendDepartures bool) error) *mockbuddyBroadcaster_BroadcastVisibility_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockbuddyBroadcaster creates a new instance of mockbuddyBroadcaster. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockbuddyBroadcaster(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockbuddyBroadcaster {
-	mock := &mockbuddyBroadcaster{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 89 - 39
foodgroup/mock_chat_message_relayer_test.go

@@ -1,16 +1,31 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package foodgroup
 
 import (
-	context "context"
+	"context"
 
-	state "github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/wire"
 	mock "github.com/stretchr/testify/mock"
-
-	wire "github.com/mk6i/retro-aim-server/wire"
 )
 
+// newMockChatMessageRelayer creates a new instance of mockChatMessageRelayer. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockChatMessageRelayer(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockChatMessageRelayer {
+	mock := &mockChatMessageRelayer{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockChatMessageRelayer is an autogenerated mock type for the ChatMessageRelayer type
 type mockChatMessageRelayer struct {
 	mock.Mock
@@ -24,23 +39,22 @@ func (_m *mockChatMessageRelayer) EXPECT() *mockChatMessageRelayer_Expecter {
 	return &mockChatMessageRelayer_Expecter{mock: &_m.Mock}
 }
 
-// AllSessions provides a mock function with given fields: chatCookie
-func (_m *mockChatMessageRelayer) AllSessions(chatCookie string) []*state.Session {
-	ret := _m.Called(chatCookie)
+// AllSessions provides a mock function for the type mockChatMessageRelayer
+func (_mock *mockChatMessageRelayer) AllSessions(chatCookie string) []*state.Session {
+	ret := _mock.Called(chatCookie)
 
 	if len(ret) == 0 {
 		panic("no return value specified for AllSessions")
 	}
 
 	var r0 []*state.Session
-	if rf, ok := ret.Get(0).(func(string) []*state.Session); ok {
-		r0 = rf(chatCookie)
+	if returnFunc, ok := ret.Get(0).(func(string) []*state.Session); ok {
+		r0 = returnFunc(chatCookie)
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).([]*state.Session)
 		}
 	}
-
 	return r0
 }
 
@@ -57,24 +71,31 @@ func (_e *mockChatMessageRelayer_Expecter) AllSessions(chatCookie interface{}) *
 
 func (_c *mockChatMessageRelayer_AllSessions_Call) Run(run func(chatCookie string)) *mockChatMessageRelayer_AllSessions_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(string))
+		var arg0 string
+		if args[0] != nil {
+			arg0 = args[0].(string)
+		}
+		run(
+			arg0,
+		)
 	})
 	return _c
 }
 
-func (_c *mockChatMessageRelayer_AllSessions_Call) Return(_a0 []*state.Session) *mockChatMessageRelayer_AllSessions_Call {
-	_c.Call.Return(_a0)
+func (_c *mockChatMessageRelayer_AllSessions_Call) Return(sessions []*state.Session) *mockChatMessageRelayer_AllSessions_Call {
+	_c.Call.Return(sessions)
 	return _c
 }
 
-func (_c *mockChatMessageRelayer_AllSessions_Call) RunAndReturn(run func(string) []*state.Session) *mockChatMessageRelayer_AllSessions_Call {
+func (_c *mockChatMessageRelayer_AllSessions_Call) RunAndReturn(run func(chatCookie string) []*state.Session) *mockChatMessageRelayer_AllSessions_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// RelayToAllExcept provides a mock function with given fields: ctx, chatCookie, except, msg
-func (_m *mockChatMessageRelayer) RelayToAllExcept(ctx context.Context, chatCookie string, except state.IdentScreenName, msg wire.SNACMessage) {
-	_m.Called(ctx, chatCookie, except, msg)
+// RelayToAllExcept provides a mock function for the type mockChatMessageRelayer
+func (_mock *mockChatMessageRelayer) RelayToAllExcept(ctx context.Context, chatCookie string, except state.IdentScreenName, msg wire.SNACMessage) {
+	_mock.Called(ctx, chatCookie, except, msg)
+	return
 }
 
 // mockChatMessageRelayer_RelayToAllExcept_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'RelayToAllExcept'
@@ -93,7 +114,28 @@ func (_e *mockChatMessageRelayer_Expecter) RelayToAllExcept(ctx interface{}, cha
 
 func (_c *mockChatMessageRelayer_RelayToAllExcept_Call) Run(run func(ctx context.Context, chatCookie string, except state.IdentScreenName, msg wire.SNACMessage)) *mockChatMessageRelayer_RelayToAllExcept_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(string), args[2].(state.IdentScreenName), args[3].(wire.SNACMessage))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 string
+		if args[1] != nil {
+			arg1 = args[1].(string)
+		}
+		var arg2 state.IdentScreenName
+		if args[2] != nil {
+			arg2 = args[2].(state.IdentScreenName)
+		}
+		var arg3 wire.SNACMessage
+		if args[3] != nil {
+			arg3 = args[3].(wire.SNACMessage)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+			arg3,
+		)
 	})
 	return _c
 }
@@ -103,14 +145,15 @@ func (_c *mockChatMessageRelayer_RelayToAllExcept_Call) Return() *mockChatMessag
 	return _c
 }
 
-func (_c *mockChatMessageRelayer_RelayToAllExcept_Call) RunAndReturn(run func(context.Context, string, state.IdentScreenName, wire.SNACMessage)) *mockChatMessageRelayer_RelayToAllExcept_Call {
+func (_c *mockChatMessageRelayer_RelayToAllExcept_Call) RunAndReturn(run func(ctx context.Context, chatCookie string, except state.IdentScreenName, msg wire.SNACMessage)) *mockChatMessageRelayer_RelayToAllExcept_Call {
 	_c.Run(run)
 	return _c
 }
 
-// RelayToScreenName provides a mock function with given fields: ctx, chatCookie, recipient, msg
-func (_m *mockChatMessageRelayer) RelayToScreenName(ctx context.Context, chatCookie string, recipient state.IdentScreenName, msg wire.SNACMessage) {
-	_m.Called(ctx, chatCookie, recipient, msg)
+// RelayToScreenName provides a mock function for the type mockChatMessageRelayer
+func (_mock *mockChatMessageRelayer) RelayToScreenName(ctx context.Context, chatCookie string, recipient state.IdentScreenName, msg wire.SNACMessage) {
+	_mock.Called(ctx, chatCookie, recipient, msg)
+	return
 }
 
 // mockChatMessageRelayer_RelayToScreenName_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'RelayToScreenName'
@@ -129,7 +172,28 @@ func (_e *mockChatMessageRelayer_Expecter) RelayToScreenName(ctx interface{}, ch
 
 func (_c *mockChatMessageRelayer_RelayToScreenName_Call) Run(run func(ctx context.Context, chatCookie string, recipient state.IdentScreenName, msg wire.SNACMessage)) *mockChatMessageRelayer_RelayToScreenName_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(string), args[2].(state.IdentScreenName), args[3].(wire.SNACMessage))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 string
+		if args[1] != nil {
+			arg1 = args[1].(string)
+		}
+		var arg2 state.IdentScreenName
+		if args[2] != nil {
+			arg2 = args[2].(state.IdentScreenName)
+		}
+		var arg3 wire.SNACMessage
+		if args[3] != nil {
+			arg3 = args[3].(wire.SNACMessage)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+			arg3,
+		)
 	})
 	return _c
 }
@@ -139,21 +203,7 @@ func (_c *mockChatMessageRelayer_RelayToScreenName_Call) Return() *mockChatMessa
 	return _c
 }
 
-func (_c *mockChatMessageRelayer_RelayToScreenName_Call) RunAndReturn(run func(context.Context, string, state.IdentScreenName, wire.SNACMessage)) *mockChatMessageRelayer_RelayToScreenName_Call {
+func (_c *mockChatMessageRelayer_RelayToScreenName_Call) RunAndReturn(run func(ctx context.Context, chatCookie string, recipient state.IdentScreenName, msg wire.SNACMessage)) *mockChatMessageRelayer_RelayToScreenName_Call {
 	_c.Run(run)
 	return _c
 }
-
-// newMockChatMessageRelayer creates a new instance of mockChatMessageRelayer. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockChatMessageRelayer(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockChatMessageRelayer {
-	mock := &mockChatMessageRelayer{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 92 - 57
foodgroup/mock_chat_room_registry_test.go

@@ -1,14 +1,30 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package foodgroup
 
 import (
-	context "context"
+	"context"
 
-	state "github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/state"
 	mock "github.com/stretchr/testify/mock"
 )
 
+// newMockChatRoomRegistry creates a new instance of mockChatRoomRegistry. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockChatRoomRegistry(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockChatRoomRegistry {
+	mock := &mockChatRoomRegistry{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockChatRoomRegistry is an autogenerated mock type for the ChatRoomRegistry type
 type mockChatRoomRegistry struct {
 	mock.Mock
@@ -22,9 +38,9 @@ func (_m *mockChatRoomRegistry) EXPECT() *mockChatRoomRegistry_Expecter {
 	return &mockChatRoomRegistry_Expecter{mock: &_m.Mock}
 }
 
-// ChatRoomByCookie provides a mock function with given fields: ctx, chatCookie
-func (_m *mockChatRoomRegistry) ChatRoomByCookie(ctx context.Context, chatCookie string) (state.ChatRoom, error) {
-	ret := _m.Called(ctx, chatCookie)
+// ChatRoomByCookie provides a mock function for the type mockChatRoomRegistry
+func (_mock *mockChatRoomRegistry) ChatRoomByCookie(ctx context.Context, chatCookie string) (state.ChatRoom, error) {
+	ret := _mock.Called(ctx, chatCookie)
 
 	if len(ret) == 0 {
 		panic("no return value specified for ChatRoomByCookie")
@@ -32,21 +48,19 @@ func (_m *mockChatRoomRegistry) ChatRoomByCookie(ctx context.Context, chatCookie
 
 	var r0 state.ChatRoom
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, string) (state.ChatRoom, error)); ok {
-		return rf(ctx, chatCookie)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, string) (state.ChatRoom, error)); ok {
+		return returnFunc(ctx, chatCookie)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, string) state.ChatRoom); ok {
-		r0 = rf(ctx, chatCookie)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, string) state.ChatRoom); ok {
+		r0 = returnFunc(ctx, chatCookie)
 	} else {
 		r0 = ret.Get(0).(state.ChatRoom)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, string) error); ok {
-		r1 = rf(ctx, chatCookie)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, string) error); ok {
+		r1 = returnFunc(ctx, chatCookie)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -64,24 +78,35 @@ func (_e *mockChatRoomRegistry_Expecter) ChatRoomByCookie(ctx interface{}, chatC
 
 func (_c *mockChatRoomRegistry_ChatRoomByCookie_Call) Run(run func(ctx context.Context, chatCookie string)) *mockChatRoomRegistry_ChatRoomByCookie_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(string))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 string
+		if args[1] != nil {
+			arg1 = args[1].(string)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockChatRoomRegistry_ChatRoomByCookie_Call) Return(_a0 state.ChatRoom, _a1 error) *mockChatRoomRegistry_ChatRoomByCookie_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockChatRoomRegistry_ChatRoomByCookie_Call) Return(chatRoom state.ChatRoom, err error) *mockChatRoomRegistry_ChatRoomByCookie_Call {
+	_c.Call.Return(chatRoom, err)
 	return _c
 }
 
-func (_c *mockChatRoomRegistry_ChatRoomByCookie_Call) RunAndReturn(run func(context.Context, string) (state.ChatRoom, error)) *mockChatRoomRegistry_ChatRoomByCookie_Call {
+func (_c *mockChatRoomRegistry_ChatRoomByCookie_Call) RunAndReturn(run func(ctx context.Context, chatCookie string) (state.ChatRoom, error)) *mockChatRoomRegistry_ChatRoomByCookie_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// ChatRoomByName provides a mock function with given fields: ctx, exchange, name
-func (_m *mockChatRoomRegistry) ChatRoomByName(ctx context.Context, exchange uint16, name string) (state.ChatRoom, error) {
-	ret := _m.Called(ctx, exchange, name)
+// ChatRoomByName provides a mock function for the type mockChatRoomRegistry
+func (_mock *mockChatRoomRegistry) ChatRoomByName(ctx context.Context, exchange uint16, name string) (state.ChatRoom, error) {
+	ret := _mock.Called(ctx, exchange, name)
 
 	if len(ret) == 0 {
 		panic("no return value specified for ChatRoomByName")
@@ -89,21 +114,19 @@ func (_m *mockChatRoomRegistry) ChatRoomByName(ctx context.Context, exchange uin
 
 	var r0 state.ChatRoom
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, uint16, string) (state.ChatRoom, error)); ok {
-		return rf(ctx, exchange, name)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, uint16, string) (state.ChatRoom, error)); ok {
+		return returnFunc(ctx, exchange, name)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, uint16, string) state.ChatRoom); ok {
-		r0 = rf(ctx, exchange, name)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, uint16, string) state.ChatRoom); ok {
+		r0 = returnFunc(ctx, exchange, name)
 	} else {
 		r0 = ret.Get(0).(state.ChatRoom)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, uint16, string) error); ok {
-		r1 = rf(ctx, exchange, name)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, uint16, string) error); ok {
+		r1 = returnFunc(ctx, exchange, name)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -122,36 +145,51 @@ func (_e *mockChatRoomRegistry_Expecter) ChatRoomByName(ctx interface{}, exchang
 
 func (_c *mockChatRoomRegistry_ChatRoomByName_Call) Run(run func(ctx context.Context, exchange uint16, name string)) *mockChatRoomRegistry_ChatRoomByName_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(uint16), args[2].(string))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 uint16
+		if args[1] != nil {
+			arg1 = args[1].(uint16)
+		}
+		var arg2 string
+		if args[2] != nil {
+			arg2 = args[2].(string)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockChatRoomRegistry_ChatRoomByName_Call) Return(_a0 state.ChatRoom, _a1 error) *mockChatRoomRegistry_ChatRoomByName_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockChatRoomRegistry_ChatRoomByName_Call) Return(chatRoom state.ChatRoom, err error) *mockChatRoomRegistry_ChatRoomByName_Call {
+	_c.Call.Return(chatRoom, err)
 	return _c
 }
 
-func (_c *mockChatRoomRegistry_ChatRoomByName_Call) RunAndReturn(run func(context.Context, uint16, string) (state.ChatRoom, error)) *mockChatRoomRegistry_ChatRoomByName_Call {
+func (_c *mockChatRoomRegistry_ChatRoomByName_Call) RunAndReturn(run func(ctx context.Context, exchange uint16, name string) (state.ChatRoom, error)) *mockChatRoomRegistry_ChatRoomByName_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// CreateChatRoom provides a mock function with given fields: ctx, chatRoom
-func (_m *mockChatRoomRegistry) CreateChatRoom(ctx context.Context, chatRoom *state.ChatRoom) error {
-	ret := _m.Called(ctx, chatRoom)
+// CreateChatRoom provides a mock function for the type mockChatRoomRegistry
+func (_mock *mockChatRoomRegistry) CreateChatRoom(ctx context.Context, chatRoom *state.ChatRoom) error {
+	ret := _mock.Called(ctx, chatRoom)
 
 	if len(ret) == 0 {
 		panic("no return value specified for CreateChatRoom")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.ChatRoom) error); ok {
-		r0 = rf(ctx, chatRoom)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.ChatRoom) error); ok {
+		r0 = returnFunc(ctx, chatRoom)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -169,31 +207,28 @@ func (_e *mockChatRoomRegistry_Expecter) CreateChatRoom(ctx interface{}, chatRoo
 
 func (_c *mockChatRoomRegistry_CreateChatRoom_Call) Run(run func(ctx context.Context, chatRoom *state.ChatRoom)) *mockChatRoomRegistry_CreateChatRoom_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.ChatRoom))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.ChatRoom
+		if args[1] != nil {
+			arg1 = args[1].(*state.ChatRoom)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockChatRoomRegistry_CreateChatRoom_Call) Return(_a0 error) *mockChatRoomRegistry_CreateChatRoom_Call {
-	_c.Call.Return(_a0)
+func (_c *mockChatRoomRegistry_CreateChatRoom_Call) Return(err error) *mockChatRoomRegistry_CreateChatRoom_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockChatRoomRegistry_CreateChatRoom_Call) RunAndReturn(run func(context.Context, *state.ChatRoom) error) *mockChatRoomRegistry_CreateChatRoom_Call {
+func (_c *mockChatRoomRegistry_CreateChatRoom_Call) RunAndReturn(run func(ctx context.Context, chatRoom *state.ChatRoom) error) *mockChatRoomRegistry_CreateChatRoom_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockChatRoomRegistry creates a new instance of mockChatRoomRegistry. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockChatRoomRegistry(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockChatRoomRegistry {
-	mock := &mockChatRoomRegistry{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 60 - 37
foodgroup/mock_chat_session_registry_test.go

@@ -1,14 +1,30 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package foodgroup
 
 import (
-	context "context"
+	"context"
 
-	state "github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/state"
 	mock "github.com/stretchr/testify/mock"
 )
 
+// newMockChatSessionRegistry creates a new instance of mockChatSessionRegistry. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockChatSessionRegistry(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockChatSessionRegistry {
+	mock := &mockChatSessionRegistry{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockChatSessionRegistry is an autogenerated mock type for the ChatSessionRegistry type
 type mockChatSessionRegistry struct {
 	mock.Mock
@@ -22,9 +38,9 @@ func (_m *mockChatSessionRegistry) EXPECT() *mockChatSessionRegistry_Expecter {
 	return &mockChatSessionRegistry_Expecter{mock: &_m.Mock}
 }
 
-// AddSession provides a mock function with given fields: ctx, chatCookie, screenName
-func (_m *mockChatSessionRegistry) AddSession(ctx context.Context, chatCookie string, screenName state.DisplayScreenName) (*state.Session, error) {
-	ret := _m.Called(ctx, chatCookie, screenName)
+// AddSession provides a mock function for the type mockChatSessionRegistry
+func (_mock *mockChatSessionRegistry) AddSession(ctx context.Context, chatCookie string, screenName state.DisplayScreenName) (*state.Session, error) {
+	ret := _mock.Called(ctx, chatCookie, screenName)
 
 	if len(ret) == 0 {
 		panic("no return value specified for AddSession")
@@ -32,23 +48,21 @@ func (_m *mockChatSessionRegistry) AddSession(ctx context.Context, chatCookie st
 
 	var r0 *state.Session
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, string, state.DisplayScreenName) (*state.Session, error)); ok {
-		return rf(ctx, chatCookie, screenName)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, string, state.DisplayScreenName) (*state.Session, error)); ok {
+		return returnFunc(ctx, chatCookie, screenName)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, string, state.DisplayScreenName) *state.Session); ok {
-		r0 = rf(ctx, chatCookie, screenName)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, string, state.DisplayScreenName) *state.Session); ok {
+		r0 = returnFunc(ctx, chatCookie, screenName)
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).(*state.Session)
 		}
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, string, state.DisplayScreenName) error); ok {
-		r1 = rf(ctx, chatCookie, screenName)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, string, state.DisplayScreenName) error); ok {
+		r1 = returnFunc(ctx, chatCookie, screenName)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -67,24 +81,41 @@ func (_e *mockChatSessionRegistry_Expecter) AddSession(ctx interface{}, chatCook
 
 func (_c *mockChatSessionRegistry_AddSession_Call) Run(run func(ctx context.Context, chatCookie string, screenName state.DisplayScreenName)) *mockChatSessionRegistry_AddSession_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(string), args[2].(state.DisplayScreenName))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 string
+		if args[1] != nil {
+			arg1 = args[1].(string)
+		}
+		var arg2 state.DisplayScreenName
+		if args[2] != nil {
+			arg2 = args[2].(state.DisplayScreenName)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockChatSessionRegistry_AddSession_Call) Return(_a0 *state.Session, _a1 error) *mockChatSessionRegistry_AddSession_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockChatSessionRegistry_AddSession_Call) Return(session *state.Session, err error) *mockChatSessionRegistry_AddSession_Call {
+	_c.Call.Return(session, err)
 	return _c
 }
 
-func (_c *mockChatSessionRegistry_AddSession_Call) RunAndReturn(run func(context.Context, string, state.DisplayScreenName) (*state.Session, error)) *mockChatSessionRegistry_AddSession_Call {
+func (_c *mockChatSessionRegistry_AddSession_Call) RunAndReturn(run func(ctx context.Context, chatCookie string, screenName state.DisplayScreenName) (*state.Session, error)) *mockChatSessionRegistry_AddSession_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// RemoveSession provides a mock function with given fields: sess
-func (_m *mockChatSessionRegistry) RemoveSession(sess *state.Session) {
-	_m.Called(sess)
+// RemoveSession provides a mock function for the type mockChatSessionRegistry
+func (_mock *mockChatSessionRegistry) RemoveSession(sess *state.Session) {
+	_mock.Called(sess)
+	return
 }
 
 // mockChatSessionRegistry_RemoveSession_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'RemoveSession'
@@ -100,7 +131,13 @@ func (_e *mockChatSessionRegistry_Expecter) RemoveSession(sess interface{}) *moc
 
 func (_c *mockChatSessionRegistry_RemoveSession_Call) Run(run func(sess *state.Session)) *mockChatSessionRegistry_RemoveSession_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(*state.Session))
+		var arg0 *state.Session
+		if args[0] != nil {
+			arg0 = args[0].(*state.Session)
+		}
+		run(
+			arg0,
+		)
 	})
 	return _c
 }
@@ -110,21 +147,7 @@ func (_c *mockChatSessionRegistry_RemoveSession_Call) Return() *mockChatSessionR
 	return _c
 }
 
-func (_c *mockChatSessionRegistry_RemoveSession_Call) RunAndReturn(run func(*state.Session)) *mockChatSessionRegistry_RemoveSession_Call {
+func (_c *mockChatSessionRegistry_RemoveSession_Call) RunAndReturn(run func(sess *state.Session)) *mockChatSessionRegistry_RemoveSession_Call {
 	_c.Run(run)
 	return _c
 }
-
-// newMockChatSessionRegistry creates a new instance of mockChatSessionRegistry. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockChatSessionRegistry(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockChatSessionRegistry {
-	mock := &mockChatSessionRegistry{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 195 - 89
foodgroup/mock_client_side_buddy_list_manager_test.go

@@ -1,16 +1,31 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package foodgroup
 
 import (
-	context "context"
+	"context"
 
-	state "github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/wire"
 	mock "github.com/stretchr/testify/mock"
-
-	wire "github.com/mk6i/retro-aim-server/wire"
 )
 
+// newMockClientSideBuddyListManager creates a new instance of mockClientSideBuddyListManager. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockClientSideBuddyListManager(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockClientSideBuddyListManager {
+	mock := &mockClientSideBuddyListManager{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockClientSideBuddyListManager is an autogenerated mock type for the ClientSideBuddyListManager type
 type mockClientSideBuddyListManager struct {
 	mock.Mock
@@ -24,21 +39,20 @@ func (_m *mockClientSideBuddyListManager) EXPECT() *mockClientSideBuddyListManag
 	return &mockClientSideBuddyListManager_Expecter{mock: &_m.Mock}
 }
 
-// AddBuddy provides a mock function with given fields: ctx, me, them
-func (_m *mockClientSideBuddyListManager) AddBuddy(ctx context.Context, me state.IdentScreenName, them state.IdentScreenName) error {
-	ret := _m.Called(ctx, me, them)
+// AddBuddy provides a mock function for the type mockClientSideBuddyListManager
+func (_mock *mockClientSideBuddyListManager) AddBuddy(ctx context.Context, me state.IdentScreenName, them state.IdentScreenName) error {
+	ret := _mock.Called(ctx, me, them)
 
 	if len(ret) == 0 {
 		panic("no return value specified for AddBuddy")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, state.IdentScreenName) error); ok {
-		r0 = rf(ctx, me, them)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, state.IdentScreenName) error); ok {
+		r0 = returnFunc(ctx, me, them)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -57,36 +71,51 @@ func (_e *mockClientSideBuddyListManager_Expecter) AddBuddy(ctx interface{}, me
 
 func (_c *mockClientSideBuddyListManager_AddBuddy_Call) Run(run func(ctx context.Context, me state.IdentScreenName, them state.IdentScreenName)) *mockClientSideBuddyListManager_AddBuddy_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName), args[2].(state.IdentScreenName))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		var arg2 state.IdentScreenName
+		if args[2] != nil {
+			arg2 = args[2].(state.IdentScreenName)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockClientSideBuddyListManager_AddBuddy_Call) Return(_a0 error) *mockClientSideBuddyListManager_AddBuddy_Call {
-	_c.Call.Return(_a0)
+func (_c *mockClientSideBuddyListManager_AddBuddy_Call) Return(err error) *mockClientSideBuddyListManager_AddBuddy_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockClientSideBuddyListManager_AddBuddy_Call) RunAndReturn(run func(context.Context, state.IdentScreenName, state.IdentScreenName) error) *mockClientSideBuddyListManager_AddBuddy_Call {
+func (_c *mockClientSideBuddyListManager_AddBuddy_Call) RunAndReturn(run func(ctx context.Context, me state.IdentScreenName, them state.IdentScreenName) error) *mockClientSideBuddyListManager_AddBuddy_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// DenyBuddy provides a mock function with given fields: ctx, me, them
-func (_m *mockClientSideBuddyListManager) DenyBuddy(ctx context.Context, me state.IdentScreenName, them state.IdentScreenName) error {
-	ret := _m.Called(ctx, me, them)
+// DenyBuddy provides a mock function for the type mockClientSideBuddyListManager
+func (_mock *mockClientSideBuddyListManager) DenyBuddy(ctx context.Context, me state.IdentScreenName, them state.IdentScreenName) error {
+	ret := _mock.Called(ctx, me, them)
 
 	if len(ret) == 0 {
 		panic("no return value specified for DenyBuddy")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, state.IdentScreenName) error); ok {
-		r0 = rf(ctx, me, them)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, state.IdentScreenName) error); ok {
+		r0 = returnFunc(ctx, me, them)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -105,36 +134,51 @@ func (_e *mockClientSideBuddyListManager_Expecter) DenyBuddy(ctx interface{}, me
 
 func (_c *mockClientSideBuddyListManager_DenyBuddy_Call) Run(run func(ctx context.Context, me state.IdentScreenName, them state.IdentScreenName)) *mockClientSideBuddyListManager_DenyBuddy_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName), args[2].(state.IdentScreenName))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		var arg2 state.IdentScreenName
+		if args[2] != nil {
+			arg2 = args[2].(state.IdentScreenName)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockClientSideBuddyListManager_DenyBuddy_Call) Return(_a0 error) *mockClientSideBuddyListManager_DenyBuddy_Call {
-	_c.Call.Return(_a0)
+func (_c *mockClientSideBuddyListManager_DenyBuddy_Call) Return(err error) *mockClientSideBuddyListManager_DenyBuddy_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockClientSideBuddyListManager_DenyBuddy_Call) RunAndReturn(run func(context.Context, state.IdentScreenName, state.IdentScreenName) error) *mockClientSideBuddyListManager_DenyBuddy_Call {
+func (_c *mockClientSideBuddyListManager_DenyBuddy_Call) RunAndReturn(run func(ctx context.Context, me state.IdentScreenName, them state.IdentScreenName) error) *mockClientSideBuddyListManager_DenyBuddy_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// PermitBuddy provides a mock function with given fields: ctx, me, them
-func (_m *mockClientSideBuddyListManager) PermitBuddy(ctx context.Context, me state.IdentScreenName, them state.IdentScreenName) error {
-	ret := _m.Called(ctx, me, them)
+// PermitBuddy provides a mock function for the type mockClientSideBuddyListManager
+func (_mock *mockClientSideBuddyListManager) PermitBuddy(ctx context.Context, me state.IdentScreenName, them state.IdentScreenName) error {
+	ret := _mock.Called(ctx, me, them)
 
 	if len(ret) == 0 {
 		panic("no return value specified for PermitBuddy")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, state.IdentScreenName) error); ok {
-		r0 = rf(ctx, me, them)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, state.IdentScreenName) error); ok {
+		r0 = returnFunc(ctx, me, them)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -153,36 +197,51 @@ func (_e *mockClientSideBuddyListManager_Expecter) PermitBuddy(ctx interface{},
 
 func (_c *mockClientSideBuddyListManager_PermitBuddy_Call) Run(run func(ctx context.Context, me state.IdentScreenName, them state.IdentScreenName)) *mockClientSideBuddyListManager_PermitBuddy_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName), args[2].(state.IdentScreenName))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		var arg2 state.IdentScreenName
+		if args[2] != nil {
+			arg2 = args[2].(state.IdentScreenName)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockClientSideBuddyListManager_PermitBuddy_Call) Return(_a0 error) *mockClientSideBuddyListManager_PermitBuddy_Call {
-	_c.Call.Return(_a0)
+func (_c *mockClientSideBuddyListManager_PermitBuddy_Call) Return(err error) *mockClientSideBuddyListManager_PermitBuddy_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockClientSideBuddyListManager_PermitBuddy_Call) RunAndReturn(run func(context.Context, state.IdentScreenName, state.IdentScreenName) error) *mockClientSideBuddyListManager_PermitBuddy_Call {
+func (_c *mockClientSideBuddyListManager_PermitBuddy_Call) RunAndReturn(run func(ctx context.Context, me state.IdentScreenName, them state.IdentScreenName) error) *mockClientSideBuddyListManager_PermitBuddy_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// RemoveBuddy provides a mock function with given fields: ctx, me, them
-func (_m *mockClientSideBuddyListManager) RemoveBuddy(ctx context.Context, me state.IdentScreenName, them state.IdentScreenName) error {
-	ret := _m.Called(ctx, me, them)
+// RemoveBuddy provides a mock function for the type mockClientSideBuddyListManager
+func (_mock *mockClientSideBuddyListManager) RemoveBuddy(ctx context.Context, me state.IdentScreenName, them state.IdentScreenName) error {
+	ret := _mock.Called(ctx, me, them)
 
 	if len(ret) == 0 {
 		panic("no return value specified for RemoveBuddy")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, state.IdentScreenName) error); ok {
-		r0 = rf(ctx, me, them)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, state.IdentScreenName) error); ok {
+		r0 = returnFunc(ctx, me, them)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -201,36 +260,51 @@ func (_e *mockClientSideBuddyListManager_Expecter) RemoveBuddy(ctx interface{},
 
 func (_c *mockClientSideBuddyListManager_RemoveBuddy_Call) Run(run func(ctx context.Context, me state.IdentScreenName, them state.IdentScreenName)) *mockClientSideBuddyListManager_RemoveBuddy_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName), args[2].(state.IdentScreenName))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		var arg2 state.IdentScreenName
+		if args[2] != nil {
+			arg2 = args[2].(state.IdentScreenName)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockClientSideBuddyListManager_RemoveBuddy_Call) Return(_a0 error) *mockClientSideBuddyListManager_RemoveBuddy_Call {
-	_c.Call.Return(_a0)
+func (_c *mockClientSideBuddyListManager_RemoveBuddy_Call) Return(err error) *mockClientSideBuddyListManager_RemoveBuddy_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockClientSideBuddyListManager_RemoveBuddy_Call) RunAndReturn(run func(context.Context, state.IdentScreenName, state.IdentScreenName) error) *mockClientSideBuddyListManager_RemoveBuddy_Call {
+func (_c *mockClientSideBuddyListManager_RemoveBuddy_Call) RunAndReturn(run func(ctx context.Context, me state.IdentScreenName, them state.IdentScreenName) error) *mockClientSideBuddyListManager_RemoveBuddy_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// RemoveDenyBuddy provides a mock function with given fields: ctx, me, them
-func (_m *mockClientSideBuddyListManager) RemoveDenyBuddy(ctx context.Context, me state.IdentScreenName, them state.IdentScreenName) error {
-	ret := _m.Called(ctx, me, them)
+// RemoveDenyBuddy provides a mock function for the type mockClientSideBuddyListManager
+func (_mock *mockClientSideBuddyListManager) RemoveDenyBuddy(ctx context.Context, me state.IdentScreenName, them state.IdentScreenName) error {
+	ret := _mock.Called(ctx, me, them)
 
 	if len(ret) == 0 {
 		panic("no return value specified for RemoveDenyBuddy")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, state.IdentScreenName) error); ok {
-		r0 = rf(ctx, me, them)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, state.IdentScreenName) error); ok {
+		r0 = returnFunc(ctx, me, them)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -249,36 +323,51 @@ func (_e *mockClientSideBuddyListManager_Expecter) RemoveDenyBuddy(ctx interface
 
 func (_c *mockClientSideBuddyListManager_RemoveDenyBuddy_Call) Run(run func(ctx context.Context, me state.IdentScreenName, them state.IdentScreenName)) *mockClientSideBuddyListManager_RemoveDenyBuddy_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName), args[2].(state.IdentScreenName))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		var arg2 state.IdentScreenName
+		if args[2] != nil {
+			arg2 = args[2].(state.IdentScreenName)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockClientSideBuddyListManager_RemoveDenyBuddy_Call) Return(_a0 error) *mockClientSideBuddyListManager_RemoveDenyBuddy_Call {
-	_c.Call.Return(_a0)
+func (_c *mockClientSideBuddyListManager_RemoveDenyBuddy_Call) Return(err error) *mockClientSideBuddyListManager_RemoveDenyBuddy_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockClientSideBuddyListManager_RemoveDenyBuddy_Call) RunAndReturn(run func(context.Context, state.IdentScreenName, state.IdentScreenName) error) *mockClientSideBuddyListManager_RemoveDenyBuddy_Call {
+func (_c *mockClientSideBuddyListManager_RemoveDenyBuddy_Call) RunAndReturn(run func(ctx context.Context, me state.IdentScreenName, them state.IdentScreenName) error) *mockClientSideBuddyListManager_RemoveDenyBuddy_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// RemovePermitBuddy provides a mock function with given fields: ctx, me, them
-func (_m *mockClientSideBuddyListManager) RemovePermitBuddy(ctx context.Context, me state.IdentScreenName, them state.IdentScreenName) error {
-	ret := _m.Called(ctx, me, them)
+// RemovePermitBuddy provides a mock function for the type mockClientSideBuddyListManager
+func (_mock *mockClientSideBuddyListManager) RemovePermitBuddy(ctx context.Context, me state.IdentScreenName, them state.IdentScreenName) error {
+	ret := _mock.Called(ctx, me, them)
 
 	if len(ret) == 0 {
 		panic("no return value specified for RemovePermitBuddy")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, state.IdentScreenName) error); ok {
-		r0 = rf(ctx, me, them)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, state.IdentScreenName) error); ok {
+		r0 = returnFunc(ctx, me, them)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -297,36 +386,51 @@ func (_e *mockClientSideBuddyListManager_Expecter) RemovePermitBuddy(ctx interfa
 
 func (_c *mockClientSideBuddyListManager_RemovePermitBuddy_Call) Run(run func(ctx context.Context, me state.IdentScreenName, them state.IdentScreenName)) *mockClientSideBuddyListManager_RemovePermitBuddy_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName), args[2].(state.IdentScreenName))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		var arg2 state.IdentScreenName
+		if args[2] != nil {
+			arg2 = args[2].(state.IdentScreenName)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockClientSideBuddyListManager_RemovePermitBuddy_Call) Return(_a0 error) *mockClientSideBuddyListManager_RemovePermitBuddy_Call {
-	_c.Call.Return(_a0)
+func (_c *mockClientSideBuddyListManager_RemovePermitBuddy_Call) Return(err error) *mockClientSideBuddyListManager_RemovePermitBuddy_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockClientSideBuddyListManager_RemovePermitBuddy_Call) RunAndReturn(run func(context.Context, state.IdentScreenName, state.IdentScreenName) error) *mockClientSideBuddyListManager_RemovePermitBuddy_Call {
+func (_c *mockClientSideBuddyListManager_RemovePermitBuddy_Call) RunAndReturn(run func(ctx context.Context, me state.IdentScreenName, them state.IdentScreenName) error) *mockClientSideBuddyListManager_RemovePermitBuddy_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// SetPDMode provides a mock function with given fields: ctx, me, pdMode
-func (_m *mockClientSideBuddyListManager) SetPDMode(ctx context.Context, me state.IdentScreenName, pdMode wire.FeedbagPDMode) error {
-	ret := _m.Called(ctx, me, pdMode)
+// SetPDMode provides a mock function for the type mockClientSideBuddyListManager
+func (_mock *mockClientSideBuddyListManager) SetPDMode(ctx context.Context, me state.IdentScreenName, pdMode wire.FeedbagPDMode) error {
+	ret := _mock.Called(ctx, me, pdMode)
 
 	if len(ret) == 0 {
 		panic("no return value specified for SetPDMode")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, wire.FeedbagPDMode) error); ok {
-		r0 = rf(ctx, me, pdMode)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, wire.FeedbagPDMode) error); ok {
+		r0 = returnFunc(ctx, me, pdMode)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -345,31 +449,33 @@ func (_e *mockClientSideBuddyListManager_Expecter) SetPDMode(ctx interface{}, me
 
 func (_c *mockClientSideBuddyListManager_SetPDMode_Call) Run(run func(ctx context.Context, me state.IdentScreenName, pdMode wire.FeedbagPDMode)) *mockClientSideBuddyListManager_SetPDMode_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName), args[2].(wire.FeedbagPDMode))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		var arg2 wire.FeedbagPDMode
+		if args[2] != nil {
+			arg2 = args[2].(wire.FeedbagPDMode)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockClientSideBuddyListManager_SetPDMode_Call) Return(_a0 error) *mockClientSideBuddyListManager_SetPDMode_Call {
-	_c.Call.Return(_a0)
+func (_c *mockClientSideBuddyListManager_SetPDMode_Call) Return(err error) *mockClientSideBuddyListManager_SetPDMode_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockClientSideBuddyListManager_SetPDMode_Call) RunAndReturn(run func(context.Context, state.IdentScreenName, wire.FeedbagPDMode) error) *mockClientSideBuddyListManager_SetPDMode_Call {
+func (_c *mockClientSideBuddyListManager_SetPDMode_Call) RunAndReturn(run func(ctx context.Context, me state.IdentScreenName, pdMode wire.FeedbagPDMode) error) *mockClientSideBuddyListManager_SetPDMode_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockClientSideBuddyListManager creates a new instance of mockClientSideBuddyListManager. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockClientSideBuddyListManager(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockClientSideBuddyListManager {
-	mock := &mockClientSideBuddyListManager{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 58 - 46
foodgroup/mock_cookie_baker_test.go

@@ -1,8 +1,26 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package foodgroup
 
-import mock "github.com/stretchr/testify/mock"
+import (
+	mock "github.com/stretchr/testify/mock"
+)
+
+// newMockCookieBaker creates a new instance of mockCookieBaker. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockCookieBaker(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockCookieBaker {
+	mock := &mockCookieBaker{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
 
 // mockCookieBaker is an autogenerated mock type for the CookieBaker type
 type mockCookieBaker struct {
@@ -17,9 +35,9 @@ func (_m *mockCookieBaker) EXPECT() *mockCookieBaker_Expecter {
 	return &mockCookieBaker_Expecter{mock: &_m.Mock}
 }
 
-// Crack provides a mock function with given fields: data
-func (_m *mockCookieBaker) Crack(data []byte) ([]byte, error) {
-	ret := _m.Called(data)
+// Crack provides a mock function for the type mockCookieBaker
+func (_mock *mockCookieBaker) Crack(data []byte) ([]byte, error) {
+	ret := _mock.Called(data)
 
 	if len(ret) == 0 {
 		panic("no return value specified for Crack")
@@ -27,23 +45,21 @@ func (_m *mockCookieBaker) Crack(data []byte) ([]byte, error) {
 
 	var r0 []byte
 	var r1 error
-	if rf, ok := ret.Get(0).(func([]byte) ([]byte, error)); ok {
-		return rf(data)
+	if returnFunc, ok := ret.Get(0).(func([]byte) ([]byte, error)); ok {
+		return returnFunc(data)
 	}
-	if rf, ok := ret.Get(0).(func([]byte) []byte); ok {
-		r0 = rf(data)
+	if returnFunc, ok := ret.Get(0).(func([]byte) []byte); ok {
+		r0 = returnFunc(data)
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).([]byte)
 		}
 	}
-
-	if rf, ok := ret.Get(1).(func([]byte) error); ok {
-		r1 = rf(data)
+	if returnFunc, ok := ret.Get(1).(func([]byte) error); ok {
+		r1 = returnFunc(data)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -60,24 +76,30 @@ func (_e *mockCookieBaker_Expecter) Crack(data interface{}) *mockCookieBaker_Cra
 
 func (_c *mockCookieBaker_Crack_Call) Run(run func(data []byte)) *mockCookieBaker_Crack_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].([]byte))
+		var arg0 []byte
+		if args[0] != nil {
+			arg0 = args[0].([]byte)
+		}
+		run(
+			arg0,
+		)
 	})
 	return _c
 }
 
-func (_c *mockCookieBaker_Crack_Call) Return(_a0 []byte, _a1 error) *mockCookieBaker_Crack_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockCookieBaker_Crack_Call) Return(bytes []byte, err error) *mockCookieBaker_Crack_Call {
+	_c.Call.Return(bytes, err)
 	return _c
 }
 
-func (_c *mockCookieBaker_Crack_Call) RunAndReturn(run func([]byte) ([]byte, error)) *mockCookieBaker_Crack_Call {
+func (_c *mockCookieBaker_Crack_Call) RunAndReturn(run func(data []byte) ([]byte, error)) *mockCookieBaker_Crack_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// Issue provides a mock function with given fields: data
-func (_m *mockCookieBaker) Issue(data []byte) ([]byte, error) {
-	ret := _m.Called(data)
+// Issue provides a mock function for the type mockCookieBaker
+func (_mock *mockCookieBaker) Issue(data []byte) ([]byte, error) {
+	ret := _mock.Called(data)
 
 	if len(ret) == 0 {
 		panic("no return value specified for Issue")
@@ -85,23 +107,21 @@ func (_m *mockCookieBaker) Issue(data []byte) ([]byte, error) {
 
 	var r0 []byte
 	var r1 error
-	if rf, ok := ret.Get(0).(func([]byte) ([]byte, error)); ok {
-		return rf(data)
+	if returnFunc, ok := ret.Get(0).(func([]byte) ([]byte, error)); ok {
+		return returnFunc(data)
 	}
-	if rf, ok := ret.Get(0).(func([]byte) []byte); ok {
-		r0 = rf(data)
+	if returnFunc, ok := ret.Get(0).(func([]byte) []byte); ok {
+		r0 = returnFunc(data)
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).([]byte)
 		}
 	}
-
-	if rf, ok := ret.Get(1).(func([]byte) error); ok {
-		r1 = rf(data)
+	if returnFunc, ok := ret.Get(1).(func([]byte) error); ok {
+		r1 = returnFunc(data)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -118,31 +138,23 @@ func (_e *mockCookieBaker_Expecter) Issue(data interface{}) *mockCookieBaker_Iss
 
 func (_c *mockCookieBaker_Issue_Call) Run(run func(data []byte)) *mockCookieBaker_Issue_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].([]byte))
+		var arg0 []byte
+		if args[0] != nil {
+			arg0 = args[0].([]byte)
+		}
+		run(
+			arg0,
+		)
 	})
 	return _c
 }
 
-func (_c *mockCookieBaker_Issue_Call) Return(_a0 []byte, _a1 error) *mockCookieBaker_Issue_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockCookieBaker_Issue_Call) Return(bytes []byte, err error) *mockCookieBaker_Issue_Call {
+	_c.Call.Return(bytes, err)
 	return _c
 }
 
-func (_c *mockCookieBaker_Issue_Call) RunAndReturn(run func([]byte) ([]byte, error)) *mockCookieBaker_Issue_Call {
+func (_c *mockCookieBaker_Issue_Call) RunAndReturn(run func(data []byte) ([]byte, error)) *mockCookieBaker_Issue_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockCookieBaker creates a new instance of mockCookieBaker. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockCookieBaker(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockCookieBaker {
-	mock := &mockCookieBaker{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 138 - 80
foodgroup/mock_feedbag_manager_test.go

@@ -1,17 +1,31 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package foodgroup
 
 import (
-	context "context"
+	"context"
+	"time"
 
-	state "github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/wire"
 	mock "github.com/stretchr/testify/mock"
+)
+
+// newMockFeedbagManager creates a new instance of mockFeedbagManager. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockFeedbagManager(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockFeedbagManager {
+	mock := &mockFeedbagManager{}
+	mock.Mock.Test(t)
 
-	time "time"
+	t.Cleanup(func() { mock.AssertExpectations(t) })
 
-	wire "github.com/mk6i/retro-aim-server/wire"
-)
+	return mock
+}
 
 // mockFeedbagManager is an autogenerated mock type for the FeedbagManager type
 type mockFeedbagManager struct {
@@ -26,9 +40,9 @@ func (_m *mockFeedbagManager) EXPECT() *mockFeedbagManager_Expecter {
 	return &mockFeedbagManager_Expecter{mock: &_m.Mock}
 }
 
-// Feedbag provides a mock function with given fields: ctx, screenName
-func (_m *mockFeedbagManager) Feedbag(ctx context.Context, screenName state.IdentScreenName) ([]wire.FeedbagItem, error) {
-	ret := _m.Called(ctx, screenName)
+// Feedbag provides a mock function for the type mockFeedbagManager
+func (_mock *mockFeedbagManager) Feedbag(ctx context.Context, screenName state.IdentScreenName) ([]wire.FeedbagItem, error) {
+	ret := _mock.Called(ctx, screenName)
 
 	if len(ret) == 0 {
 		panic("no return value specified for Feedbag")
@@ -36,23 +50,21 @@ func (_m *mockFeedbagManager) Feedbag(ctx context.Context, screenName state.Iden
 
 	var r0 []wire.FeedbagItem
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) ([]wire.FeedbagItem, error)); ok {
-		return rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) ([]wire.FeedbagItem, error)); ok {
+		return returnFunc(ctx, screenName)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) []wire.FeedbagItem); ok {
-		r0 = rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) []wire.FeedbagItem); ok {
+		r0 = returnFunc(ctx, screenName)
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).([]wire.FeedbagItem)
 		}
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, state.IdentScreenName) error); ok {
-		r1 = rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, state.IdentScreenName) error); ok {
+		r1 = returnFunc(ctx, screenName)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -70,36 +82,46 @@ func (_e *mockFeedbagManager_Expecter) Feedbag(ctx interface{}, screenName inter
 
 func (_c *mockFeedbagManager_Feedbag_Call) Run(run func(ctx context.Context, screenName state.IdentScreenName)) *mockFeedbagManager_Feedbag_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockFeedbagManager_Feedbag_Call) Return(_a0 []wire.FeedbagItem, _a1 error) *mockFeedbagManager_Feedbag_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockFeedbagManager_Feedbag_Call) Return(feedbagItems []wire.FeedbagItem, err error) *mockFeedbagManager_Feedbag_Call {
+	_c.Call.Return(feedbagItems, err)
 	return _c
 }
 
-func (_c *mockFeedbagManager_Feedbag_Call) RunAndReturn(run func(context.Context, state.IdentScreenName) ([]wire.FeedbagItem, error)) *mockFeedbagManager_Feedbag_Call {
+func (_c *mockFeedbagManager_Feedbag_Call) RunAndReturn(run func(ctx context.Context, screenName state.IdentScreenName) ([]wire.FeedbagItem, error)) *mockFeedbagManager_Feedbag_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// FeedbagDelete provides a mock function with given fields: ctx, screenName, items
-func (_m *mockFeedbagManager) FeedbagDelete(ctx context.Context, screenName state.IdentScreenName, items []wire.FeedbagItem) error {
-	ret := _m.Called(ctx, screenName, items)
+// FeedbagDelete provides a mock function for the type mockFeedbagManager
+func (_mock *mockFeedbagManager) FeedbagDelete(ctx context.Context, screenName state.IdentScreenName, items []wire.FeedbagItem) error {
+	ret := _mock.Called(ctx, screenName, items)
 
 	if len(ret) == 0 {
 		panic("no return value specified for FeedbagDelete")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, []wire.FeedbagItem) error); ok {
-		r0 = rf(ctx, screenName, items)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, []wire.FeedbagItem) error); ok {
+		r0 = returnFunc(ctx, screenName, items)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -118,24 +140,40 @@ func (_e *mockFeedbagManager_Expecter) FeedbagDelete(ctx interface{}, screenName
 
 func (_c *mockFeedbagManager_FeedbagDelete_Call) Run(run func(ctx context.Context, screenName state.IdentScreenName, items []wire.FeedbagItem)) *mockFeedbagManager_FeedbagDelete_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName), args[2].([]wire.FeedbagItem))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		var arg2 []wire.FeedbagItem
+		if args[2] != nil {
+			arg2 = args[2].([]wire.FeedbagItem)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockFeedbagManager_FeedbagDelete_Call) Return(_a0 error) *mockFeedbagManager_FeedbagDelete_Call {
-	_c.Call.Return(_a0)
+func (_c *mockFeedbagManager_FeedbagDelete_Call) Return(err error) *mockFeedbagManager_FeedbagDelete_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockFeedbagManager_FeedbagDelete_Call) RunAndReturn(run func(context.Context, state.IdentScreenName, []wire.FeedbagItem) error) *mockFeedbagManager_FeedbagDelete_Call {
+func (_c *mockFeedbagManager_FeedbagDelete_Call) RunAndReturn(run func(ctx context.Context, screenName state.IdentScreenName, items []wire.FeedbagItem) error) *mockFeedbagManager_FeedbagDelete_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// FeedbagLastModified provides a mock function with given fields: ctx, screenName
-func (_m *mockFeedbagManager) FeedbagLastModified(ctx context.Context, screenName state.IdentScreenName) (time.Time, error) {
-	ret := _m.Called(ctx, screenName)
+// FeedbagLastModified provides a mock function for the type mockFeedbagManager
+func (_mock *mockFeedbagManager) FeedbagLastModified(ctx context.Context, screenName state.IdentScreenName) (time.Time, error) {
+	ret := _mock.Called(ctx, screenName)
 
 	if len(ret) == 0 {
 		panic("no return value specified for FeedbagLastModified")
@@ -143,21 +181,19 @@ func (_m *mockFeedbagManager) FeedbagLastModified(ctx context.Context, screenNam
 
 	var r0 time.Time
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) (time.Time, error)); ok {
-		return rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) (time.Time, error)); ok {
+		return returnFunc(ctx, screenName)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) time.Time); ok {
-		r0 = rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) time.Time); ok {
+		r0 = returnFunc(ctx, screenName)
 	} else {
 		r0 = ret.Get(0).(time.Time)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, state.IdentScreenName) error); ok {
-		r1 = rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, state.IdentScreenName) error); ok {
+		r1 = returnFunc(ctx, screenName)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -175,36 +211,46 @@ func (_e *mockFeedbagManager_Expecter) FeedbagLastModified(ctx interface{}, scre
 
 func (_c *mockFeedbagManager_FeedbagLastModified_Call) Run(run func(ctx context.Context, screenName state.IdentScreenName)) *mockFeedbagManager_FeedbagLastModified_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockFeedbagManager_FeedbagLastModified_Call) Return(_a0 time.Time, _a1 error) *mockFeedbagManager_FeedbagLastModified_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockFeedbagManager_FeedbagLastModified_Call) Return(time1 time.Time, err error) *mockFeedbagManager_FeedbagLastModified_Call {
+	_c.Call.Return(time1, err)
 	return _c
 }
 
-func (_c *mockFeedbagManager_FeedbagLastModified_Call) RunAndReturn(run func(context.Context, state.IdentScreenName) (time.Time, error)) *mockFeedbagManager_FeedbagLastModified_Call {
+func (_c *mockFeedbagManager_FeedbagLastModified_Call) RunAndReturn(run func(ctx context.Context, screenName state.IdentScreenName) (time.Time, error)) *mockFeedbagManager_FeedbagLastModified_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// FeedbagUpsert provides a mock function with given fields: ctx, screenName, items
-func (_m *mockFeedbagManager) FeedbagUpsert(ctx context.Context, screenName state.IdentScreenName, items []wire.FeedbagItem) error {
-	ret := _m.Called(ctx, screenName, items)
+// FeedbagUpsert provides a mock function for the type mockFeedbagManager
+func (_mock *mockFeedbagManager) FeedbagUpsert(ctx context.Context, screenName state.IdentScreenName, items []wire.FeedbagItem) error {
+	ret := _mock.Called(ctx, screenName, items)
 
 	if len(ret) == 0 {
 		panic("no return value specified for FeedbagUpsert")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, []wire.FeedbagItem) error); ok {
-		r0 = rf(ctx, screenName, items)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, []wire.FeedbagItem) error); ok {
+		r0 = returnFunc(ctx, screenName, items)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -223,36 +269,51 @@ func (_e *mockFeedbagManager_Expecter) FeedbagUpsert(ctx interface{}, screenName
 
 func (_c *mockFeedbagManager_FeedbagUpsert_Call) Run(run func(ctx context.Context, screenName state.IdentScreenName, items []wire.FeedbagItem)) *mockFeedbagManager_FeedbagUpsert_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName), args[2].([]wire.FeedbagItem))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		var arg2 []wire.FeedbagItem
+		if args[2] != nil {
+			arg2 = args[2].([]wire.FeedbagItem)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockFeedbagManager_FeedbagUpsert_Call) Return(_a0 error) *mockFeedbagManager_FeedbagUpsert_Call {
-	_c.Call.Return(_a0)
+func (_c *mockFeedbagManager_FeedbagUpsert_Call) Return(err error) *mockFeedbagManager_FeedbagUpsert_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockFeedbagManager_FeedbagUpsert_Call) RunAndReturn(run func(context.Context, state.IdentScreenName, []wire.FeedbagItem) error) *mockFeedbagManager_FeedbagUpsert_Call {
+func (_c *mockFeedbagManager_FeedbagUpsert_Call) RunAndReturn(run func(ctx context.Context, screenName state.IdentScreenName, items []wire.FeedbagItem) error) *mockFeedbagManager_FeedbagUpsert_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// UseFeedbag provides a mock function with given fields: ctx, screenName
-func (_m *mockFeedbagManager) UseFeedbag(ctx context.Context, screenName state.IdentScreenName) error {
-	ret := _m.Called(ctx, screenName)
+// UseFeedbag provides a mock function for the type mockFeedbagManager
+func (_mock *mockFeedbagManager) UseFeedbag(ctx context.Context, screenName state.IdentScreenName) error {
+	ret := _mock.Called(ctx, screenName)
 
 	if len(ret) == 0 {
 		panic("no return value specified for UseFeedbag")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) error); ok {
-		r0 = rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) error); ok {
+		r0 = returnFunc(ctx, screenName)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -270,31 +331,28 @@ func (_e *mockFeedbagManager_Expecter) UseFeedbag(ctx interface{}, screenName in
 
 func (_c *mockFeedbagManager_UseFeedbag_Call) Run(run func(ctx context.Context, screenName state.IdentScreenName)) *mockFeedbagManager_UseFeedbag_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockFeedbagManager_UseFeedbag_Call) Return(_a0 error) *mockFeedbagManager_UseFeedbag_Call {
-	_c.Call.Return(_a0)
+func (_c *mockFeedbagManager_UseFeedbag_Call) Return(err error) *mockFeedbagManager_UseFeedbag_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockFeedbagManager_UseFeedbag_Call) RunAndReturn(run func(context.Context, state.IdentScreenName) error) *mockFeedbagManager_UseFeedbag_Call {
+func (_c *mockFeedbagManager_UseFeedbag_Call) RunAndReturn(run func(ctx context.Context, screenName state.IdentScreenName) error) *mockFeedbagManager_UseFeedbag_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockFeedbagManager creates a new instance of mockFeedbagManager. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockFeedbagManager(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockFeedbagManager {
-	mock := &mockFeedbagManager{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 154 - 92
foodgroup/mock_icq_user_finder_test.go

@@ -1,14 +1,30 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package foodgroup
 
 import (
-	context "context"
+	"context"
 
-	state "github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/state"
 	mock "github.com/stretchr/testify/mock"
 )
 
+// newMockICQUserFinder creates a new instance of mockICQUserFinder. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockICQUserFinder(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockICQUserFinder {
+	mock := &mockICQUserFinder{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockICQUserFinder is an autogenerated mock type for the ICQUserFinder type
 type mockICQUserFinder struct {
 	mock.Mock
@@ -22,9 +38,9 @@ func (_m *mockICQUserFinder) EXPECT() *mockICQUserFinder_Expecter {
 	return &mockICQUserFinder_Expecter{mock: &_m.Mock}
 }
 
-// FindByICQEmail provides a mock function with given fields: ctx, email
-func (_m *mockICQUserFinder) FindByICQEmail(ctx context.Context, email string) (state.User, error) {
-	ret := _m.Called(ctx, email)
+// FindByICQEmail provides a mock function for the type mockICQUserFinder
+func (_mock *mockICQUserFinder) FindByICQEmail(ctx context.Context, email string) (state.User, error) {
+	ret := _mock.Called(ctx, email)
 
 	if len(ret) == 0 {
 		panic("no return value specified for FindByICQEmail")
@@ -32,21 +48,19 @@ func (_m *mockICQUserFinder) FindByICQEmail(ctx context.Context, email string) (
 
 	var r0 state.User
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, string) (state.User, error)); ok {
-		return rf(ctx, email)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, string) (state.User, error)); ok {
+		return returnFunc(ctx, email)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, string) state.User); ok {
-		r0 = rf(ctx, email)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, string) state.User); ok {
+		r0 = returnFunc(ctx, email)
 	} else {
 		r0 = ret.Get(0).(state.User)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, string) error); ok {
-		r1 = rf(ctx, email)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, string) error); ok {
+		r1 = returnFunc(ctx, email)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -64,24 +78,35 @@ func (_e *mockICQUserFinder_Expecter) FindByICQEmail(ctx interface{}, email inte
 
 func (_c *mockICQUserFinder_FindByICQEmail_Call) Run(run func(ctx context.Context, email string)) *mockICQUserFinder_FindByICQEmail_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(string))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 string
+		if args[1] != nil {
+			arg1 = args[1].(string)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockICQUserFinder_FindByICQEmail_Call) Return(_a0 state.User, _a1 error) *mockICQUserFinder_FindByICQEmail_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockICQUserFinder_FindByICQEmail_Call) Return(user state.User, err error) *mockICQUserFinder_FindByICQEmail_Call {
+	_c.Call.Return(user, err)
 	return _c
 }
 
-func (_c *mockICQUserFinder_FindByICQEmail_Call) RunAndReturn(run func(context.Context, string) (state.User, error)) *mockICQUserFinder_FindByICQEmail_Call {
+func (_c *mockICQUserFinder_FindByICQEmail_Call) RunAndReturn(run func(ctx context.Context, email string) (state.User, error)) *mockICQUserFinder_FindByICQEmail_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// FindByICQInterests provides a mock function with given fields: ctx, code, keywords
-func (_m *mockICQUserFinder) FindByICQInterests(ctx context.Context, code uint16, keywords []string) ([]state.User, error) {
-	ret := _m.Called(ctx, code, keywords)
+// FindByICQInterests provides a mock function for the type mockICQUserFinder
+func (_mock *mockICQUserFinder) FindByICQInterests(ctx context.Context, code uint16, keywords []string) ([]state.User, error) {
+	ret := _mock.Called(ctx, code, keywords)
 
 	if len(ret) == 0 {
 		panic("no return value specified for FindByICQInterests")
@@ -89,23 +114,21 @@ func (_m *mockICQUserFinder) FindByICQInterests(ctx context.Context, code uint16
 
 	var r0 []state.User
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, uint16, []string) ([]state.User, error)); ok {
-		return rf(ctx, code, keywords)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, uint16, []string) ([]state.User, error)); ok {
+		return returnFunc(ctx, code, keywords)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, uint16, []string) []state.User); ok {
-		r0 = rf(ctx, code, keywords)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, uint16, []string) []state.User); ok {
+		r0 = returnFunc(ctx, code, keywords)
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).([]state.User)
 		}
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, uint16, []string) error); ok {
-		r1 = rf(ctx, code, keywords)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, uint16, []string) error); ok {
+		r1 = returnFunc(ctx, code, keywords)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -124,24 +147,40 @@ func (_e *mockICQUserFinder_Expecter) FindByICQInterests(ctx interface{}, code i
 
 func (_c *mockICQUserFinder_FindByICQInterests_Call) Run(run func(ctx context.Context, code uint16, keywords []string)) *mockICQUserFinder_FindByICQInterests_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(uint16), args[2].([]string))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 uint16
+		if args[1] != nil {
+			arg1 = args[1].(uint16)
+		}
+		var arg2 []string
+		if args[2] != nil {
+			arg2 = args[2].([]string)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockICQUserFinder_FindByICQInterests_Call) Return(_a0 []state.User, _a1 error) *mockICQUserFinder_FindByICQInterests_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockICQUserFinder_FindByICQInterests_Call) Return(users []state.User, err error) *mockICQUserFinder_FindByICQInterests_Call {
+	_c.Call.Return(users, err)
 	return _c
 }
 
-func (_c *mockICQUserFinder_FindByICQInterests_Call) RunAndReturn(run func(context.Context, uint16, []string) ([]state.User, error)) *mockICQUserFinder_FindByICQInterests_Call {
+func (_c *mockICQUserFinder_FindByICQInterests_Call) RunAndReturn(run func(ctx context.Context, code uint16, keywords []string) ([]state.User, error)) *mockICQUserFinder_FindByICQInterests_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// FindByICQKeyword provides a mock function with given fields: ctx, keyword
-func (_m *mockICQUserFinder) FindByICQKeyword(ctx context.Context, keyword string) ([]state.User, error) {
-	ret := _m.Called(ctx, keyword)
+// FindByICQKeyword provides a mock function for the type mockICQUserFinder
+func (_mock *mockICQUserFinder) FindByICQKeyword(ctx context.Context, keyword string) ([]state.User, error) {
+	ret := _mock.Called(ctx, keyword)
 
 	if len(ret) == 0 {
 		panic("no return value specified for FindByICQKeyword")
@@ -149,23 +188,21 @@ func (_m *mockICQUserFinder) FindByICQKeyword(ctx context.Context, keyword strin
 
 	var r0 []state.User
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, string) ([]state.User, error)); ok {
-		return rf(ctx, keyword)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, string) ([]state.User, error)); ok {
+		return returnFunc(ctx, keyword)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, string) []state.User); ok {
-		r0 = rf(ctx, keyword)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, string) []state.User); ok {
+		r0 = returnFunc(ctx, keyword)
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).([]state.User)
 		}
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, string) error); ok {
-		r1 = rf(ctx, keyword)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, string) error); ok {
+		r1 = returnFunc(ctx, keyword)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -183,24 +220,35 @@ func (_e *mockICQUserFinder_Expecter) FindByICQKeyword(ctx interface{}, keyword
 
 func (_c *mockICQUserFinder_FindByICQKeyword_Call) Run(run func(ctx context.Context, keyword string)) *mockICQUserFinder_FindByICQKeyword_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(string))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 string
+		if args[1] != nil {
+			arg1 = args[1].(string)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockICQUserFinder_FindByICQKeyword_Call) Return(_a0 []state.User, _a1 error) *mockICQUserFinder_FindByICQKeyword_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockICQUserFinder_FindByICQKeyword_Call) Return(users []state.User, err error) *mockICQUserFinder_FindByICQKeyword_Call {
+	_c.Call.Return(users, err)
 	return _c
 }
 
-func (_c *mockICQUserFinder_FindByICQKeyword_Call) RunAndReturn(run func(context.Context, string) ([]state.User, error)) *mockICQUserFinder_FindByICQKeyword_Call {
+func (_c *mockICQUserFinder_FindByICQKeyword_Call) RunAndReturn(run func(ctx context.Context, keyword string) ([]state.User, error)) *mockICQUserFinder_FindByICQKeyword_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// FindByICQName provides a mock function with given fields: ctx, firstName, lastName, nickName
-func (_m *mockICQUserFinder) FindByICQName(ctx context.Context, firstName string, lastName string, nickName string) ([]state.User, error) {
-	ret := _m.Called(ctx, firstName, lastName, nickName)
+// FindByICQName provides a mock function for the type mockICQUserFinder
+func (_mock *mockICQUserFinder) FindByICQName(ctx context.Context, firstName string, lastName string, nickName string) ([]state.User, error) {
+	ret := _mock.Called(ctx, firstName, lastName, nickName)
 
 	if len(ret) == 0 {
 		panic("no return value specified for FindByICQName")
@@ -208,23 +256,21 @@ func (_m *mockICQUserFinder) FindByICQName(ctx context.Context, firstName string
 
 	var r0 []state.User
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, string, string, string) ([]state.User, error)); ok {
-		return rf(ctx, firstName, lastName, nickName)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, string, string, string) ([]state.User, error)); ok {
+		return returnFunc(ctx, firstName, lastName, nickName)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, string, string, string) []state.User); ok {
-		r0 = rf(ctx, firstName, lastName, nickName)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, string, string, string) []state.User); ok {
+		r0 = returnFunc(ctx, firstName, lastName, nickName)
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).([]state.User)
 		}
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, string, string, string) error); ok {
-		r1 = rf(ctx, firstName, lastName, nickName)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, string, string, string) error); ok {
+		r1 = returnFunc(ctx, firstName, lastName, nickName)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -244,24 +290,45 @@ func (_e *mockICQUserFinder_Expecter) FindByICQName(ctx interface{}, firstName i
 
 func (_c *mockICQUserFinder_FindByICQName_Call) Run(run func(ctx context.Context, firstName string, lastName string, nickName string)) *mockICQUserFinder_FindByICQName_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(string), args[2].(string), args[3].(string))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 string
+		if args[1] != nil {
+			arg1 = args[1].(string)
+		}
+		var arg2 string
+		if args[2] != nil {
+			arg2 = args[2].(string)
+		}
+		var arg3 string
+		if args[3] != nil {
+			arg3 = args[3].(string)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+			arg3,
+		)
 	})
 	return _c
 }
 
-func (_c *mockICQUserFinder_FindByICQName_Call) Return(_a0 []state.User, _a1 error) *mockICQUserFinder_FindByICQName_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockICQUserFinder_FindByICQName_Call) Return(users []state.User, err error) *mockICQUserFinder_FindByICQName_Call {
+	_c.Call.Return(users, err)
 	return _c
 }
 
-func (_c *mockICQUserFinder_FindByICQName_Call) RunAndReturn(run func(context.Context, string, string, string) ([]state.User, error)) *mockICQUserFinder_FindByICQName_Call {
+func (_c *mockICQUserFinder_FindByICQName_Call) RunAndReturn(run func(ctx context.Context, firstName string, lastName string, nickName string) ([]state.User, error)) *mockICQUserFinder_FindByICQName_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// FindByUIN provides a mock function with given fields: ctx, UIN
-func (_m *mockICQUserFinder) FindByUIN(ctx context.Context, UIN uint32) (state.User, error) {
-	ret := _m.Called(ctx, UIN)
+// FindByUIN provides a mock function for the type mockICQUserFinder
+func (_mock *mockICQUserFinder) FindByUIN(ctx context.Context, UIN uint32) (state.User, error) {
+	ret := _mock.Called(ctx, UIN)
 
 	if len(ret) == 0 {
 		panic("no return value specified for FindByUIN")
@@ -269,21 +336,19 @@ func (_m *mockICQUserFinder) FindByUIN(ctx context.Context, UIN uint32) (state.U
 
 	var r0 state.User
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, uint32) (state.User, error)); ok {
-		return rf(ctx, UIN)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, uint32) (state.User, error)); ok {
+		return returnFunc(ctx, UIN)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, uint32) state.User); ok {
-		r0 = rf(ctx, UIN)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, uint32) state.User); ok {
+		r0 = returnFunc(ctx, UIN)
 	} else {
 		r0 = ret.Get(0).(state.User)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, uint32) error); ok {
-		r1 = rf(ctx, UIN)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, uint32) error); ok {
+		r1 = returnFunc(ctx, UIN)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -301,31 +366,28 @@ func (_e *mockICQUserFinder_Expecter) FindByUIN(ctx interface{}, UIN interface{}
 
 func (_c *mockICQUserFinder_FindByUIN_Call) Run(run func(ctx context.Context, UIN uint32)) *mockICQUserFinder_FindByUIN_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(uint32))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 uint32
+		if args[1] != nil {
+			arg1 = args[1].(uint32)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockICQUserFinder_FindByUIN_Call) Return(_a0 state.User, _a1 error) *mockICQUserFinder_FindByUIN_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockICQUserFinder_FindByUIN_Call) Return(user state.User, err error) *mockICQUserFinder_FindByUIN_Call {
+	_c.Call.Return(user, err)
 	return _c
 }
 
-func (_c *mockICQUserFinder_FindByUIN_Call) RunAndReturn(run func(context.Context, uint32) (state.User, error)) *mockICQUserFinder_FindByUIN_Call {
+func (_c *mockICQUserFinder_FindByUIN_Call) RunAndReturn(run func(ctx context.Context, UIN uint32) (state.User, error)) *mockICQUserFinder_FindByUIN_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockICQUserFinder creates a new instance of mockICQUserFinder. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockICQUserFinder(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockICQUserFinder {
-	mock := &mockICQUserFinder{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 169 - 77
foodgroup/mock_icq_user_updater_test.go

@@ -1,14 +1,30 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package foodgroup
 
 import (
-	context "context"
+	"context"
 
-	state "github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/state"
 	mock "github.com/stretchr/testify/mock"
 )
 
+// newMockICQUserUpdater creates a new instance of mockICQUserUpdater. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockICQUserUpdater(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockICQUserUpdater {
+	mock := &mockICQUserUpdater{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockICQUserUpdater is an autogenerated mock type for the ICQUserUpdater type
 type mockICQUserUpdater struct {
 	mock.Mock
@@ -22,21 +38,20 @@ func (_m *mockICQUserUpdater) EXPECT() *mockICQUserUpdater_Expecter {
 	return &mockICQUserUpdater_Expecter{mock: &_m.Mock}
 }
 
-// SetAffiliations provides a mock function with given fields: ctx, name, data
-func (_m *mockICQUserUpdater) SetAffiliations(ctx context.Context, name state.IdentScreenName, data state.ICQAffiliations) error {
-	ret := _m.Called(ctx, name, data)
+// SetAffiliations provides a mock function for the type mockICQUserUpdater
+func (_mock *mockICQUserUpdater) SetAffiliations(ctx context.Context, name state.IdentScreenName, data state.ICQAffiliations) error {
+	ret := _mock.Called(ctx, name, data)
 
 	if len(ret) == 0 {
 		panic("no return value specified for SetAffiliations")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, state.ICQAffiliations) error); ok {
-		r0 = rf(ctx, name, data)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, state.ICQAffiliations) error); ok {
+		r0 = returnFunc(ctx, name, data)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -55,36 +70,51 @@ func (_e *mockICQUserUpdater_Expecter) SetAffiliations(ctx interface{}, name int
 
 func (_c *mockICQUserUpdater_SetAffiliations_Call) Run(run func(ctx context.Context, name state.IdentScreenName, data state.ICQAffiliations)) *mockICQUserUpdater_SetAffiliations_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName), args[2].(state.ICQAffiliations))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		var arg2 state.ICQAffiliations
+		if args[2] != nil {
+			arg2 = args[2].(state.ICQAffiliations)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockICQUserUpdater_SetAffiliations_Call) Return(_a0 error) *mockICQUserUpdater_SetAffiliations_Call {
-	_c.Call.Return(_a0)
+func (_c *mockICQUserUpdater_SetAffiliations_Call) Return(err error) *mockICQUserUpdater_SetAffiliations_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockICQUserUpdater_SetAffiliations_Call) RunAndReturn(run func(context.Context, state.IdentScreenName, state.ICQAffiliations) error) *mockICQUserUpdater_SetAffiliations_Call {
+func (_c *mockICQUserUpdater_SetAffiliations_Call) RunAndReturn(run func(ctx context.Context, name state.IdentScreenName, data state.ICQAffiliations) error) *mockICQUserUpdater_SetAffiliations_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// SetBasicInfo provides a mock function with given fields: ctx, name, data
-func (_m *mockICQUserUpdater) SetBasicInfo(ctx context.Context, name state.IdentScreenName, data state.ICQBasicInfo) error {
-	ret := _m.Called(ctx, name, data)
+// SetBasicInfo provides a mock function for the type mockICQUserUpdater
+func (_mock *mockICQUserUpdater) SetBasicInfo(ctx context.Context, name state.IdentScreenName, data state.ICQBasicInfo) error {
+	ret := _mock.Called(ctx, name, data)
 
 	if len(ret) == 0 {
 		panic("no return value specified for SetBasicInfo")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, state.ICQBasicInfo) error); ok {
-		r0 = rf(ctx, name, data)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, state.ICQBasicInfo) error); ok {
+		r0 = returnFunc(ctx, name, data)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -103,36 +133,51 @@ func (_e *mockICQUserUpdater_Expecter) SetBasicInfo(ctx interface{}, name interf
 
 func (_c *mockICQUserUpdater_SetBasicInfo_Call) Run(run func(ctx context.Context, name state.IdentScreenName, data state.ICQBasicInfo)) *mockICQUserUpdater_SetBasicInfo_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName), args[2].(state.ICQBasicInfo))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		var arg2 state.ICQBasicInfo
+		if args[2] != nil {
+			arg2 = args[2].(state.ICQBasicInfo)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockICQUserUpdater_SetBasicInfo_Call) Return(_a0 error) *mockICQUserUpdater_SetBasicInfo_Call {
-	_c.Call.Return(_a0)
+func (_c *mockICQUserUpdater_SetBasicInfo_Call) Return(err error) *mockICQUserUpdater_SetBasicInfo_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockICQUserUpdater_SetBasicInfo_Call) RunAndReturn(run func(context.Context, state.IdentScreenName, state.ICQBasicInfo) error) *mockICQUserUpdater_SetBasicInfo_Call {
+func (_c *mockICQUserUpdater_SetBasicInfo_Call) RunAndReturn(run func(ctx context.Context, name state.IdentScreenName, data state.ICQBasicInfo) error) *mockICQUserUpdater_SetBasicInfo_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// SetInterests provides a mock function with given fields: ctx, name, data
-func (_m *mockICQUserUpdater) SetInterests(ctx context.Context, name state.IdentScreenName, data state.ICQInterests) error {
-	ret := _m.Called(ctx, name, data)
+// SetInterests provides a mock function for the type mockICQUserUpdater
+func (_mock *mockICQUserUpdater) SetInterests(ctx context.Context, name state.IdentScreenName, data state.ICQInterests) error {
+	ret := _mock.Called(ctx, name, data)
 
 	if len(ret) == 0 {
 		panic("no return value specified for SetInterests")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, state.ICQInterests) error); ok {
-		r0 = rf(ctx, name, data)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, state.ICQInterests) error); ok {
+		r0 = returnFunc(ctx, name, data)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -151,36 +196,51 @@ func (_e *mockICQUserUpdater_Expecter) SetInterests(ctx interface{}, name interf
 
 func (_c *mockICQUserUpdater_SetInterests_Call) Run(run func(ctx context.Context, name state.IdentScreenName, data state.ICQInterests)) *mockICQUserUpdater_SetInterests_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName), args[2].(state.ICQInterests))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		var arg2 state.ICQInterests
+		if args[2] != nil {
+			arg2 = args[2].(state.ICQInterests)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockICQUserUpdater_SetInterests_Call) Return(_a0 error) *mockICQUserUpdater_SetInterests_Call {
-	_c.Call.Return(_a0)
+func (_c *mockICQUserUpdater_SetInterests_Call) Return(err error) *mockICQUserUpdater_SetInterests_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockICQUserUpdater_SetInterests_Call) RunAndReturn(run func(context.Context, state.IdentScreenName, state.ICQInterests) error) *mockICQUserUpdater_SetInterests_Call {
+func (_c *mockICQUserUpdater_SetInterests_Call) RunAndReturn(run func(ctx context.Context, name state.IdentScreenName, data state.ICQInterests) error) *mockICQUserUpdater_SetInterests_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// SetMoreInfo provides a mock function with given fields: ctx, name, data
-func (_m *mockICQUserUpdater) SetMoreInfo(ctx context.Context, name state.IdentScreenName, data state.ICQMoreInfo) error {
-	ret := _m.Called(ctx, name, data)
+// SetMoreInfo provides a mock function for the type mockICQUserUpdater
+func (_mock *mockICQUserUpdater) SetMoreInfo(ctx context.Context, name state.IdentScreenName, data state.ICQMoreInfo) error {
+	ret := _mock.Called(ctx, name, data)
 
 	if len(ret) == 0 {
 		panic("no return value specified for SetMoreInfo")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, state.ICQMoreInfo) error); ok {
-		r0 = rf(ctx, name, data)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, state.ICQMoreInfo) error); ok {
+		r0 = returnFunc(ctx, name, data)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -199,36 +259,51 @@ func (_e *mockICQUserUpdater_Expecter) SetMoreInfo(ctx interface{}, name interfa
 
 func (_c *mockICQUserUpdater_SetMoreInfo_Call) Run(run func(ctx context.Context, name state.IdentScreenName, data state.ICQMoreInfo)) *mockICQUserUpdater_SetMoreInfo_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName), args[2].(state.ICQMoreInfo))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		var arg2 state.ICQMoreInfo
+		if args[2] != nil {
+			arg2 = args[2].(state.ICQMoreInfo)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockICQUserUpdater_SetMoreInfo_Call) Return(_a0 error) *mockICQUserUpdater_SetMoreInfo_Call {
-	_c.Call.Return(_a0)
+func (_c *mockICQUserUpdater_SetMoreInfo_Call) Return(err error) *mockICQUserUpdater_SetMoreInfo_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockICQUserUpdater_SetMoreInfo_Call) RunAndReturn(run func(context.Context, state.IdentScreenName, state.ICQMoreInfo) error) *mockICQUserUpdater_SetMoreInfo_Call {
+func (_c *mockICQUserUpdater_SetMoreInfo_Call) RunAndReturn(run func(ctx context.Context, name state.IdentScreenName, data state.ICQMoreInfo) error) *mockICQUserUpdater_SetMoreInfo_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// SetUserNotes provides a mock function with given fields: ctx, name, data
-func (_m *mockICQUserUpdater) SetUserNotes(ctx context.Context, name state.IdentScreenName, data state.ICQUserNotes) error {
-	ret := _m.Called(ctx, name, data)
+// SetUserNotes provides a mock function for the type mockICQUserUpdater
+func (_mock *mockICQUserUpdater) SetUserNotes(ctx context.Context, name state.IdentScreenName, data state.ICQUserNotes) error {
+	ret := _mock.Called(ctx, name, data)
 
 	if len(ret) == 0 {
 		panic("no return value specified for SetUserNotes")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, state.ICQUserNotes) error); ok {
-		r0 = rf(ctx, name, data)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, state.ICQUserNotes) error); ok {
+		r0 = returnFunc(ctx, name, data)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -247,36 +322,51 @@ func (_e *mockICQUserUpdater_Expecter) SetUserNotes(ctx interface{}, name interf
 
 func (_c *mockICQUserUpdater_SetUserNotes_Call) Run(run func(ctx context.Context, name state.IdentScreenName, data state.ICQUserNotes)) *mockICQUserUpdater_SetUserNotes_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName), args[2].(state.ICQUserNotes))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		var arg2 state.ICQUserNotes
+		if args[2] != nil {
+			arg2 = args[2].(state.ICQUserNotes)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockICQUserUpdater_SetUserNotes_Call) Return(_a0 error) *mockICQUserUpdater_SetUserNotes_Call {
-	_c.Call.Return(_a0)
+func (_c *mockICQUserUpdater_SetUserNotes_Call) Return(err error) *mockICQUserUpdater_SetUserNotes_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockICQUserUpdater_SetUserNotes_Call) RunAndReturn(run func(context.Context, state.IdentScreenName, state.ICQUserNotes) error) *mockICQUserUpdater_SetUserNotes_Call {
+func (_c *mockICQUserUpdater_SetUserNotes_Call) RunAndReturn(run func(ctx context.Context, name state.IdentScreenName, data state.ICQUserNotes) error) *mockICQUserUpdater_SetUserNotes_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// SetWorkInfo provides a mock function with given fields: ctx, name, data
-func (_m *mockICQUserUpdater) SetWorkInfo(ctx context.Context, name state.IdentScreenName, data state.ICQWorkInfo) error {
-	ret := _m.Called(ctx, name, data)
+// SetWorkInfo provides a mock function for the type mockICQUserUpdater
+func (_mock *mockICQUserUpdater) SetWorkInfo(ctx context.Context, name state.IdentScreenName, data state.ICQWorkInfo) error {
+	ret := _mock.Called(ctx, name, data)
 
 	if len(ret) == 0 {
 		panic("no return value specified for SetWorkInfo")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, state.ICQWorkInfo) error); ok {
-		r0 = rf(ctx, name, data)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, state.ICQWorkInfo) error); ok {
+		r0 = returnFunc(ctx, name, data)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -295,31 +385,33 @@ func (_e *mockICQUserUpdater_Expecter) SetWorkInfo(ctx interface{}, name interfa
 
 func (_c *mockICQUserUpdater_SetWorkInfo_Call) Run(run func(ctx context.Context, name state.IdentScreenName, data state.ICQWorkInfo)) *mockICQUserUpdater_SetWorkInfo_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName), args[2].(state.ICQWorkInfo))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		var arg2 state.ICQWorkInfo
+		if args[2] != nil {
+			arg2 = args[2].(state.ICQWorkInfo)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockICQUserUpdater_SetWorkInfo_Call) Return(_a0 error) *mockICQUserUpdater_SetWorkInfo_Call {
-	_c.Call.Return(_a0)
+func (_c *mockICQUserUpdater_SetWorkInfo_Call) Return(err error) *mockICQUserUpdater_SetWorkInfo_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockICQUserUpdater_SetWorkInfo_Call) RunAndReturn(run func(context.Context, state.IdentScreenName, state.ICQWorkInfo) error) *mockICQUserUpdater_SetWorkInfo_Call {
+func (_c *mockICQUserUpdater_SetWorkInfo_Call) RunAndReturn(run func(ctx context.Context, name state.IdentScreenName, data state.ICQWorkInfo) error) *mockICQUserUpdater_SetWorkInfo_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockICQUserUpdater creates a new instance of mockICQUserUpdater. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockICQUserUpdater(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockICQUserUpdater {
-	mock := &mockICQUserUpdater{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 64 - 29
foodgroup/mock_message_relayer_test.go

@@ -1,16 +1,31 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package foodgroup
 
 import (
-	context "context"
+	"context"
 
-	state "github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/wire"
 	mock "github.com/stretchr/testify/mock"
-
-	wire "github.com/mk6i/retro-aim-server/wire"
 )
 
+// newMockMessageRelayer creates a new instance of mockMessageRelayer. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockMessageRelayer(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockMessageRelayer {
+	mock := &mockMessageRelayer{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockMessageRelayer is an autogenerated mock type for the MessageRelayer type
 type mockMessageRelayer struct {
 	mock.Mock
@@ -24,9 +39,10 @@ func (_m *mockMessageRelayer) EXPECT() *mockMessageRelayer_Expecter {
 	return &mockMessageRelayer_Expecter{mock: &_m.Mock}
 }
 
-// RelayToScreenName provides a mock function with given fields: ctx, screenName, msg
-func (_m *mockMessageRelayer) RelayToScreenName(ctx context.Context, screenName state.IdentScreenName, msg wire.SNACMessage) {
-	_m.Called(ctx, screenName, msg)
+// RelayToScreenName provides a mock function for the type mockMessageRelayer
+func (_mock *mockMessageRelayer) RelayToScreenName(ctx context.Context, screenName state.IdentScreenName, msg wire.SNACMessage) {
+	_mock.Called(ctx, screenName, msg)
+	return
 }
 
 // mockMessageRelayer_RelayToScreenName_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'RelayToScreenName'
@@ -44,7 +60,23 @@ func (_e *mockMessageRelayer_Expecter) RelayToScreenName(ctx interface{}, screen
 
 func (_c *mockMessageRelayer_RelayToScreenName_Call) Run(run func(ctx context.Context, screenName state.IdentScreenName, msg wire.SNACMessage)) *mockMessageRelayer_RelayToScreenName_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName), args[2].(wire.SNACMessage))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		var arg2 wire.SNACMessage
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNACMessage)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
@@ -54,14 +86,15 @@ func (_c *mockMessageRelayer_RelayToScreenName_Call) Return() *mockMessageRelaye
 	return _c
 }
 
-func (_c *mockMessageRelayer_RelayToScreenName_Call) RunAndReturn(run func(context.Context, state.IdentScreenName, wire.SNACMessage)) *mockMessageRelayer_RelayToScreenName_Call {
+func (_c *mockMessageRelayer_RelayToScreenName_Call) RunAndReturn(run func(ctx context.Context, screenName state.IdentScreenName, msg wire.SNACMessage)) *mockMessageRelayer_RelayToScreenName_Call {
 	_c.Run(run)
 	return _c
 }
 
-// RelayToScreenNames provides a mock function with given fields: ctx, screenNames, msg
-func (_m *mockMessageRelayer) RelayToScreenNames(ctx context.Context, screenNames []state.IdentScreenName, msg wire.SNACMessage) {
-	_m.Called(ctx, screenNames, msg)
+// RelayToScreenNames provides a mock function for the type mockMessageRelayer
+func (_mock *mockMessageRelayer) RelayToScreenNames(ctx context.Context, screenNames []state.IdentScreenName, msg wire.SNACMessage) {
+	_mock.Called(ctx, screenNames, msg)
+	return
 }
 
 // mockMessageRelayer_RelayToScreenNames_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'RelayToScreenNames'
@@ -79,7 +112,23 @@ func (_e *mockMessageRelayer_Expecter) RelayToScreenNames(ctx interface{}, scree
 
 func (_c *mockMessageRelayer_RelayToScreenNames_Call) Run(run func(ctx context.Context, screenNames []state.IdentScreenName, msg wire.SNACMessage)) *mockMessageRelayer_RelayToScreenNames_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].([]state.IdentScreenName), args[2].(wire.SNACMessage))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 []state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].([]state.IdentScreenName)
+		}
+		var arg2 wire.SNACMessage
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNACMessage)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
@@ -89,21 +138,7 @@ func (_c *mockMessageRelayer_RelayToScreenNames_Call) Return() *mockMessageRelay
 	return _c
 }
 
-func (_c *mockMessageRelayer_RelayToScreenNames_Call) RunAndReturn(run func(context.Context, []state.IdentScreenName, wire.SNACMessage)) *mockMessageRelayer_RelayToScreenNames_Call {
+func (_c *mockMessageRelayer_RelayToScreenNames_Call) RunAndReturn(run func(ctx context.Context, screenNames []state.IdentScreenName, msg wire.SNACMessage)) *mockMessageRelayer_RelayToScreenNames_Call {
 	_c.Run(run)
 	return _c
 }
-
-// newMockMessageRelayer creates a new instance of mockMessageRelayer. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockMessageRelayer(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockMessageRelayer {
-	mock := &mockMessageRelayer{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 112 - 67
foodgroup/mock_offline_message_manager_test.go

@@ -1,14 +1,30 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package foodgroup
 
 import (
-	context "context"
+	"context"
 
-	state "github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/state"
 	mock "github.com/stretchr/testify/mock"
 )
 
+// newMockOfflineMessageManager creates a new instance of mockOfflineMessageManager. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockOfflineMessageManager(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockOfflineMessageManager {
+	mock := &mockOfflineMessageManager{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockOfflineMessageManager is an autogenerated mock type for the OfflineMessageManager type
 type mockOfflineMessageManager struct {
 	mock.Mock
@@ -22,21 +38,20 @@ func (_m *mockOfflineMessageManager) EXPECT() *mockOfflineMessageManager_Expecte
 	return &mockOfflineMessageManager_Expecter{mock: &_m.Mock}
 }
 
-// DeleteMessages provides a mock function with given fields: ctx, recip
-func (_m *mockOfflineMessageManager) DeleteMessages(ctx context.Context, recip state.IdentScreenName) error {
-	ret := _m.Called(ctx, recip)
+// DeleteMessages provides a mock function for the type mockOfflineMessageManager
+func (_mock *mockOfflineMessageManager) DeleteMessages(ctx context.Context, recip state.IdentScreenName) error {
+	ret := _mock.Called(ctx, recip)
 
 	if len(ret) == 0 {
 		panic("no return value specified for DeleteMessages")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) error); ok {
-		r0 = rf(ctx, recip)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) error); ok {
+		r0 = returnFunc(ctx, recip)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -54,24 +69,35 @@ func (_e *mockOfflineMessageManager_Expecter) DeleteMessages(ctx interface{}, re
 
 func (_c *mockOfflineMessageManager_DeleteMessages_Call) Run(run func(ctx context.Context, recip state.IdentScreenName)) *mockOfflineMessageManager_DeleteMessages_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockOfflineMessageManager_DeleteMessages_Call) Return(_a0 error) *mockOfflineMessageManager_DeleteMessages_Call {
-	_c.Call.Return(_a0)
+func (_c *mockOfflineMessageManager_DeleteMessages_Call) Return(err error) *mockOfflineMessageManager_DeleteMessages_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockOfflineMessageManager_DeleteMessages_Call) RunAndReturn(run func(context.Context, state.IdentScreenName) error) *mockOfflineMessageManager_DeleteMessages_Call {
+func (_c *mockOfflineMessageManager_DeleteMessages_Call) RunAndReturn(run func(ctx context.Context, recip state.IdentScreenName) error) *mockOfflineMessageManager_DeleteMessages_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// RetrieveMessages provides a mock function with given fields: ctx, recip
-func (_m *mockOfflineMessageManager) RetrieveMessages(ctx context.Context, recip state.IdentScreenName) ([]state.OfflineMessage, error) {
-	ret := _m.Called(ctx, recip)
+// RetrieveMessages provides a mock function for the type mockOfflineMessageManager
+func (_mock *mockOfflineMessageManager) RetrieveMessages(ctx context.Context, recip state.IdentScreenName) ([]state.OfflineMessage, error) {
+	ret := _mock.Called(ctx, recip)
 
 	if len(ret) == 0 {
 		panic("no return value specified for RetrieveMessages")
@@ -79,23 +105,21 @@ func (_m *mockOfflineMessageManager) RetrieveMessages(ctx context.Context, recip
 
 	var r0 []state.OfflineMessage
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) ([]state.OfflineMessage, error)); ok {
-		return rf(ctx, recip)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) ([]state.OfflineMessage, error)); ok {
+		return returnFunc(ctx, recip)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) []state.OfflineMessage); ok {
-		r0 = rf(ctx, recip)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) []state.OfflineMessage); ok {
+		r0 = returnFunc(ctx, recip)
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).([]state.OfflineMessage)
 		}
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, state.IdentScreenName) error); ok {
-		r1 = rf(ctx, recip)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, state.IdentScreenName) error); ok {
+		r1 = returnFunc(ctx, recip)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -113,24 +137,35 @@ func (_e *mockOfflineMessageManager_Expecter) RetrieveMessages(ctx interface{},
 
 func (_c *mockOfflineMessageManager_RetrieveMessages_Call) Run(run func(ctx context.Context, recip state.IdentScreenName)) *mockOfflineMessageManager_RetrieveMessages_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockOfflineMessageManager_RetrieveMessages_Call) Return(_a0 []state.OfflineMessage, _a1 error) *mockOfflineMessageManager_RetrieveMessages_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockOfflineMessageManager_RetrieveMessages_Call) Return(offlineMessages []state.OfflineMessage, err error) *mockOfflineMessageManager_RetrieveMessages_Call {
+	_c.Call.Return(offlineMessages, err)
 	return _c
 }
 
-func (_c *mockOfflineMessageManager_RetrieveMessages_Call) RunAndReturn(run func(context.Context, state.IdentScreenName) ([]state.OfflineMessage, error)) *mockOfflineMessageManager_RetrieveMessages_Call {
+func (_c *mockOfflineMessageManager_RetrieveMessages_Call) RunAndReturn(run func(ctx context.Context, recip state.IdentScreenName) ([]state.OfflineMessage, error)) *mockOfflineMessageManager_RetrieveMessages_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// SaveMessage provides a mock function with given fields: ctx, offlineMessage
-func (_m *mockOfflineMessageManager) SaveMessage(ctx context.Context, offlineMessage state.OfflineMessage) (int, error) {
-	ret := _m.Called(ctx, offlineMessage)
+// SaveMessage provides a mock function for the type mockOfflineMessageManager
+func (_mock *mockOfflineMessageManager) SaveMessage(ctx context.Context, offlineMessage state.OfflineMessage) (int, error) {
+	ret := _mock.Called(ctx, offlineMessage)
 
 	if len(ret) == 0 {
 		panic("no return value specified for SaveMessage")
@@ -138,21 +173,19 @@ func (_m *mockOfflineMessageManager) SaveMessage(ctx context.Context, offlineMes
 
 	var r0 int
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.OfflineMessage) (int, error)); ok {
-		return rf(ctx, offlineMessage)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.OfflineMessage) (int, error)); ok {
+		return returnFunc(ctx, offlineMessage)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, state.OfflineMessage) int); ok {
-		r0 = rf(ctx, offlineMessage)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.OfflineMessage) int); ok {
+		r0 = returnFunc(ctx, offlineMessage)
 	} else {
 		r0 = ret.Get(0).(int)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, state.OfflineMessage) error); ok {
-		r1 = rf(ctx, offlineMessage)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, state.OfflineMessage) error); ok {
+		r1 = returnFunc(ctx, offlineMessage)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -170,36 +203,46 @@ func (_e *mockOfflineMessageManager_Expecter) SaveMessage(ctx interface{}, offli
 
 func (_c *mockOfflineMessageManager_SaveMessage_Call) Run(run func(ctx context.Context, offlineMessage state.OfflineMessage)) *mockOfflineMessageManager_SaveMessage_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.OfflineMessage))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.OfflineMessage
+		if args[1] != nil {
+			arg1 = args[1].(state.OfflineMessage)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockOfflineMessageManager_SaveMessage_Call) Return(_a0 int, _a1 error) *mockOfflineMessageManager_SaveMessage_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockOfflineMessageManager_SaveMessage_Call) Return(n int, err error) *mockOfflineMessageManager_SaveMessage_Call {
+	_c.Call.Return(n, err)
 	return _c
 }
 
-func (_c *mockOfflineMessageManager_SaveMessage_Call) RunAndReturn(run func(context.Context, state.OfflineMessage) (int, error)) *mockOfflineMessageManager_SaveMessage_Call {
+func (_c *mockOfflineMessageManager_SaveMessage_Call) RunAndReturn(run func(ctx context.Context, offlineMessage state.OfflineMessage) (int, error)) *mockOfflineMessageManager_SaveMessage_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// SetOfflineMsgCount provides a mock function with given fields: ctx, screenName, count
-func (_m *mockOfflineMessageManager) SetOfflineMsgCount(ctx context.Context, screenName state.IdentScreenName, count int) error {
-	ret := _m.Called(ctx, screenName, count)
+// SetOfflineMsgCount provides a mock function for the type mockOfflineMessageManager
+func (_mock *mockOfflineMessageManager) SetOfflineMsgCount(ctx context.Context, screenName state.IdentScreenName, count int) error {
+	ret := _mock.Called(ctx, screenName, count)
 
 	if len(ret) == 0 {
 		panic("no return value specified for SetOfflineMsgCount")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, int) error); ok {
-		r0 = rf(ctx, screenName, count)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, int) error); ok {
+		r0 = returnFunc(ctx, screenName, count)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -218,31 +261,33 @@ func (_e *mockOfflineMessageManager_Expecter) SetOfflineMsgCount(ctx interface{}
 
 func (_c *mockOfflineMessageManager_SetOfflineMsgCount_Call) Run(run func(ctx context.Context, screenName state.IdentScreenName, count int)) *mockOfflineMessageManager_SetOfflineMsgCount_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName), args[2].(int))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		var arg2 int
+		if args[2] != nil {
+			arg2 = args[2].(int)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockOfflineMessageManager_SetOfflineMsgCount_Call) Return(_a0 error) *mockOfflineMessageManager_SetOfflineMsgCount_Call {
-	_c.Call.Return(_a0)
+func (_c *mockOfflineMessageManager_SetOfflineMsgCount_Call) Return(err error) *mockOfflineMessageManager_SetOfflineMsgCount_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockOfflineMessageManager_SetOfflineMsgCount_Call) RunAndReturn(run func(context.Context, state.IdentScreenName, int) error) *mockOfflineMessageManager_SetOfflineMsgCount_Call {
+func (_c *mockOfflineMessageManager_SetOfflineMsgCount_Call) RunAndReturn(run func(ctx context.Context, screenName state.IdentScreenName, count int) error) *mockOfflineMessageManager_SetOfflineMsgCount_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockOfflineMessageManager creates a new instance of mockOfflineMessageManager. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockOfflineMessageManager(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockOfflineMessageManager {
-	mock := &mockOfflineMessageManager{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 234 - 139
foodgroup/mock_profile_manager_test.go

@@ -1,16 +1,31 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package foodgroup
 
 import (
-	context "context"
+	"context"
 
-	state "github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/wire"
 	mock "github.com/stretchr/testify/mock"
-
-	wire "github.com/mk6i/retro-aim-server/wire"
 )
 
+// newMockProfileManager creates a new instance of mockProfileManager. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockProfileManager(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockProfileManager {
+	mock := &mockProfileManager{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockProfileManager is an autogenerated mock type for the ProfileManager type
 type mockProfileManager struct {
 	mock.Mock
@@ -24,9 +39,9 @@ func (_m *mockProfileManager) EXPECT() *mockProfileManager_Expecter {
 	return &mockProfileManager_Expecter{mock: &_m.Mock}
 }
 
-// FindByAIMEmail provides a mock function with given fields: ctx, email
-func (_m *mockProfileManager) FindByAIMEmail(ctx context.Context, email string) (state.User, error) {
-	ret := _m.Called(ctx, email)
+// FindByAIMEmail provides a mock function for the type mockProfileManager
+func (_mock *mockProfileManager) FindByAIMEmail(ctx context.Context, email string) (state.User, error) {
+	ret := _mock.Called(ctx, email)
 
 	if len(ret) == 0 {
 		panic("no return value specified for FindByAIMEmail")
@@ -34,21 +49,19 @@ func (_m *mockProfileManager) FindByAIMEmail(ctx context.Context, email string)
 
 	var r0 state.User
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, string) (state.User, error)); ok {
-		return rf(ctx, email)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, string) (state.User, error)); ok {
+		return returnFunc(ctx, email)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, string) state.User); ok {
-		r0 = rf(ctx, email)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, string) state.User); ok {
+		r0 = returnFunc(ctx, email)
 	} else {
 		r0 = ret.Get(0).(state.User)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, string) error); ok {
-		r1 = rf(ctx, email)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, string) error); ok {
+		r1 = returnFunc(ctx, email)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -66,24 +79,35 @@ func (_e *mockProfileManager_Expecter) FindByAIMEmail(ctx interface{}, email int
 
 func (_c *mockProfileManager_FindByAIMEmail_Call) Run(run func(ctx context.Context, email string)) *mockProfileManager_FindByAIMEmail_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(string))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 string
+		if args[1] != nil {
+			arg1 = args[1].(string)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockProfileManager_FindByAIMEmail_Call) Return(_a0 state.User, _a1 error) *mockProfileManager_FindByAIMEmail_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockProfileManager_FindByAIMEmail_Call) Return(user state.User, err error) *mockProfileManager_FindByAIMEmail_Call {
+	_c.Call.Return(user, err)
 	return _c
 }
 
-func (_c *mockProfileManager_FindByAIMEmail_Call) RunAndReturn(run func(context.Context, string) (state.User, error)) *mockProfileManager_FindByAIMEmail_Call {
+func (_c *mockProfileManager_FindByAIMEmail_Call) RunAndReturn(run func(ctx context.Context, email string) (state.User, error)) *mockProfileManager_FindByAIMEmail_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// FindByAIMKeyword provides a mock function with given fields: ctx, keyword
-func (_m *mockProfileManager) FindByAIMKeyword(ctx context.Context, keyword string) ([]state.User, error) {
-	ret := _m.Called(ctx, keyword)
+// FindByAIMKeyword provides a mock function for the type mockProfileManager
+func (_mock *mockProfileManager) FindByAIMKeyword(ctx context.Context, keyword string) ([]state.User, error) {
+	ret := _mock.Called(ctx, keyword)
 
 	if len(ret) == 0 {
 		panic("no return value specified for FindByAIMKeyword")
@@ -91,23 +115,21 @@ func (_m *mockProfileManager) FindByAIMKeyword(ctx context.Context, keyword stri
 
 	var r0 []state.User
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, string) ([]state.User, error)); ok {
-		return rf(ctx, keyword)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, string) ([]state.User, error)); ok {
+		return returnFunc(ctx, keyword)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, string) []state.User); ok {
-		r0 = rf(ctx, keyword)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, string) []state.User); ok {
+		r0 = returnFunc(ctx, keyword)
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).([]state.User)
 		}
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, string) error); ok {
-		r1 = rf(ctx, keyword)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, string) error); ok {
+		r1 = returnFunc(ctx, keyword)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -125,24 +147,35 @@ func (_e *mockProfileManager_Expecter) FindByAIMKeyword(ctx interface{}, keyword
 
 func (_c *mockProfileManager_FindByAIMKeyword_Call) Run(run func(ctx context.Context, keyword string)) *mockProfileManager_FindByAIMKeyword_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(string))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 string
+		if args[1] != nil {
+			arg1 = args[1].(string)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockProfileManager_FindByAIMKeyword_Call) Return(_a0 []state.User, _a1 error) *mockProfileManager_FindByAIMKeyword_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockProfileManager_FindByAIMKeyword_Call) Return(users []state.User, err error) *mockProfileManager_FindByAIMKeyword_Call {
+	_c.Call.Return(users, err)
 	return _c
 }
 
-func (_c *mockProfileManager_FindByAIMKeyword_Call) RunAndReturn(run func(context.Context, string) ([]state.User, error)) *mockProfileManager_FindByAIMKeyword_Call {
+func (_c *mockProfileManager_FindByAIMKeyword_Call) RunAndReturn(run func(ctx context.Context, keyword string) ([]state.User, error)) *mockProfileManager_FindByAIMKeyword_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// FindByAIMNameAndAddr provides a mock function with given fields: ctx, info
-func (_m *mockProfileManager) FindByAIMNameAndAddr(ctx context.Context, info state.AIMNameAndAddr) ([]state.User, error) {
-	ret := _m.Called(ctx, info)
+// FindByAIMNameAndAddr provides a mock function for the type mockProfileManager
+func (_mock *mockProfileManager) FindByAIMNameAndAddr(ctx context.Context, info state.AIMNameAndAddr) ([]state.User, error) {
+	ret := _mock.Called(ctx, info)
 
 	if len(ret) == 0 {
 		panic("no return value specified for FindByAIMNameAndAddr")
@@ -150,23 +183,21 @@ func (_m *mockProfileManager) FindByAIMNameAndAddr(ctx context.Context, info sta
 
 	var r0 []state.User
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.AIMNameAndAddr) ([]state.User, error)); ok {
-		return rf(ctx, info)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.AIMNameAndAddr) ([]state.User, error)); ok {
+		return returnFunc(ctx, info)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, state.AIMNameAndAddr) []state.User); ok {
-		r0 = rf(ctx, info)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.AIMNameAndAddr) []state.User); ok {
+		r0 = returnFunc(ctx, info)
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).([]state.User)
 		}
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, state.AIMNameAndAddr) error); ok {
-		r1 = rf(ctx, info)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, state.AIMNameAndAddr) error); ok {
+		r1 = returnFunc(ctx, info)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -184,24 +215,35 @@ func (_e *mockProfileManager_Expecter) FindByAIMNameAndAddr(ctx interface{}, inf
 
 func (_c *mockProfileManager_FindByAIMNameAndAddr_Call) Run(run func(ctx context.Context, info state.AIMNameAndAddr)) *mockProfileManager_FindByAIMNameAndAddr_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.AIMNameAndAddr))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.AIMNameAndAddr
+		if args[1] != nil {
+			arg1 = args[1].(state.AIMNameAndAddr)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockProfileManager_FindByAIMNameAndAddr_Call) Return(_a0 []state.User, _a1 error) *mockProfileManager_FindByAIMNameAndAddr_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockProfileManager_FindByAIMNameAndAddr_Call) Return(users []state.User, err error) *mockProfileManager_FindByAIMNameAndAddr_Call {
+	_c.Call.Return(users, err)
 	return _c
 }
 
-func (_c *mockProfileManager_FindByAIMNameAndAddr_Call) RunAndReturn(run func(context.Context, state.AIMNameAndAddr) ([]state.User, error)) *mockProfileManager_FindByAIMNameAndAddr_Call {
+func (_c *mockProfileManager_FindByAIMNameAndAddr_Call) RunAndReturn(run func(ctx context.Context, info state.AIMNameAndAddr) ([]state.User, error)) *mockProfileManager_FindByAIMNameAndAddr_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// InterestList provides a mock function with given fields: ctx
-func (_m *mockProfileManager) InterestList(ctx context.Context) ([]wire.ODirKeywordListItem, error) {
-	ret := _m.Called(ctx)
+// InterestList provides a mock function for the type mockProfileManager
+func (_mock *mockProfileManager) InterestList(ctx context.Context) ([]wire.ODirKeywordListItem, error) {
+	ret := _mock.Called(ctx)
 
 	if len(ret) == 0 {
 		panic("no return value specified for InterestList")
@@ -209,23 +251,21 @@ func (_m *mockProfileManager) InterestList(ctx context.Context) ([]wire.ODirKeyw
 
 	var r0 []wire.ODirKeywordListItem
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context) ([]wire.ODirKeywordListItem, error)); ok {
-		return rf(ctx)
+	if returnFunc, ok := ret.Get(0).(func(context.Context) ([]wire.ODirKeywordListItem, error)); ok {
+		return returnFunc(ctx)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context) []wire.ODirKeywordListItem); ok {
-		r0 = rf(ctx)
+	if returnFunc, ok := ret.Get(0).(func(context.Context) []wire.ODirKeywordListItem); ok {
+		r0 = returnFunc(ctx)
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).([]wire.ODirKeywordListItem)
 		}
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context) error); ok {
-		r1 = rf(ctx)
+	if returnFunc, ok := ret.Get(1).(func(context.Context) error); ok {
+		r1 = returnFunc(ctx)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -242,24 +282,30 @@ func (_e *mockProfileManager_Expecter) InterestList(ctx interface{}) *mockProfil
 
 func (_c *mockProfileManager_InterestList_Call) Run(run func(ctx context.Context)) *mockProfileManager_InterestList_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		run(
+			arg0,
+		)
 	})
 	return _c
 }
 
-func (_c *mockProfileManager_InterestList_Call) Return(_a0 []wire.ODirKeywordListItem, _a1 error) *mockProfileManager_InterestList_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockProfileManager_InterestList_Call) Return(oDirKeywordListItems []wire.ODirKeywordListItem, err error) *mockProfileManager_InterestList_Call {
+	_c.Call.Return(oDirKeywordListItems, err)
 	return _c
 }
 
-func (_c *mockProfileManager_InterestList_Call) RunAndReturn(run func(context.Context) ([]wire.ODirKeywordListItem, error)) *mockProfileManager_InterestList_Call {
+func (_c *mockProfileManager_InterestList_Call) RunAndReturn(run func(ctx context.Context) ([]wire.ODirKeywordListItem, error)) *mockProfileManager_InterestList_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// Profile provides a mock function with given fields: ctx, screenName
-func (_m *mockProfileManager) Profile(ctx context.Context, screenName state.IdentScreenName) (state.UserProfile, error) {
-	ret := _m.Called(ctx, screenName)
+// Profile provides a mock function for the type mockProfileManager
+func (_mock *mockProfileManager) Profile(ctx context.Context, screenName state.IdentScreenName) (state.UserProfile, error) {
+	ret := _mock.Called(ctx, screenName)
 
 	if len(ret) == 0 {
 		panic("no return value specified for Profile")
@@ -267,21 +313,19 @@ func (_m *mockProfileManager) Profile(ctx context.Context, screenName state.Iden
 
 	var r0 state.UserProfile
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) (state.UserProfile, error)); ok {
-		return rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) (state.UserProfile, error)); ok {
+		return returnFunc(ctx, screenName)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) state.UserProfile); ok {
-		r0 = rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) state.UserProfile); ok {
+		r0 = returnFunc(ctx, screenName)
 	} else {
 		r0 = ret.Get(0).(state.UserProfile)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, state.IdentScreenName) error); ok {
-		r1 = rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, state.IdentScreenName) error); ok {
+		r1 = returnFunc(ctx, screenName)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -299,36 +343,46 @@ func (_e *mockProfileManager_Expecter) Profile(ctx interface{}, screenName inter
 
 func (_c *mockProfileManager_Profile_Call) Run(run func(ctx context.Context, screenName state.IdentScreenName)) *mockProfileManager_Profile_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockProfileManager_Profile_Call) Return(_a0 state.UserProfile, _a1 error) *mockProfileManager_Profile_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockProfileManager_Profile_Call) Return(userProfile state.UserProfile, err error) *mockProfileManager_Profile_Call {
+	_c.Call.Return(userProfile, err)
 	return _c
 }
 
-func (_c *mockProfileManager_Profile_Call) RunAndReturn(run func(context.Context, state.IdentScreenName) (state.UserProfile, error)) *mockProfileManager_Profile_Call {
+func (_c *mockProfileManager_Profile_Call) RunAndReturn(run func(ctx context.Context, screenName state.IdentScreenName) (state.UserProfile, error)) *mockProfileManager_Profile_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// SetDirectoryInfo provides a mock function with given fields: ctx, screenName, info
-func (_m *mockProfileManager) SetDirectoryInfo(ctx context.Context, screenName state.IdentScreenName, info state.AIMNameAndAddr) error {
-	ret := _m.Called(ctx, screenName, info)
+// SetDirectoryInfo provides a mock function for the type mockProfileManager
+func (_mock *mockProfileManager) SetDirectoryInfo(ctx context.Context, screenName state.IdentScreenName, info state.AIMNameAndAddr) error {
+	ret := _mock.Called(ctx, screenName, info)
 
 	if len(ret) == 0 {
 		panic("no return value specified for SetDirectoryInfo")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, state.AIMNameAndAddr) error); ok {
-		r0 = rf(ctx, screenName, info)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, state.AIMNameAndAddr) error); ok {
+		r0 = returnFunc(ctx, screenName, info)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -347,36 +401,51 @@ func (_e *mockProfileManager_Expecter) SetDirectoryInfo(ctx interface{}, screenN
 
 func (_c *mockProfileManager_SetDirectoryInfo_Call) Run(run func(ctx context.Context, screenName state.IdentScreenName, info state.AIMNameAndAddr)) *mockProfileManager_SetDirectoryInfo_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName), args[2].(state.AIMNameAndAddr))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		var arg2 state.AIMNameAndAddr
+		if args[2] != nil {
+			arg2 = args[2].(state.AIMNameAndAddr)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockProfileManager_SetDirectoryInfo_Call) Return(_a0 error) *mockProfileManager_SetDirectoryInfo_Call {
-	_c.Call.Return(_a0)
+func (_c *mockProfileManager_SetDirectoryInfo_Call) Return(err error) *mockProfileManager_SetDirectoryInfo_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockProfileManager_SetDirectoryInfo_Call) RunAndReturn(run func(context.Context, state.IdentScreenName, state.AIMNameAndAddr) error) *mockProfileManager_SetDirectoryInfo_Call {
+func (_c *mockProfileManager_SetDirectoryInfo_Call) RunAndReturn(run func(ctx context.Context, screenName state.IdentScreenName, info state.AIMNameAndAddr) error) *mockProfileManager_SetDirectoryInfo_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// SetKeywords provides a mock function with given fields: ctx, screenName, keywords
-func (_m *mockProfileManager) SetKeywords(ctx context.Context, screenName state.IdentScreenName, keywords [5]string) error {
-	ret := _m.Called(ctx, screenName, keywords)
+// SetKeywords provides a mock function for the type mockProfileManager
+func (_mock *mockProfileManager) SetKeywords(ctx context.Context, screenName state.IdentScreenName, keywords [5]string) error {
+	ret := _mock.Called(ctx, screenName, keywords)
 
 	if len(ret) == 0 {
 		panic("no return value specified for SetKeywords")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, [5]string) error); ok {
-		r0 = rf(ctx, screenName, keywords)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, [5]string) error); ok {
+		r0 = returnFunc(ctx, screenName, keywords)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -395,36 +464,51 @@ func (_e *mockProfileManager_Expecter) SetKeywords(ctx interface{}, screenName i
 
 func (_c *mockProfileManager_SetKeywords_Call) Run(run func(ctx context.Context, screenName state.IdentScreenName, keywords [5]string)) *mockProfileManager_SetKeywords_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName), args[2].([5]string))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		var arg2 [5]string
+		if args[2] != nil {
+			arg2 = args[2].([5]string)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockProfileManager_SetKeywords_Call) Return(_a0 error) *mockProfileManager_SetKeywords_Call {
-	_c.Call.Return(_a0)
+func (_c *mockProfileManager_SetKeywords_Call) Return(err error) *mockProfileManager_SetKeywords_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockProfileManager_SetKeywords_Call) RunAndReturn(run func(context.Context, state.IdentScreenName, [5]string) error) *mockProfileManager_SetKeywords_Call {
+func (_c *mockProfileManager_SetKeywords_Call) RunAndReturn(run func(ctx context.Context, screenName state.IdentScreenName, keywords [5]string) error) *mockProfileManager_SetKeywords_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// SetProfile provides a mock function with given fields: ctx, screenName, profile
-func (_m *mockProfileManager) SetProfile(ctx context.Context, screenName state.IdentScreenName, profile state.UserProfile) error {
-	ret := _m.Called(ctx, screenName, profile)
+// SetProfile provides a mock function for the type mockProfileManager
+func (_mock *mockProfileManager) SetProfile(ctx context.Context, screenName state.IdentScreenName, profile state.UserProfile) error {
+	ret := _mock.Called(ctx, screenName, profile)
 
 	if len(ret) == 0 {
 		panic("no return value specified for SetProfile")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, state.UserProfile) error); ok {
-		r0 = rf(ctx, screenName, profile)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, state.UserProfile) error); ok {
+		r0 = returnFunc(ctx, screenName, profile)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -443,24 +527,40 @@ func (_e *mockProfileManager_Expecter) SetProfile(ctx interface{}, screenName in
 
 func (_c *mockProfileManager_SetProfile_Call) Run(run func(ctx context.Context, screenName state.IdentScreenName, profile state.UserProfile)) *mockProfileManager_SetProfile_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName), args[2].(state.UserProfile))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		var arg2 state.UserProfile
+		if args[2] != nil {
+			arg2 = args[2].(state.UserProfile)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockProfileManager_SetProfile_Call) Return(_a0 error) *mockProfileManager_SetProfile_Call {
-	_c.Call.Return(_a0)
+func (_c *mockProfileManager_SetProfile_Call) Return(err error) *mockProfileManager_SetProfile_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockProfileManager_SetProfile_Call) RunAndReturn(run func(context.Context, state.IdentScreenName, state.UserProfile) error) *mockProfileManager_SetProfile_Call {
+func (_c *mockProfileManager_SetProfile_Call) RunAndReturn(run func(ctx context.Context, screenName state.IdentScreenName, profile state.UserProfile) error) *mockProfileManager_SetProfile_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// User provides a mock function with given fields: ctx, screenName
-func (_m *mockProfileManager) User(ctx context.Context, screenName state.IdentScreenName) (*state.User, error) {
-	ret := _m.Called(ctx, screenName)
+// User provides a mock function for the type mockProfileManager
+func (_mock *mockProfileManager) User(ctx context.Context, screenName state.IdentScreenName) (*state.User, error) {
+	ret := _mock.Called(ctx, screenName)
 
 	if len(ret) == 0 {
 		panic("no return value specified for User")
@@ -468,23 +568,21 @@ func (_m *mockProfileManager) User(ctx context.Context, screenName state.IdentSc
 
 	var r0 *state.User
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) (*state.User, error)); ok {
-		return rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) (*state.User, error)); ok {
+		return returnFunc(ctx, screenName)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) *state.User); ok {
-		r0 = rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) *state.User); ok {
+		r0 = returnFunc(ctx, screenName)
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).(*state.User)
 		}
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, state.IdentScreenName) error); ok {
-		r1 = rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, state.IdentScreenName) error); ok {
+		r1 = returnFunc(ctx, screenName)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -502,31 +600,28 @@ func (_e *mockProfileManager_Expecter) User(ctx interface{}, screenName interfac
 
 func (_c *mockProfileManager_User_Call) Run(run func(ctx context.Context, screenName state.IdentScreenName)) *mockProfileManager_User_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockProfileManager_User_Call) Return(_a0 *state.User, _a1 error) *mockProfileManager_User_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockProfileManager_User_Call) Return(user *state.User, err error) *mockProfileManager_User_Call {
+	_c.Call.Return(user, err)
 	return _c
 }
 
-func (_c *mockProfileManager_User_Call) RunAndReturn(run func(context.Context, state.IdentScreenName) (*state.User, error)) *mockProfileManager_User_Call {
+func (_c *mockProfileManager_User_Call) RunAndReturn(run func(ctx context.Context, screenName state.IdentScreenName) (*state.User, error)) *mockProfileManager_User_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockProfileManager creates a new instance of mockProfileManager. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockProfileManager(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockProfileManager {
-	mock := &mockProfileManager{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 77 - 47
foodgroup/mock_relationship_fetcher_test.go

@@ -1,14 +1,30 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package foodgroup
 
 import (
-	context "context"
+	"context"
 
-	state "github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/state"
 	mock "github.com/stretchr/testify/mock"
 )
 
+// newMockRelationshipFetcher creates a new instance of mockRelationshipFetcher. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockRelationshipFetcher(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockRelationshipFetcher {
+	mock := &mockRelationshipFetcher{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockRelationshipFetcher is an autogenerated mock type for the RelationshipFetcher type
 type mockRelationshipFetcher struct {
 	mock.Mock
@@ -22,9 +38,9 @@ func (_m *mockRelationshipFetcher) EXPECT() *mockRelationshipFetcher_Expecter {
 	return &mockRelationshipFetcher_Expecter{mock: &_m.Mock}
 }
 
-// AllRelationships provides a mock function with given fields: ctx, me, filter
-func (_m *mockRelationshipFetcher) AllRelationships(ctx context.Context, me state.IdentScreenName, filter []state.IdentScreenName) ([]state.Relationship, error) {
-	ret := _m.Called(ctx, me, filter)
+// AllRelationships provides a mock function for the type mockRelationshipFetcher
+func (_mock *mockRelationshipFetcher) AllRelationships(ctx context.Context, me state.IdentScreenName, filter []state.IdentScreenName) ([]state.Relationship, error) {
+	ret := _mock.Called(ctx, me, filter)
 
 	if len(ret) == 0 {
 		panic("no return value specified for AllRelationships")
@@ -32,23 +48,21 @@ func (_m *mockRelationshipFetcher) AllRelationships(ctx context.Context, me stat
 
 	var r0 []state.Relationship
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, []state.IdentScreenName) ([]state.Relationship, error)); ok {
-		return rf(ctx, me, filter)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, []state.IdentScreenName) ([]state.Relationship, error)); ok {
+		return returnFunc(ctx, me, filter)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, []state.IdentScreenName) []state.Relationship); ok {
-		r0 = rf(ctx, me, filter)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, []state.IdentScreenName) []state.Relationship); ok {
+		r0 = returnFunc(ctx, me, filter)
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).([]state.Relationship)
 		}
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, state.IdentScreenName, []state.IdentScreenName) error); ok {
-		r1 = rf(ctx, me, filter)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, state.IdentScreenName, []state.IdentScreenName) error); ok {
+		r1 = returnFunc(ctx, me, filter)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -67,24 +81,40 @@ func (_e *mockRelationshipFetcher_Expecter) AllRelationships(ctx interface{}, me
 
 func (_c *mockRelationshipFetcher_AllRelationships_Call) Run(run func(ctx context.Context, me state.IdentScreenName, filter []state.IdentScreenName)) *mockRelationshipFetcher_AllRelationships_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName), args[2].([]state.IdentScreenName))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		var arg2 []state.IdentScreenName
+		if args[2] != nil {
+			arg2 = args[2].([]state.IdentScreenName)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockRelationshipFetcher_AllRelationships_Call) Return(_a0 []state.Relationship, _a1 error) *mockRelationshipFetcher_AllRelationships_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockRelationshipFetcher_AllRelationships_Call) Return(relationships []state.Relationship, err error) *mockRelationshipFetcher_AllRelationships_Call {
+	_c.Call.Return(relationships, err)
 	return _c
 }
 
-func (_c *mockRelationshipFetcher_AllRelationships_Call) RunAndReturn(run func(context.Context, state.IdentScreenName, []state.IdentScreenName) ([]state.Relationship, error)) *mockRelationshipFetcher_AllRelationships_Call {
+func (_c *mockRelationshipFetcher_AllRelationships_Call) RunAndReturn(run func(ctx context.Context, me state.IdentScreenName, filter []state.IdentScreenName) ([]state.Relationship, error)) *mockRelationshipFetcher_AllRelationships_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// Relationship provides a mock function with given fields: ctx, me, them
-func (_m *mockRelationshipFetcher) Relationship(ctx context.Context, me state.IdentScreenName, them state.IdentScreenName) (state.Relationship, error) {
-	ret := _m.Called(ctx, me, them)
+// Relationship provides a mock function for the type mockRelationshipFetcher
+func (_mock *mockRelationshipFetcher) Relationship(ctx context.Context, me state.IdentScreenName, them state.IdentScreenName) (state.Relationship, error) {
+	ret := _mock.Called(ctx, me, them)
 
 	if len(ret) == 0 {
 		panic("no return value specified for Relationship")
@@ -92,21 +122,19 @@ func (_m *mockRelationshipFetcher) Relationship(ctx context.Context, me state.Id
 
 	var r0 state.Relationship
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, state.IdentScreenName) (state.Relationship, error)); ok {
-		return rf(ctx, me, them)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, state.IdentScreenName) (state.Relationship, error)); ok {
+		return returnFunc(ctx, me, them)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, state.IdentScreenName) state.Relationship); ok {
-		r0 = rf(ctx, me, them)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, state.IdentScreenName) state.Relationship); ok {
+		r0 = returnFunc(ctx, me, them)
 	} else {
 		r0 = ret.Get(0).(state.Relationship)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, state.IdentScreenName, state.IdentScreenName) error); ok {
-		r1 = rf(ctx, me, them)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, state.IdentScreenName, state.IdentScreenName) error); ok {
+		r1 = returnFunc(ctx, me, them)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -125,31 +153,33 @@ func (_e *mockRelationshipFetcher_Expecter) Relationship(ctx interface{}, me int
 
 func (_c *mockRelationshipFetcher_Relationship_Call) Run(run func(ctx context.Context, me state.IdentScreenName, them state.IdentScreenName)) *mockRelationshipFetcher_Relationship_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName), args[2].(state.IdentScreenName))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		var arg2 state.IdentScreenName
+		if args[2] != nil {
+			arg2 = args[2].(state.IdentScreenName)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockRelationshipFetcher_Relationship_Call) Return(_a0 state.Relationship, _a1 error) *mockRelationshipFetcher_Relationship_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockRelationshipFetcher_Relationship_Call) Return(relationship state.Relationship, err error) *mockRelationshipFetcher_Relationship_Call {
+	_c.Call.Return(relationship, err)
 	return _c
 }
 
-func (_c *mockRelationshipFetcher_Relationship_Call) RunAndReturn(run func(context.Context, state.IdentScreenName, state.IdentScreenName) (state.Relationship, error)) *mockRelationshipFetcher_Relationship_Call {
+func (_c *mockRelationshipFetcher_Relationship_Call) RunAndReturn(run func(ctx context.Context, me state.IdentScreenName, them state.IdentScreenName) (state.Relationship, error)) *mockRelationshipFetcher_Relationship_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockRelationshipFetcher creates a new instance of mockRelationshipFetcher. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockRelationshipFetcher(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockRelationshipFetcher {
-	mock := &mockRelationshipFetcher{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 55 - 37
foodgroup/mock_session_registry_test.go

@@ -1,14 +1,30 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package foodgroup
 
 import (
-	context "context"
+	"context"
 
-	state "github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/state"
 	mock "github.com/stretchr/testify/mock"
 )
 
+// newMockSessionRegistry creates a new instance of mockSessionRegistry. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockSessionRegistry(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockSessionRegistry {
+	mock := &mockSessionRegistry{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockSessionRegistry is an autogenerated mock type for the SessionRegistry type
 type mockSessionRegistry struct {
 	mock.Mock
@@ -22,9 +38,9 @@ func (_m *mockSessionRegistry) EXPECT() *mockSessionRegistry_Expecter {
 	return &mockSessionRegistry_Expecter{mock: &_m.Mock}
 }
 
-// AddSession provides a mock function with given fields: ctx, screenName
-func (_m *mockSessionRegistry) AddSession(ctx context.Context, screenName state.DisplayScreenName) (*state.Session, error) {
-	ret := _m.Called(ctx, screenName)
+// AddSession provides a mock function for the type mockSessionRegistry
+func (_mock *mockSessionRegistry) AddSession(ctx context.Context, screenName state.DisplayScreenName) (*state.Session, error) {
+	ret := _mock.Called(ctx, screenName)
 
 	if len(ret) == 0 {
 		panic("no return value specified for AddSession")
@@ -32,23 +48,21 @@ func (_m *mockSessionRegistry) AddSession(ctx context.Context, screenName state.
 
 	var r0 *state.Session
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.DisplayScreenName) (*state.Session, error)); ok {
-		return rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.DisplayScreenName) (*state.Session, error)); ok {
+		return returnFunc(ctx, screenName)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, state.DisplayScreenName) *state.Session); ok {
-		r0 = rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.DisplayScreenName) *state.Session); ok {
+		r0 = returnFunc(ctx, screenName)
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).(*state.Session)
 		}
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, state.DisplayScreenName) error); ok {
-		r1 = rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, state.DisplayScreenName) error); ok {
+		r1 = returnFunc(ctx, screenName)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -66,24 +80,36 @@ func (_e *mockSessionRegistry_Expecter) AddSession(ctx interface{}, screenName i
 
 func (_c *mockSessionRegistry_AddSession_Call) Run(run func(ctx context.Context, screenName state.DisplayScreenName)) *mockSessionRegistry_AddSession_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.DisplayScreenName))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.DisplayScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.DisplayScreenName)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockSessionRegistry_AddSession_Call) Return(_a0 *state.Session, _a1 error) *mockSessionRegistry_AddSession_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockSessionRegistry_AddSession_Call) Return(session *state.Session, err error) *mockSessionRegistry_AddSession_Call {
+	_c.Call.Return(session, err)
 	return _c
 }
 
-func (_c *mockSessionRegistry_AddSession_Call) RunAndReturn(run func(context.Context, state.DisplayScreenName) (*state.Session, error)) *mockSessionRegistry_AddSession_Call {
+func (_c *mockSessionRegistry_AddSession_Call) RunAndReturn(run func(ctx context.Context, screenName state.DisplayScreenName) (*state.Session, error)) *mockSessionRegistry_AddSession_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// RemoveSession provides a mock function with given fields: sess
-func (_m *mockSessionRegistry) RemoveSession(sess *state.Session) {
-	_m.Called(sess)
+// RemoveSession provides a mock function for the type mockSessionRegistry
+func (_mock *mockSessionRegistry) RemoveSession(sess *state.Session) {
+	_mock.Called(sess)
+	return
 }
 
 // mockSessionRegistry_RemoveSession_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'RemoveSession'
@@ -99,7 +125,13 @@ func (_e *mockSessionRegistry_Expecter) RemoveSession(sess interface{}) *mockSes
 
 func (_c *mockSessionRegistry_RemoveSession_Call) Run(run func(sess *state.Session)) *mockSessionRegistry_RemoveSession_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(*state.Session))
+		var arg0 *state.Session
+		if args[0] != nil {
+			arg0 = args[0].(*state.Session)
+		}
+		run(
+			arg0,
+		)
 	})
 	return _c
 }
@@ -109,21 +141,7 @@ func (_c *mockSessionRegistry_RemoveSession_Call) Return() *mockSessionRegistry_
 	return _c
 }
 
-func (_c *mockSessionRegistry_RemoveSession_Call) RunAndReturn(run func(*state.Session)) *mockSessionRegistry_RemoveSession_Call {
+func (_c *mockSessionRegistry_RemoveSession_Call) RunAndReturn(run func(sess *state.Session)) *mockSessionRegistry_RemoveSession_Call {
 	_c.Run(run)
 	return _c
 }
-
-// newMockSessionRegistry creates a new instance of mockSessionRegistry. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockSessionRegistry(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockSessionRegistry {
-	mock := &mockSessionRegistry{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 33 - 26
foodgroup/mock_session_retriever_test.go

@@ -1,12 +1,28 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package foodgroup
 
 import (
-	state "github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/state"
 	mock "github.com/stretchr/testify/mock"
 )
 
+// newMockSessionRetriever creates a new instance of mockSessionRetriever. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockSessionRetriever(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockSessionRetriever {
+	mock := &mockSessionRetriever{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockSessionRetriever is an autogenerated mock type for the SessionRetriever type
 type mockSessionRetriever struct {
 	mock.Mock
@@ -20,23 +36,22 @@ func (_m *mockSessionRetriever) EXPECT() *mockSessionRetriever_Expecter {
 	return &mockSessionRetriever_Expecter{mock: &_m.Mock}
 }
 
-// RetrieveSession provides a mock function with given fields: screenName
-func (_m *mockSessionRetriever) RetrieveSession(screenName state.IdentScreenName) *state.Session {
-	ret := _m.Called(screenName)
+// RetrieveSession provides a mock function for the type mockSessionRetriever
+func (_mock *mockSessionRetriever) RetrieveSession(screenName state.IdentScreenName) *state.Session {
+	ret := _mock.Called(screenName)
 
 	if len(ret) == 0 {
 		panic("no return value specified for RetrieveSession")
 	}
 
 	var r0 *state.Session
-	if rf, ok := ret.Get(0).(func(state.IdentScreenName) *state.Session); ok {
-		r0 = rf(screenName)
+	if returnFunc, ok := ret.Get(0).(func(state.IdentScreenName) *state.Session); ok {
+		r0 = returnFunc(screenName)
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).(*state.Session)
 		}
 	}
-
 	return r0
 }
 
@@ -53,31 +68,23 @@ func (_e *mockSessionRetriever_Expecter) RetrieveSession(screenName interface{})
 
 func (_c *mockSessionRetriever_RetrieveSession_Call) Run(run func(screenName state.IdentScreenName)) *mockSessionRetriever_RetrieveSession_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(state.IdentScreenName))
+		var arg0 state.IdentScreenName
+		if args[0] != nil {
+			arg0 = args[0].(state.IdentScreenName)
+		}
+		run(
+			arg0,
+		)
 	})
 	return _c
 }
 
-func (_c *mockSessionRetriever_RetrieveSession_Call) Return(_a0 *state.Session) *mockSessionRetriever_RetrieveSession_Call {
-	_c.Call.Return(_a0)
+func (_c *mockSessionRetriever_RetrieveSession_Call) Return(session *state.Session) *mockSessionRetriever_RetrieveSession_Call {
+	_c.Call.Return(session)
 	return _c
 }
 
-func (_c *mockSessionRetriever_RetrieveSession_Call) RunAndReturn(run func(state.IdentScreenName) *state.Session) *mockSessionRetriever_RetrieveSession_Call {
+func (_c *mockSessionRetriever_RetrieveSession_Call) RunAndReturn(run func(screenName state.IdentScreenName) *state.Session) *mockSessionRetriever_RetrieveSession_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockSessionRetriever creates a new instance of mockSessionRetriever. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockSessionRetriever(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockSessionRetriever {
-	mock := &mockSessionRetriever{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 94 - 54
foodgroup/mock_user_manager_manager_test.go

@@ -1,16 +1,31 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package foodgroup
 
 import (
-	context "context"
+	"context"
+	"time"
 
-	state "github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/state"
 	mock "github.com/stretchr/testify/mock"
-
-	time "time"
 )
 
+// newMockUserManager creates a new instance of mockUserManager. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockUserManager(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockUserManager {
+	mock := &mockUserManager{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockUserManager is an autogenerated mock type for the UserManager type
 type mockUserManager struct {
 	mock.Mock
@@ -24,21 +39,20 @@ func (_m *mockUserManager) EXPECT() *mockUserManager_Expecter {
 	return &mockUserManager_Expecter{mock: &_m.Mock}
 }
 
-// InsertUser provides a mock function with given fields: ctx, u
-func (_m *mockUserManager) InsertUser(ctx context.Context, u state.User) error {
-	ret := _m.Called(ctx, u)
+// InsertUser provides a mock function for the type mockUserManager
+func (_mock *mockUserManager) InsertUser(ctx context.Context, u state.User) error {
+	ret := _mock.Called(ctx, u)
 
 	if len(ret) == 0 {
 		panic("no return value specified for InsertUser")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.User) error); ok {
-		r0 = rf(ctx, u)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.User) error); ok {
+		r0 = returnFunc(ctx, u)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -56,36 +70,46 @@ func (_e *mockUserManager_Expecter) InsertUser(ctx interface{}, u interface{}) *
 
 func (_c *mockUserManager_InsertUser_Call) Run(run func(ctx context.Context, u state.User)) *mockUserManager_InsertUser_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.User))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.User
+		if args[1] != nil {
+			arg1 = args[1].(state.User)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockUserManager_InsertUser_Call) Return(_a0 error) *mockUserManager_InsertUser_Call {
-	_c.Call.Return(_a0)
+func (_c *mockUserManager_InsertUser_Call) Return(err error) *mockUserManager_InsertUser_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockUserManager_InsertUser_Call) RunAndReturn(run func(context.Context, state.User) error) *mockUserManager_InsertUser_Call {
+func (_c *mockUserManager_InsertUser_Call) RunAndReturn(run func(ctx context.Context, u state.User) error) *mockUserManager_InsertUser_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// SetWarnLevel provides a mock function with given fields: ctx, user, lastWarnUpdate, lastWarnLevel
-func (_m *mockUserManager) SetWarnLevel(ctx context.Context, user state.IdentScreenName, lastWarnUpdate time.Time, lastWarnLevel uint16) error {
-	ret := _m.Called(ctx, user, lastWarnUpdate, lastWarnLevel)
+// SetWarnLevel provides a mock function for the type mockUserManager
+func (_mock *mockUserManager) SetWarnLevel(ctx context.Context, user state.IdentScreenName, lastWarnUpdate time.Time, lastWarnLevel uint16) error {
+	ret := _mock.Called(ctx, user, lastWarnUpdate, lastWarnLevel)
 
 	if len(ret) == 0 {
 		panic("no return value specified for SetWarnLevel")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, time.Time, uint16) error); ok {
-		r0 = rf(ctx, user, lastWarnUpdate, lastWarnLevel)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, time.Time, uint16) error); ok {
+		r0 = returnFunc(ctx, user, lastWarnUpdate, lastWarnLevel)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -105,24 +129,45 @@ func (_e *mockUserManager_Expecter) SetWarnLevel(ctx interface{}, user interface
 
 func (_c *mockUserManager_SetWarnLevel_Call) Run(run func(ctx context.Context, user state.IdentScreenName, lastWarnUpdate time.Time, lastWarnLevel uint16)) *mockUserManager_SetWarnLevel_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName), args[2].(time.Time), args[3].(uint16))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		var arg2 time.Time
+		if args[2] != nil {
+			arg2 = args[2].(time.Time)
+		}
+		var arg3 uint16
+		if args[3] != nil {
+			arg3 = args[3].(uint16)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+			arg3,
+		)
 	})
 	return _c
 }
 
-func (_c *mockUserManager_SetWarnLevel_Call) Return(_a0 error) *mockUserManager_SetWarnLevel_Call {
-	_c.Call.Return(_a0)
+func (_c *mockUserManager_SetWarnLevel_Call) Return(err error) *mockUserManager_SetWarnLevel_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockUserManager_SetWarnLevel_Call) RunAndReturn(run func(context.Context, state.IdentScreenName, time.Time, uint16) error) *mockUserManager_SetWarnLevel_Call {
+func (_c *mockUserManager_SetWarnLevel_Call) RunAndReturn(run func(ctx context.Context, user state.IdentScreenName, lastWarnUpdate time.Time, lastWarnLevel uint16) error) *mockUserManager_SetWarnLevel_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// User provides a mock function with given fields: ctx, screenName
-func (_m *mockUserManager) User(ctx context.Context, screenName state.IdentScreenName) (*state.User, error) {
-	ret := _m.Called(ctx, screenName)
+// User provides a mock function for the type mockUserManager
+func (_mock *mockUserManager) User(ctx context.Context, screenName state.IdentScreenName) (*state.User, error) {
+	ret := _mock.Called(ctx, screenName)
 
 	if len(ret) == 0 {
 		panic("no return value specified for User")
@@ -130,23 +175,21 @@ func (_m *mockUserManager) User(ctx context.Context, screenName state.IdentScree
 
 	var r0 *state.User
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) (*state.User, error)); ok {
-		return rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) (*state.User, error)); ok {
+		return returnFunc(ctx, screenName)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) *state.User); ok {
-		r0 = rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) *state.User); ok {
+		r0 = returnFunc(ctx, screenName)
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).(*state.User)
 		}
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, state.IdentScreenName) error); ok {
-		r1 = rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, state.IdentScreenName) error); ok {
+		r1 = returnFunc(ctx, screenName)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -164,31 +207,28 @@ func (_e *mockUserManager_Expecter) User(ctx interface{}, screenName interface{}
 
 func (_c *mockUserManager_User_Call) Run(run func(ctx context.Context, screenName state.IdentScreenName)) *mockUserManager_User_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockUserManager_User_Call) Return(_a0 *state.User, _a1 error) *mockUserManager_User_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockUserManager_User_Call) Return(user *state.User, err error) *mockUserManager_User_Call {
+	_c.Call.Return(user, err)
 	return _c
 }
 
-func (_c *mockUserManager_User_Call) RunAndReturn(run func(context.Context, state.IdentScreenName) (*state.User, error)) *mockUserManager_User_Call {
+func (_c *mockUserManager_User_Call) RunAndReturn(run func(ctx context.Context, screenName state.IdentScreenName) (*state.User, error)) *mockUserManager_User_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockUserManager creates a new instance of mockUserManager. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockUserManager(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockUserManager {
-	mock := &mockUserManager{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 142 - 84
server/http/mock_account_manager_test.go

@@ -1,16 +1,31 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package http
 
 import (
-	context "context"
-	mail "net/mail"
+	"context"
+	"net/mail"
 
+	"github.com/mk6i/retro-aim-server/state"
 	mock "github.com/stretchr/testify/mock"
-
-	state "github.com/mk6i/retro-aim-server/state"
 )
 
+// newMockAccountManager creates a new instance of mockAccountManager. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockAccountManager(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockAccountManager {
+	mock := &mockAccountManager{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockAccountManager is an autogenerated mock type for the AccountManager type
 type mockAccountManager struct {
 	mock.Mock
@@ -24,9 +39,9 @@ func (_m *mockAccountManager) EXPECT() *mockAccountManager_Expecter {
 	return &mockAccountManager_Expecter{mock: &_m.Mock}
 }
 
-// ConfirmStatus provides a mock function with given fields: ctx, screenName
-func (_m *mockAccountManager) ConfirmStatus(ctx context.Context, screenName state.IdentScreenName) (bool, error) {
-	ret := _m.Called(ctx, screenName)
+// ConfirmStatus provides a mock function for the type mockAccountManager
+func (_mock *mockAccountManager) ConfirmStatus(ctx context.Context, screenName state.IdentScreenName) (bool, error) {
+	ret := _mock.Called(ctx, screenName)
 
 	if len(ret) == 0 {
 		panic("no return value specified for ConfirmStatus")
@@ -34,21 +49,19 @@ func (_m *mockAccountManager) ConfirmStatus(ctx context.Context, screenName stat
 
 	var r0 bool
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) (bool, error)); ok {
-		return rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) (bool, error)); ok {
+		return returnFunc(ctx, screenName)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) bool); ok {
-		r0 = rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) bool); ok {
+		r0 = returnFunc(ctx, screenName)
 	} else {
 		r0 = ret.Get(0).(bool)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, state.IdentScreenName) error); ok {
-		r1 = rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, state.IdentScreenName) error); ok {
+		r1 = returnFunc(ctx, screenName)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -66,24 +79,35 @@ func (_e *mockAccountManager_Expecter) ConfirmStatus(ctx interface{}, screenName
 
 func (_c *mockAccountManager_ConfirmStatus_Call) Run(run func(ctx context.Context, screenName state.IdentScreenName)) *mockAccountManager_ConfirmStatus_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockAccountManager_ConfirmStatus_Call) Return(_a0 bool, _a1 error) *mockAccountManager_ConfirmStatus_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockAccountManager_ConfirmStatus_Call) Return(b bool, err error) *mockAccountManager_ConfirmStatus_Call {
+	_c.Call.Return(b, err)
 	return _c
 }
 
-func (_c *mockAccountManager_ConfirmStatus_Call) RunAndReturn(run func(context.Context, state.IdentScreenName) (bool, error)) *mockAccountManager_ConfirmStatus_Call {
+func (_c *mockAccountManager_ConfirmStatus_Call) RunAndReturn(run func(ctx context.Context, screenName state.IdentScreenName) (bool, error)) *mockAccountManager_ConfirmStatus_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// EmailAddress provides a mock function with given fields: ctx, screenName
-func (_m *mockAccountManager) EmailAddress(ctx context.Context, screenName state.IdentScreenName) (*mail.Address, error) {
-	ret := _m.Called(ctx, screenName)
+// EmailAddress provides a mock function for the type mockAccountManager
+func (_mock *mockAccountManager) EmailAddress(ctx context.Context, screenName state.IdentScreenName) (*mail.Address, error) {
+	ret := _mock.Called(ctx, screenName)
 
 	if len(ret) == 0 {
 		panic("no return value specified for EmailAddress")
@@ -91,23 +115,21 @@ func (_m *mockAccountManager) EmailAddress(ctx context.Context, screenName state
 
 	var r0 *mail.Address
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) (*mail.Address, error)); ok {
-		return rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) (*mail.Address, error)); ok {
+		return returnFunc(ctx, screenName)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) *mail.Address); ok {
-		r0 = rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) *mail.Address); ok {
+		r0 = returnFunc(ctx, screenName)
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).(*mail.Address)
 		}
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, state.IdentScreenName) error); ok {
-		r1 = rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, state.IdentScreenName) error); ok {
+		r1 = returnFunc(ctx, screenName)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -125,24 +147,35 @@ func (_e *mockAccountManager_Expecter) EmailAddress(ctx interface{}, screenName
 
 func (_c *mockAccountManager_EmailAddress_Call) Run(run func(ctx context.Context, screenName state.IdentScreenName)) *mockAccountManager_EmailAddress_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockAccountManager_EmailAddress_Call) Return(_a0 *mail.Address, _a1 error) *mockAccountManager_EmailAddress_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockAccountManager_EmailAddress_Call) Return(address *mail.Address, err error) *mockAccountManager_EmailAddress_Call {
+	_c.Call.Return(address, err)
 	return _c
 }
 
-func (_c *mockAccountManager_EmailAddress_Call) RunAndReturn(run func(context.Context, state.IdentScreenName) (*mail.Address, error)) *mockAccountManager_EmailAddress_Call {
+func (_c *mockAccountManager_EmailAddress_Call) RunAndReturn(run func(ctx context.Context, screenName state.IdentScreenName) (*mail.Address, error)) *mockAccountManager_EmailAddress_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// RegStatus provides a mock function with given fields: ctx, screenName
-func (_m *mockAccountManager) RegStatus(ctx context.Context, screenName state.IdentScreenName) (uint16, error) {
-	ret := _m.Called(ctx, screenName)
+// RegStatus provides a mock function for the type mockAccountManager
+func (_mock *mockAccountManager) RegStatus(ctx context.Context, screenName state.IdentScreenName) (uint16, error) {
+	ret := _mock.Called(ctx, screenName)
 
 	if len(ret) == 0 {
 		panic("no return value specified for RegStatus")
@@ -150,21 +183,19 @@ func (_m *mockAccountManager) RegStatus(ctx context.Context, screenName state.Id
 
 	var r0 uint16
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) (uint16, error)); ok {
-		return rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) (uint16, error)); ok {
+		return returnFunc(ctx, screenName)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) uint16); ok {
-		r0 = rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) uint16); ok {
+		r0 = returnFunc(ctx, screenName)
 	} else {
 		r0 = ret.Get(0).(uint16)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, state.IdentScreenName) error); ok {
-		r1 = rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, state.IdentScreenName) error); ok {
+		r1 = returnFunc(ctx, screenName)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -182,36 +213,46 @@ func (_e *mockAccountManager_Expecter) RegStatus(ctx interface{}, screenName int
 
 func (_c *mockAccountManager_RegStatus_Call) Run(run func(ctx context.Context, screenName state.IdentScreenName)) *mockAccountManager_RegStatus_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockAccountManager_RegStatus_Call) Return(_a0 uint16, _a1 error) *mockAccountManager_RegStatus_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockAccountManager_RegStatus_Call) Return(v uint16, err error) *mockAccountManager_RegStatus_Call {
+	_c.Call.Return(v, err)
 	return _c
 }
 
-func (_c *mockAccountManager_RegStatus_Call) RunAndReturn(run func(context.Context, state.IdentScreenName) (uint16, error)) *mockAccountManager_RegStatus_Call {
+func (_c *mockAccountManager_RegStatus_Call) RunAndReturn(run func(ctx context.Context, screenName state.IdentScreenName) (uint16, error)) *mockAccountManager_RegStatus_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// SetBotStatus provides a mock function with given fields: ctx, isBot, screenName
-func (_m *mockAccountManager) SetBotStatus(ctx context.Context, isBot bool, screenName state.IdentScreenName) error {
-	ret := _m.Called(ctx, isBot, screenName)
+// SetBotStatus provides a mock function for the type mockAccountManager
+func (_mock *mockAccountManager) SetBotStatus(ctx context.Context, isBot bool, screenName state.IdentScreenName) error {
+	ret := _mock.Called(ctx, isBot, screenName)
 
 	if len(ret) == 0 {
 		panic("no return value specified for SetBotStatus")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, bool, state.IdentScreenName) error); ok {
-		r0 = rf(ctx, isBot, screenName)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, bool, state.IdentScreenName) error); ok {
+		r0 = returnFunc(ctx, isBot, screenName)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -230,36 +271,51 @@ func (_e *mockAccountManager_Expecter) SetBotStatus(ctx interface{}, isBot inter
 
 func (_c *mockAccountManager_SetBotStatus_Call) Run(run func(ctx context.Context, isBot bool, screenName state.IdentScreenName)) *mockAccountManager_SetBotStatus_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(bool), args[2].(state.IdentScreenName))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 bool
+		if args[1] != nil {
+			arg1 = args[1].(bool)
+		}
+		var arg2 state.IdentScreenName
+		if args[2] != nil {
+			arg2 = args[2].(state.IdentScreenName)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockAccountManager_SetBotStatus_Call) Return(_a0 error) *mockAccountManager_SetBotStatus_Call {
-	_c.Call.Return(_a0)
+func (_c *mockAccountManager_SetBotStatus_Call) Return(err error) *mockAccountManager_SetBotStatus_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockAccountManager_SetBotStatus_Call) RunAndReturn(run func(context.Context, bool, state.IdentScreenName) error) *mockAccountManager_SetBotStatus_Call {
+func (_c *mockAccountManager_SetBotStatus_Call) RunAndReturn(run func(ctx context.Context, isBot bool, screenName state.IdentScreenName) error) *mockAccountManager_SetBotStatus_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// UpdateSuspendedStatus provides a mock function with given fields: ctx, suspendedStatus, screenName
-func (_m *mockAccountManager) UpdateSuspendedStatus(ctx context.Context, suspendedStatus uint16, screenName state.IdentScreenName) error {
-	ret := _m.Called(ctx, suspendedStatus, screenName)
+// UpdateSuspendedStatus provides a mock function for the type mockAccountManager
+func (_mock *mockAccountManager) UpdateSuspendedStatus(ctx context.Context, suspendedStatus uint16, screenName state.IdentScreenName) error {
+	ret := _mock.Called(ctx, suspendedStatus, screenName)
 
 	if len(ret) == 0 {
 		panic("no return value specified for UpdateSuspendedStatus")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, uint16, state.IdentScreenName) error); ok {
-		r0 = rf(ctx, suspendedStatus, screenName)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, uint16, state.IdentScreenName) error); ok {
+		r0 = returnFunc(ctx, suspendedStatus, screenName)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -278,31 +334,33 @@ func (_e *mockAccountManager_Expecter) UpdateSuspendedStatus(ctx interface{}, su
 
 func (_c *mockAccountManager_UpdateSuspendedStatus_Call) Run(run func(ctx context.Context, suspendedStatus uint16, screenName state.IdentScreenName)) *mockAccountManager_UpdateSuspendedStatus_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(uint16), args[2].(state.IdentScreenName))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 uint16
+		if args[1] != nil {
+			arg1 = args[1].(uint16)
+		}
+		var arg2 state.IdentScreenName
+		if args[2] != nil {
+			arg2 = args[2].(state.IdentScreenName)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockAccountManager_UpdateSuspendedStatus_Call) Return(_a0 error) *mockAccountManager_UpdateSuspendedStatus_Call {
-	_c.Call.Return(_a0)
+func (_c *mockAccountManager_UpdateSuspendedStatus_Call) Return(err error) *mockAccountManager_UpdateSuspendedStatus_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockAccountManager_UpdateSuspendedStatus_Call) RunAndReturn(run func(context.Context, uint16, state.IdentScreenName) error) *mockAccountManager_UpdateSuspendedStatus_Call {
+func (_c *mockAccountManager_UpdateSuspendedStatus_Call) RunAndReturn(run func(ctx context.Context, suspendedStatus uint16, screenName state.IdentScreenName) error) *mockAccountManager_UpdateSuspendedStatus_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockAccountManager creates a new instance of mockAccountManager. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockAccountManager(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockAccountManager {
-	mock := &mockAccountManager{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 117 - 67
server/http/mock_bart_asset_manager_test.go

@@ -1,14 +1,30 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package http
 
 import (
-	context "context"
+	"context"
 
-	state "github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/state"
 	mock "github.com/stretchr/testify/mock"
 )
 
+// newMockBARTAssetManager creates a new instance of mockBARTAssetManager. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockBARTAssetManager(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockBARTAssetManager {
+	mock := &mockBARTAssetManager{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockBARTAssetManager is an autogenerated mock type for the BARTAssetManager type
 type mockBARTAssetManager struct {
 	mock.Mock
@@ -22,9 +38,9 @@ func (_m *mockBARTAssetManager) EXPECT() *mockBARTAssetManager_Expecter {
 	return &mockBARTAssetManager_Expecter{mock: &_m.Mock}
 }
 
-// BARTItem provides a mock function with given fields: ctx, hash
-func (_m *mockBARTAssetManager) BARTItem(ctx context.Context, hash []byte) ([]byte, error) {
-	ret := _m.Called(ctx, hash)
+// BARTItem provides a mock function for the type mockBARTAssetManager
+func (_mock *mockBARTAssetManager) BARTItem(ctx context.Context, hash []byte) ([]byte, error) {
+	ret := _mock.Called(ctx, hash)
 
 	if len(ret) == 0 {
 		panic("no return value specified for BARTItem")
@@ -32,23 +48,21 @@ func (_m *mockBARTAssetManager) BARTItem(ctx context.Context, hash []byte) ([]by
 
 	var r0 []byte
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, []byte) ([]byte, error)); ok {
-		return rf(ctx, hash)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, []byte) ([]byte, error)); ok {
+		return returnFunc(ctx, hash)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, []byte) []byte); ok {
-		r0 = rf(ctx, hash)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, []byte) []byte); ok {
+		r0 = returnFunc(ctx, hash)
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).([]byte)
 		}
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, []byte) error); ok {
-		r1 = rf(ctx, hash)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, []byte) error); ok {
+		r1 = returnFunc(ctx, hash)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -66,36 +80,46 @@ func (_e *mockBARTAssetManager_Expecter) BARTItem(ctx interface{}, hash interfac
 
 func (_c *mockBARTAssetManager_BARTItem_Call) Run(run func(ctx context.Context, hash []byte)) *mockBARTAssetManager_BARTItem_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].([]byte))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 []byte
+		if args[1] != nil {
+			arg1 = args[1].([]byte)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockBARTAssetManager_BARTItem_Call) Return(_a0 []byte, _a1 error) *mockBARTAssetManager_BARTItem_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockBARTAssetManager_BARTItem_Call) Return(bytes []byte, err error) *mockBARTAssetManager_BARTItem_Call {
+	_c.Call.Return(bytes, err)
 	return _c
 }
 
-func (_c *mockBARTAssetManager_BARTItem_Call) RunAndReturn(run func(context.Context, []byte) ([]byte, error)) *mockBARTAssetManager_BARTItem_Call {
+func (_c *mockBARTAssetManager_BARTItem_Call) RunAndReturn(run func(ctx context.Context, hash []byte) ([]byte, error)) *mockBARTAssetManager_BARTItem_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// DeleteBARTItem provides a mock function with given fields: ctx, hash
-func (_m *mockBARTAssetManager) DeleteBARTItem(ctx context.Context, hash []byte) error {
-	ret := _m.Called(ctx, hash)
+// DeleteBARTItem provides a mock function for the type mockBARTAssetManager
+func (_mock *mockBARTAssetManager) DeleteBARTItem(ctx context.Context, hash []byte) error {
+	ret := _mock.Called(ctx, hash)
 
 	if len(ret) == 0 {
 		panic("no return value specified for DeleteBARTItem")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, []byte) error); ok {
-		r0 = rf(ctx, hash)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, []byte) error); ok {
+		r0 = returnFunc(ctx, hash)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -113,36 +137,46 @@ func (_e *mockBARTAssetManager_Expecter) DeleteBARTItem(ctx interface{}, hash in
 
 func (_c *mockBARTAssetManager_DeleteBARTItem_Call) Run(run func(ctx context.Context, hash []byte)) *mockBARTAssetManager_DeleteBARTItem_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].([]byte))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 []byte
+		if args[1] != nil {
+			arg1 = args[1].([]byte)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockBARTAssetManager_DeleteBARTItem_Call) Return(_a0 error) *mockBARTAssetManager_DeleteBARTItem_Call {
-	_c.Call.Return(_a0)
+func (_c *mockBARTAssetManager_DeleteBARTItem_Call) Return(err error) *mockBARTAssetManager_DeleteBARTItem_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockBARTAssetManager_DeleteBARTItem_Call) RunAndReturn(run func(context.Context, []byte) error) *mockBARTAssetManager_DeleteBARTItem_Call {
+func (_c *mockBARTAssetManager_DeleteBARTItem_Call) RunAndReturn(run func(ctx context.Context, hash []byte) error) *mockBARTAssetManager_DeleteBARTItem_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// InsertBARTItem provides a mock function with given fields: ctx, hash, blob, itemType
-func (_m *mockBARTAssetManager) InsertBARTItem(ctx context.Context, hash []byte, blob []byte, itemType uint16) error {
-	ret := _m.Called(ctx, hash, blob, itemType)
+// InsertBARTItem provides a mock function for the type mockBARTAssetManager
+func (_mock *mockBARTAssetManager) InsertBARTItem(ctx context.Context, hash []byte, blob []byte, itemType uint16) error {
+	ret := _mock.Called(ctx, hash, blob, itemType)
 
 	if len(ret) == 0 {
 		panic("no return value specified for InsertBARTItem")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, []byte, []byte, uint16) error); ok {
-		r0 = rf(ctx, hash, blob, itemType)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, []byte, []byte, uint16) error); ok {
+		r0 = returnFunc(ctx, hash, blob, itemType)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -162,24 +196,45 @@ func (_e *mockBARTAssetManager_Expecter) InsertBARTItem(ctx interface{}, hash in
 
 func (_c *mockBARTAssetManager_InsertBARTItem_Call) Run(run func(ctx context.Context, hash []byte, blob []byte, itemType uint16)) *mockBARTAssetManager_InsertBARTItem_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].([]byte), args[2].([]byte), args[3].(uint16))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 []byte
+		if args[1] != nil {
+			arg1 = args[1].([]byte)
+		}
+		var arg2 []byte
+		if args[2] != nil {
+			arg2 = args[2].([]byte)
+		}
+		var arg3 uint16
+		if args[3] != nil {
+			arg3 = args[3].(uint16)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+			arg3,
+		)
 	})
 	return _c
 }
 
-func (_c *mockBARTAssetManager_InsertBARTItem_Call) Return(_a0 error) *mockBARTAssetManager_InsertBARTItem_Call {
-	_c.Call.Return(_a0)
+func (_c *mockBARTAssetManager_InsertBARTItem_Call) Return(err error) *mockBARTAssetManager_InsertBARTItem_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockBARTAssetManager_InsertBARTItem_Call) RunAndReturn(run func(context.Context, []byte, []byte, uint16) error) *mockBARTAssetManager_InsertBARTItem_Call {
+func (_c *mockBARTAssetManager_InsertBARTItem_Call) RunAndReturn(run func(ctx context.Context, hash []byte, blob []byte, itemType uint16) error) *mockBARTAssetManager_InsertBARTItem_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// ListBARTItems provides a mock function with given fields: ctx, itemType
-func (_m *mockBARTAssetManager) ListBARTItems(ctx context.Context, itemType uint16) ([]state.BARTItem, error) {
-	ret := _m.Called(ctx, itemType)
+// ListBARTItems provides a mock function for the type mockBARTAssetManager
+func (_mock *mockBARTAssetManager) ListBARTItems(ctx context.Context, itemType uint16) ([]state.BARTItem, error) {
+	ret := _mock.Called(ctx, itemType)
 
 	if len(ret) == 0 {
 		panic("no return value specified for ListBARTItems")
@@ -187,23 +242,21 @@ func (_m *mockBARTAssetManager) ListBARTItems(ctx context.Context, itemType uint
 
 	var r0 []state.BARTItem
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, uint16) ([]state.BARTItem, error)); ok {
-		return rf(ctx, itemType)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, uint16) ([]state.BARTItem, error)); ok {
+		return returnFunc(ctx, itemType)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, uint16) []state.BARTItem); ok {
-		r0 = rf(ctx, itemType)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, uint16) []state.BARTItem); ok {
+		r0 = returnFunc(ctx, itemType)
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).([]state.BARTItem)
 		}
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, uint16) error); ok {
-		r1 = rf(ctx, itemType)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, uint16) error); ok {
+		r1 = returnFunc(ctx, itemType)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -221,31 +274,28 @@ func (_e *mockBARTAssetManager_Expecter) ListBARTItems(ctx interface{}, itemType
 
 func (_c *mockBARTAssetManager_ListBARTItems_Call) Run(run func(ctx context.Context, itemType uint16)) *mockBARTAssetManager_ListBARTItems_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(uint16))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 uint16
+		if args[1] != nil {
+			arg1 = args[1].(uint16)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockBARTAssetManager_ListBARTItems_Call) Return(_a0 []state.BARTItem, _a1 error) *mockBARTAssetManager_ListBARTItems_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockBARTAssetManager_ListBARTItems_Call) Return(bARTItems []state.BARTItem, err error) *mockBARTAssetManager_ListBARTItems_Call {
+	_c.Call.Return(bARTItems, err)
 	return _c
 }
 
-func (_c *mockBARTAssetManager_ListBARTItems_Call) RunAndReturn(run func(context.Context, uint16) ([]state.BARTItem, error)) *mockBARTAssetManager_ListBARTItems_Call {
+func (_c *mockBARTAssetManager_ListBARTItems_Call) RunAndReturn(run func(ctx context.Context, itemType uint16) ([]state.BARTItem, error)) *mockBARTAssetManager_ListBARTItems_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockBARTAssetManager creates a new instance of mockBARTAssetManager. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockBARTAssetManager(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockBARTAssetManager {
-	mock := &mockBARTAssetManager{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 39 - 27
server/http/mock_chat_room_creator_test.go

@@ -1,14 +1,30 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package http
 
 import (
-	context "context"
+	"context"
 
-	state "github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/state"
 	mock "github.com/stretchr/testify/mock"
 )
 
+// newMockChatRoomCreator creates a new instance of mockChatRoomCreator. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockChatRoomCreator(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockChatRoomCreator {
+	mock := &mockChatRoomCreator{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockChatRoomCreator is an autogenerated mock type for the ChatRoomCreator type
 type mockChatRoomCreator struct {
 	mock.Mock
@@ -22,21 +38,20 @@ func (_m *mockChatRoomCreator) EXPECT() *mockChatRoomCreator_Expecter {
 	return &mockChatRoomCreator_Expecter{mock: &_m.Mock}
 }
 
-// CreateChatRoom provides a mock function with given fields: ctx, chatRoom
-func (_m *mockChatRoomCreator) CreateChatRoom(ctx context.Context, chatRoom *state.ChatRoom) error {
-	ret := _m.Called(ctx, chatRoom)
+// CreateChatRoom provides a mock function for the type mockChatRoomCreator
+func (_mock *mockChatRoomCreator) CreateChatRoom(ctx context.Context, chatRoom *state.ChatRoom) error {
+	ret := _mock.Called(ctx, chatRoom)
 
 	if len(ret) == 0 {
 		panic("no return value specified for CreateChatRoom")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.ChatRoom) error); ok {
-		r0 = rf(ctx, chatRoom)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.ChatRoom) error); ok {
+		r0 = returnFunc(ctx, chatRoom)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -54,31 +69,28 @@ func (_e *mockChatRoomCreator_Expecter) CreateChatRoom(ctx interface{}, chatRoom
 
 func (_c *mockChatRoomCreator_CreateChatRoom_Call) Run(run func(ctx context.Context, chatRoom *state.ChatRoom)) *mockChatRoomCreator_CreateChatRoom_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.ChatRoom))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.ChatRoom
+		if args[1] != nil {
+			arg1 = args[1].(*state.ChatRoom)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockChatRoomCreator_CreateChatRoom_Call) Return(_a0 error) *mockChatRoomCreator_CreateChatRoom_Call {
-	_c.Call.Return(_a0)
+func (_c *mockChatRoomCreator_CreateChatRoom_Call) Return(err error) *mockChatRoomCreator_CreateChatRoom_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockChatRoomCreator_CreateChatRoom_Call) RunAndReturn(run func(context.Context, *state.ChatRoom) error) *mockChatRoomCreator_CreateChatRoom_Call {
+func (_c *mockChatRoomCreator_CreateChatRoom_Call) RunAndReturn(run func(ctx context.Context, chatRoom *state.ChatRoom) error) *mockChatRoomCreator_CreateChatRoom_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockChatRoomCreator creates a new instance of mockChatRoomCreator. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockChatRoomCreator(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockChatRoomCreator {
-	mock := &mockChatRoomCreator{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 43 - 32
server/http/mock_chat_room_retriever_test.go

@@ -1,14 +1,30 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package http
 
 import (
-	context "context"
+	"context"
 
-	state "github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/state"
 	mock "github.com/stretchr/testify/mock"
 )
 
+// newMockChatRoomRetriever creates a new instance of mockChatRoomRetriever. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockChatRoomRetriever(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockChatRoomRetriever {
+	mock := &mockChatRoomRetriever{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockChatRoomRetriever is an autogenerated mock type for the ChatRoomRetriever type
 type mockChatRoomRetriever struct {
 	mock.Mock
@@ -22,9 +38,9 @@ func (_m *mockChatRoomRetriever) EXPECT() *mockChatRoomRetriever_Expecter {
 	return &mockChatRoomRetriever_Expecter{mock: &_m.Mock}
 }
 
-// AllChatRooms provides a mock function with given fields: ctx, exchange
-func (_m *mockChatRoomRetriever) AllChatRooms(ctx context.Context, exchange uint16) ([]state.ChatRoom, error) {
-	ret := _m.Called(ctx, exchange)
+// AllChatRooms provides a mock function for the type mockChatRoomRetriever
+func (_mock *mockChatRoomRetriever) AllChatRooms(ctx context.Context, exchange uint16) ([]state.ChatRoom, error) {
+	ret := _mock.Called(ctx, exchange)
 
 	if len(ret) == 0 {
 		panic("no return value specified for AllChatRooms")
@@ -32,23 +48,21 @@ func (_m *mockChatRoomRetriever) AllChatRooms(ctx context.Context, exchange uint
 
 	var r0 []state.ChatRoom
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, uint16) ([]state.ChatRoom, error)); ok {
-		return rf(ctx, exchange)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, uint16) ([]state.ChatRoom, error)); ok {
+		return returnFunc(ctx, exchange)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, uint16) []state.ChatRoom); ok {
-		r0 = rf(ctx, exchange)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, uint16) []state.ChatRoom); ok {
+		r0 = returnFunc(ctx, exchange)
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).([]state.ChatRoom)
 		}
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, uint16) error); ok {
-		r1 = rf(ctx, exchange)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, uint16) error); ok {
+		r1 = returnFunc(ctx, exchange)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -66,31 +80,28 @@ func (_e *mockChatRoomRetriever_Expecter) AllChatRooms(ctx interface{}, exchange
 
 func (_c *mockChatRoomRetriever_AllChatRooms_Call) Run(run func(ctx context.Context, exchange uint16)) *mockChatRoomRetriever_AllChatRooms_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(uint16))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 uint16
+		if args[1] != nil {
+			arg1 = args[1].(uint16)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockChatRoomRetriever_AllChatRooms_Call) Return(_a0 []state.ChatRoom, _a1 error) *mockChatRoomRetriever_AllChatRooms_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockChatRoomRetriever_AllChatRooms_Call) Return(chatRooms []state.ChatRoom, err error) *mockChatRoomRetriever_AllChatRooms_Call {
+	_c.Call.Return(chatRooms, err)
 	return _c
 }
 
-func (_c *mockChatRoomRetriever_AllChatRooms_Call) RunAndReturn(run func(context.Context, uint16) ([]state.ChatRoom, error)) *mockChatRoomRetriever_AllChatRooms_Call {
+func (_c *mockChatRoomRetriever_AllChatRooms_Call) RunAndReturn(run func(ctx context.Context, exchange uint16) ([]state.ChatRoom, error)) *mockChatRoomRetriever_AllChatRooms_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockChatRoomRetriever creates a new instance of mockChatRoomRetriever. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockChatRoomRetriever(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockChatRoomRetriever {
-	mock := &mockChatRoomRetriever{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 33 - 26
server/http/mock_chat_session_retriever_test.go

@@ -1,12 +1,28 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package http
 
 import (
-	state "github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/state"
 	mock "github.com/stretchr/testify/mock"
 )
 
+// newMockChatSessionRetriever creates a new instance of mockChatSessionRetriever. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockChatSessionRetriever(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockChatSessionRetriever {
+	mock := &mockChatSessionRetriever{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockChatSessionRetriever is an autogenerated mock type for the ChatSessionRetriever type
 type mockChatSessionRetriever struct {
 	mock.Mock
@@ -20,23 +36,22 @@ func (_m *mockChatSessionRetriever) EXPECT() *mockChatSessionRetriever_Expecter
 	return &mockChatSessionRetriever_Expecter{mock: &_m.Mock}
 }
 
-// AllSessions provides a mock function with given fields: cookie
-func (_m *mockChatSessionRetriever) AllSessions(cookie string) []*state.Session {
-	ret := _m.Called(cookie)
+// AllSessions provides a mock function for the type mockChatSessionRetriever
+func (_mock *mockChatSessionRetriever) AllSessions(cookie string) []*state.Session {
+	ret := _mock.Called(cookie)
 
 	if len(ret) == 0 {
 		panic("no return value specified for AllSessions")
 	}
 
 	var r0 []*state.Session
-	if rf, ok := ret.Get(0).(func(string) []*state.Session); ok {
-		r0 = rf(cookie)
+	if returnFunc, ok := ret.Get(0).(func(string) []*state.Session); ok {
+		r0 = returnFunc(cookie)
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).([]*state.Session)
 		}
 	}
-
 	return r0
 }
 
@@ -53,31 +68,23 @@ func (_e *mockChatSessionRetriever_Expecter) AllSessions(cookie interface{}) *mo
 
 func (_c *mockChatSessionRetriever_AllSessions_Call) Run(run func(cookie string)) *mockChatSessionRetriever_AllSessions_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(string))
+		var arg0 string
+		if args[0] != nil {
+			arg0 = args[0].(string)
+		}
+		run(
+			arg0,
+		)
 	})
 	return _c
 }
 
-func (_c *mockChatSessionRetriever_AllSessions_Call) Return(_a0 []*state.Session) *mockChatSessionRetriever_AllSessions_Call {
-	_c.Call.Return(_a0)
+func (_c *mockChatSessionRetriever_AllSessions_Call) Return(sessions []*state.Session) *mockChatSessionRetriever_AllSessions_Call {
+	_c.Call.Return(sessions)
 	return _c
 }
 
-func (_c *mockChatSessionRetriever_AllSessions_Call) RunAndReturn(run func(string) []*state.Session) *mockChatSessionRetriever_AllSessions_Call {
+func (_c *mockChatSessionRetriever_AllSessions_Call) RunAndReturn(run func(cookie string) []*state.Session) *mockChatSessionRetriever_AllSessions_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockChatSessionRetriever creates a new instance of mockChatSessionRetriever. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockChatSessionRetriever(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockChatSessionRetriever {
-	mock := &mockChatSessionRetriever{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 155 - 97
server/http/mock_directory_manager_test.go

@@ -1,14 +1,30 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package http
 
 import (
-	context "context"
+	"context"
 
-	state "github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/state"
 	mock "github.com/stretchr/testify/mock"
 )
 
+// newMockDirectoryManager creates a new instance of mockDirectoryManager. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockDirectoryManager(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockDirectoryManager {
+	mock := &mockDirectoryManager{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockDirectoryManager is an autogenerated mock type for the DirectoryManager type
 type mockDirectoryManager struct {
 	mock.Mock
@@ -22,9 +38,9 @@ func (_m *mockDirectoryManager) EXPECT() *mockDirectoryManager_Expecter {
 	return &mockDirectoryManager_Expecter{mock: &_m.Mock}
 }
 
-// Categories provides a mock function with given fields: ctx
-func (_m *mockDirectoryManager) Categories(ctx context.Context) ([]state.Category, error) {
-	ret := _m.Called(ctx)
+// Categories provides a mock function for the type mockDirectoryManager
+func (_mock *mockDirectoryManager) Categories(ctx context.Context) ([]state.Category, error) {
+	ret := _mock.Called(ctx)
 
 	if len(ret) == 0 {
 		panic("no return value specified for Categories")
@@ -32,23 +48,21 @@ func (_m *mockDirectoryManager) Categories(ctx context.Context) ([]state.Categor
 
 	var r0 []state.Category
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context) ([]state.Category, error)); ok {
-		return rf(ctx)
+	if returnFunc, ok := ret.Get(0).(func(context.Context) ([]state.Category, error)); ok {
+		return returnFunc(ctx)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context) []state.Category); ok {
-		r0 = rf(ctx)
+	if returnFunc, ok := ret.Get(0).(func(context.Context) []state.Category); ok {
+		r0 = returnFunc(ctx)
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).([]state.Category)
 		}
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context) error); ok {
-		r1 = rf(ctx)
+	if returnFunc, ok := ret.Get(1).(func(context.Context) error); ok {
+		r1 = returnFunc(ctx)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -65,24 +79,30 @@ func (_e *mockDirectoryManager_Expecter) Categories(ctx interface{}) *mockDirect
 
 func (_c *mockDirectoryManager_Categories_Call) Run(run func(ctx context.Context)) *mockDirectoryManager_Categories_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		run(
+			arg0,
+		)
 	})
 	return _c
 }
 
-func (_c *mockDirectoryManager_Categories_Call) Return(_a0 []state.Category, _a1 error) *mockDirectoryManager_Categories_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockDirectoryManager_Categories_Call) Return(categorys []state.Category, err error) *mockDirectoryManager_Categories_Call {
+	_c.Call.Return(categorys, err)
 	return _c
 }
 
-func (_c *mockDirectoryManager_Categories_Call) RunAndReturn(run func(context.Context) ([]state.Category, error)) *mockDirectoryManager_Categories_Call {
+func (_c *mockDirectoryManager_Categories_Call) RunAndReturn(run func(ctx context.Context) ([]state.Category, error)) *mockDirectoryManager_Categories_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// CreateCategory provides a mock function with given fields: ctx, name
-func (_m *mockDirectoryManager) CreateCategory(ctx context.Context, name string) (state.Category, error) {
-	ret := _m.Called(ctx, name)
+// CreateCategory provides a mock function for the type mockDirectoryManager
+func (_mock *mockDirectoryManager) CreateCategory(ctx context.Context, name string) (state.Category, error) {
+	ret := _mock.Called(ctx, name)
 
 	if len(ret) == 0 {
 		panic("no return value specified for CreateCategory")
@@ -90,21 +110,19 @@ func (_m *mockDirectoryManager) CreateCategory(ctx context.Context, name string)
 
 	var r0 state.Category
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, string) (state.Category, error)); ok {
-		return rf(ctx, name)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, string) (state.Category, error)); ok {
+		return returnFunc(ctx, name)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, string) state.Category); ok {
-		r0 = rf(ctx, name)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, string) state.Category); ok {
+		r0 = returnFunc(ctx, name)
 	} else {
 		r0 = ret.Get(0).(state.Category)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, string) error); ok {
-		r1 = rf(ctx, name)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, string) error); ok {
+		r1 = returnFunc(ctx, name)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -122,24 +140,35 @@ func (_e *mockDirectoryManager_Expecter) CreateCategory(ctx interface{}, name in
 
 func (_c *mockDirectoryManager_CreateCategory_Call) Run(run func(ctx context.Context, name string)) *mockDirectoryManager_CreateCategory_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(string))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 string
+		if args[1] != nil {
+			arg1 = args[1].(string)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockDirectoryManager_CreateCategory_Call) Return(_a0 state.Category, _a1 error) *mockDirectoryManager_CreateCategory_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockDirectoryManager_CreateCategory_Call) Return(category state.Category, err error) *mockDirectoryManager_CreateCategory_Call {
+	_c.Call.Return(category, err)
 	return _c
 }
 
-func (_c *mockDirectoryManager_CreateCategory_Call) RunAndReturn(run func(context.Context, string) (state.Category, error)) *mockDirectoryManager_CreateCategory_Call {
+func (_c *mockDirectoryManager_CreateCategory_Call) RunAndReturn(run func(ctx context.Context, name string) (state.Category, error)) *mockDirectoryManager_CreateCategory_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// CreateKeyword provides a mock function with given fields: ctx, name, categoryID
-func (_m *mockDirectoryManager) CreateKeyword(ctx context.Context, name string, categoryID uint8) (state.Keyword, error) {
-	ret := _m.Called(ctx, name, categoryID)
+// CreateKeyword provides a mock function for the type mockDirectoryManager
+func (_mock *mockDirectoryManager) CreateKeyword(ctx context.Context, name string, categoryID uint8) (state.Keyword, error) {
+	ret := _mock.Called(ctx, name, categoryID)
 
 	if len(ret) == 0 {
 		panic("no return value specified for CreateKeyword")
@@ -147,21 +176,19 @@ func (_m *mockDirectoryManager) CreateKeyword(ctx context.Context, name string,
 
 	var r0 state.Keyword
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, string, uint8) (state.Keyword, error)); ok {
-		return rf(ctx, name, categoryID)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, string, uint8) (state.Keyword, error)); ok {
+		return returnFunc(ctx, name, categoryID)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, string, uint8) state.Keyword); ok {
-		r0 = rf(ctx, name, categoryID)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, string, uint8) state.Keyword); ok {
+		r0 = returnFunc(ctx, name, categoryID)
 	} else {
 		r0 = ret.Get(0).(state.Keyword)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, string, uint8) error); ok {
-		r1 = rf(ctx, name, categoryID)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, string, uint8) error); ok {
+		r1 = returnFunc(ctx, name, categoryID)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -180,36 +207,51 @@ func (_e *mockDirectoryManager_Expecter) CreateKeyword(ctx interface{}, name int
 
 func (_c *mockDirectoryManager_CreateKeyword_Call) Run(run func(ctx context.Context, name string, categoryID uint8)) *mockDirectoryManager_CreateKeyword_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(string), args[2].(uint8))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 string
+		if args[1] != nil {
+			arg1 = args[1].(string)
+		}
+		var arg2 uint8
+		if args[2] != nil {
+			arg2 = args[2].(uint8)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockDirectoryManager_CreateKeyword_Call) Return(_a0 state.Keyword, _a1 error) *mockDirectoryManager_CreateKeyword_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockDirectoryManager_CreateKeyword_Call) Return(keyword state.Keyword, err error) *mockDirectoryManager_CreateKeyword_Call {
+	_c.Call.Return(keyword, err)
 	return _c
 }
 
-func (_c *mockDirectoryManager_CreateKeyword_Call) RunAndReturn(run func(context.Context, string, uint8) (state.Keyword, error)) *mockDirectoryManager_CreateKeyword_Call {
+func (_c *mockDirectoryManager_CreateKeyword_Call) RunAndReturn(run func(ctx context.Context, name string, categoryID uint8) (state.Keyword, error)) *mockDirectoryManager_CreateKeyword_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// DeleteCategory provides a mock function with given fields: ctx, categoryID
-func (_m *mockDirectoryManager) DeleteCategory(ctx context.Context, categoryID uint8) error {
-	ret := _m.Called(ctx, categoryID)
+// DeleteCategory provides a mock function for the type mockDirectoryManager
+func (_mock *mockDirectoryManager) DeleteCategory(ctx context.Context, categoryID uint8) error {
+	ret := _mock.Called(ctx, categoryID)
 
 	if len(ret) == 0 {
 		panic("no return value specified for DeleteCategory")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, uint8) error); ok {
-		r0 = rf(ctx, categoryID)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, uint8) error); ok {
+		r0 = returnFunc(ctx, categoryID)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -227,36 +269,46 @@ func (_e *mockDirectoryManager_Expecter) DeleteCategory(ctx interface{}, categor
 
 func (_c *mockDirectoryManager_DeleteCategory_Call) Run(run func(ctx context.Context, categoryID uint8)) *mockDirectoryManager_DeleteCategory_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(uint8))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 uint8
+		if args[1] != nil {
+			arg1 = args[1].(uint8)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockDirectoryManager_DeleteCategory_Call) Return(_a0 error) *mockDirectoryManager_DeleteCategory_Call {
-	_c.Call.Return(_a0)
+func (_c *mockDirectoryManager_DeleteCategory_Call) Return(err error) *mockDirectoryManager_DeleteCategory_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockDirectoryManager_DeleteCategory_Call) RunAndReturn(run func(context.Context, uint8) error) *mockDirectoryManager_DeleteCategory_Call {
+func (_c *mockDirectoryManager_DeleteCategory_Call) RunAndReturn(run func(ctx context.Context, categoryID uint8) error) *mockDirectoryManager_DeleteCategory_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// DeleteKeyword provides a mock function with given fields: ctx, id
-func (_m *mockDirectoryManager) DeleteKeyword(ctx context.Context, id uint8) error {
-	ret := _m.Called(ctx, id)
+// DeleteKeyword provides a mock function for the type mockDirectoryManager
+func (_mock *mockDirectoryManager) DeleteKeyword(ctx context.Context, id uint8) error {
+	ret := _mock.Called(ctx, id)
 
 	if len(ret) == 0 {
 		panic("no return value specified for DeleteKeyword")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, uint8) error); ok {
-		r0 = rf(ctx, id)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, uint8) error); ok {
+		r0 = returnFunc(ctx, id)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -274,24 +326,35 @@ func (_e *mockDirectoryManager_Expecter) DeleteKeyword(ctx interface{}, id inter
 
 func (_c *mockDirectoryManager_DeleteKeyword_Call) Run(run func(ctx context.Context, id uint8)) *mockDirectoryManager_DeleteKeyword_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(uint8))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 uint8
+		if args[1] != nil {
+			arg1 = args[1].(uint8)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockDirectoryManager_DeleteKeyword_Call) Return(_a0 error) *mockDirectoryManager_DeleteKeyword_Call {
-	_c.Call.Return(_a0)
+func (_c *mockDirectoryManager_DeleteKeyword_Call) Return(err error) *mockDirectoryManager_DeleteKeyword_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockDirectoryManager_DeleteKeyword_Call) RunAndReturn(run func(context.Context, uint8) error) *mockDirectoryManager_DeleteKeyword_Call {
+func (_c *mockDirectoryManager_DeleteKeyword_Call) RunAndReturn(run func(ctx context.Context, id uint8) error) *mockDirectoryManager_DeleteKeyword_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// KeywordsByCategory provides a mock function with given fields: ctx, categoryID
-func (_m *mockDirectoryManager) KeywordsByCategory(ctx context.Context, categoryID uint8) ([]state.Keyword, error) {
-	ret := _m.Called(ctx, categoryID)
+// KeywordsByCategory provides a mock function for the type mockDirectoryManager
+func (_mock *mockDirectoryManager) KeywordsByCategory(ctx context.Context, categoryID uint8) ([]state.Keyword, error) {
+	ret := _mock.Called(ctx, categoryID)
 
 	if len(ret) == 0 {
 		panic("no return value specified for KeywordsByCategory")
@@ -299,23 +362,21 @@ func (_m *mockDirectoryManager) KeywordsByCategory(ctx context.Context, category
 
 	var r0 []state.Keyword
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, uint8) ([]state.Keyword, error)); ok {
-		return rf(ctx, categoryID)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, uint8) ([]state.Keyword, error)); ok {
+		return returnFunc(ctx, categoryID)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, uint8) []state.Keyword); ok {
-		r0 = rf(ctx, categoryID)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, uint8) []state.Keyword); ok {
+		r0 = returnFunc(ctx, categoryID)
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).([]state.Keyword)
 		}
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, uint8) error); ok {
-		r1 = rf(ctx, categoryID)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, uint8) error); ok {
+		r1 = returnFunc(ctx, categoryID)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -333,31 +394,28 @@ func (_e *mockDirectoryManager_Expecter) KeywordsByCategory(ctx interface{}, cat
 
 func (_c *mockDirectoryManager_KeywordsByCategory_Call) Run(run func(ctx context.Context, categoryID uint8)) *mockDirectoryManager_KeywordsByCategory_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(uint8))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 uint8
+		if args[1] != nil {
+			arg1 = args[1].(uint8)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockDirectoryManager_KeywordsByCategory_Call) Return(_a0 []state.Keyword, _a1 error) *mockDirectoryManager_KeywordsByCategory_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockDirectoryManager_KeywordsByCategory_Call) Return(keywords []state.Keyword, err error) *mockDirectoryManager_KeywordsByCategory_Call {
+	_c.Call.Return(keywords, err)
 	return _c
 }
 
-func (_c *mockDirectoryManager_KeywordsByCategory_Call) RunAndReturn(run func(context.Context, uint8) ([]state.Keyword, error)) *mockDirectoryManager_KeywordsByCategory_Call {
+func (_c *mockDirectoryManager_KeywordsByCategory_Call) RunAndReturn(run func(ctx context.Context, categoryID uint8) ([]state.Keyword, error)) *mockDirectoryManager_KeywordsByCategory_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockDirectoryManager creates a new instance of mockDirectoryManager. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockDirectoryManager(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockDirectoryManager {
-	mock := &mockDirectoryManager{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 44 - 34
server/http/mock_feedbag_retriever_test.go

@@ -1,16 +1,31 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package http
 
 import (
-	context "context"
+	"context"
 
-	state "github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/wire"
 	mock "github.com/stretchr/testify/mock"
-
-	wire "github.com/mk6i/retro-aim-server/wire"
 )
 
+// newMockFeedBagRetriever creates a new instance of mockFeedBagRetriever. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockFeedBagRetriever(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockFeedBagRetriever {
+	mock := &mockFeedBagRetriever{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockFeedBagRetriever is an autogenerated mock type for the FeedBagRetriever type
 type mockFeedBagRetriever struct {
 	mock.Mock
@@ -24,9 +39,9 @@ func (_m *mockFeedBagRetriever) EXPECT() *mockFeedBagRetriever_Expecter {
 	return &mockFeedBagRetriever_Expecter{mock: &_m.Mock}
 }
 
-// BuddyIconMetadata provides a mock function with given fields: ctx, screenName
-func (_m *mockFeedBagRetriever) BuddyIconMetadata(ctx context.Context, screenName state.IdentScreenName) (*wire.BARTID, error) {
-	ret := _m.Called(ctx, screenName)
+// BuddyIconMetadata provides a mock function for the type mockFeedBagRetriever
+func (_mock *mockFeedBagRetriever) BuddyIconMetadata(ctx context.Context, screenName state.IdentScreenName) (*wire.BARTID, error) {
+	ret := _mock.Called(ctx, screenName)
 
 	if len(ret) == 0 {
 		panic("no return value specified for BuddyIconMetadata")
@@ -34,23 +49,21 @@ func (_m *mockFeedBagRetriever) BuddyIconMetadata(ctx context.Context, screenNam
 
 	var r0 *wire.BARTID
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) (*wire.BARTID, error)); ok {
-		return rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) (*wire.BARTID, error)); ok {
+		return returnFunc(ctx, screenName)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) *wire.BARTID); ok {
-		r0 = rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) *wire.BARTID); ok {
+		r0 = returnFunc(ctx, screenName)
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).(*wire.BARTID)
 		}
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, state.IdentScreenName) error); ok {
-		r1 = rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, state.IdentScreenName) error); ok {
+		r1 = returnFunc(ctx, screenName)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -68,31 +81,28 @@ func (_e *mockFeedBagRetriever_Expecter) BuddyIconMetadata(ctx interface{}, scre
 
 func (_c *mockFeedBagRetriever_BuddyIconMetadata_Call) Run(run func(ctx context.Context, screenName state.IdentScreenName)) *mockFeedBagRetriever_BuddyIconMetadata_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockFeedBagRetriever_BuddyIconMetadata_Call) Return(_a0 *wire.BARTID, _a1 error) *mockFeedBagRetriever_BuddyIconMetadata_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockFeedBagRetriever_BuddyIconMetadata_Call) Return(bARTID *wire.BARTID, err error) *mockFeedBagRetriever_BuddyIconMetadata_Call {
+	_c.Call.Return(bARTID, err)
 	return _c
 }
 
-func (_c *mockFeedBagRetriever_BuddyIconMetadata_Call) RunAndReturn(run func(context.Context, state.IdentScreenName) (*wire.BARTID, error)) *mockFeedBagRetriever_BuddyIconMetadata_Call {
+func (_c *mockFeedBagRetriever_BuddyIconMetadata_Call) RunAndReturn(run func(ctx context.Context, screenName state.IdentScreenName) (*wire.BARTID, error)) *mockFeedBagRetriever_BuddyIconMetadata_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockFeedBagRetriever creates a new instance of mockFeedBagRetriever. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockFeedBagRetriever(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockFeedBagRetriever {
-	mock := &mockFeedBagRetriever{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 42 - 24
server/http/mock_message_relayer_test.go

@@ -1,16 +1,31 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package http
 
 import (
-	context "context"
+	"context"
 
-	state "github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/wire"
 	mock "github.com/stretchr/testify/mock"
-
-	wire "github.com/mk6i/retro-aim-server/wire"
 )
 
+// newMockMessageRelayer creates a new instance of mockMessageRelayer. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockMessageRelayer(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockMessageRelayer {
+	mock := &mockMessageRelayer{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockMessageRelayer is an autogenerated mock type for the MessageRelayer type
 type mockMessageRelayer struct {
 	mock.Mock
@@ -24,9 +39,10 @@ func (_m *mockMessageRelayer) EXPECT() *mockMessageRelayer_Expecter {
 	return &mockMessageRelayer_Expecter{mock: &_m.Mock}
 }
 
-// RelayToScreenName provides a mock function with given fields: ctx, screenName, msg
-func (_m *mockMessageRelayer) RelayToScreenName(ctx context.Context, screenName state.IdentScreenName, msg wire.SNACMessage) {
-	_m.Called(ctx, screenName, msg)
+// RelayToScreenName provides a mock function for the type mockMessageRelayer
+func (_mock *mockMessageRelayer) RelayToScreenName(ctx context.Context, screenName state.IdentScreenName, msg wire.SNACMessage) {
+	_mock.Called(ctx, screenName, msg)
+	return
 }
 
 // mockMessageRelayer_RelayToScreenName_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'RelayToScreenName'
@@ -44,7 +60,23 @@ func (_e *mockMessageRelayer_Expecter) RelayToScreenName(ctx interface{}, screen
 
 func (_c *mockMessageRelayer_RelayToScreenName_Call) Run(run func(ctx context.Context, screenName state.IdentScreenName, msg wire.SNACMessage)) *mockMessageRelayer_RelayToScreenName_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName), args[2].(wire.SNACMessage))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		var arg2 wire.SNACMessage
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNACMessage)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
@@ -54,21 +86,7 @@ func (_c *mockMessageRelayer_RelayToScreenName_Call) Return() *mockMessageRelaye
 	return _c
 }
 
-func (_c *mockMessageRelayer_RelayToScreenName_Call) RunAndReturn(run func(context.Context, state.IdentScreenName, wire.SNACMessage)) *mockMessageRelayer_RelayToScreenName_Call {
+func (_c *mockMessageRelayer_RelayToScreenName_Call) RunAndReturn(run func(ctx context.Context, screenName state.IdentScreenName, msg wire.SNACMessage)) *mockMessageRelayer_RelayToScreenName_Call {
 	_c.Run(run)
 	return _c
 }
-
-// newMockMessageRelayer creates a new instance of mockMessageRelayer. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockMessageRelayer(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockMessageRelayer {
-	mock := &mockMessageRelayer{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 43 - 32
server/http/mock_profile_retriever_test.go

@@ -1,14 +1,30 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package http
 
 import (
-	context "context"
+	"context"
 
-	state "github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/state"
 	mock "github.com/stretchr/testify/mock"
 )
 
+// newMockProfileRetriever creates a new instance of mockProfileRetriever. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockProfileRetriever(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockProfileRetriever {
+	mock := &mockProfileRetriever{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockProfileRetriever is an autogenerated mock type for the ProfileRetriever type
 type mockProfileRetriever struct {
 	mock.Mock
@@ -22,9 +38,9 @@ func (_m *mockProfileRetriever) EXPECT() *mockProfileRetriever_Expecter {
 	return &mockProfileRetriever_Expecter{mock: &_m.Mock}
 }
 
-// Profile provides a mock function with given fields: ctx, screenName
-func (_m *mockProfileRetriever) Profile(ctx context.Context, screenName state.IdentScreenName) (state.UserProfile, error) {
-	ret := _m.Called(ctx, screenName)
+// Profile provides a mock function for the type mockProfileRetriever
+func (_mock *mockProfileRetriever) Profile(ctx context.Context, screenName state.IdentScreenName) (state.UserProfile, error) {
+	ret := _mock.Called(ctx, screenName)
 
 	if len(ret) == 0 {
 		panic("no return value specified for Profile")
@@ -32,21 +48,19 @@ func (_m *mockProfileRetriever) Profile(ctx context.Context, screenName state.Id
 
 	var r0 state.UserProfile
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) (state.UserProfile, error)); ok {
-		return rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) (state.UserProfile, error)); ok {
+		return returnFunc(ctx, screenName)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) state.UserProfile); ok {
-		r0 = rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) state.UserProfile); ok {
+		r0 = returnFunc(ctx, screenName)
 	} else {
 		r0 = ret.Get(0).(state.UserProfile)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, state.IdentScreenName) error); ok {
-		r1 = rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, state.IdentScreenName) error); ok {
+		r1 = returnFunc(ctx, screenName)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -64,31 +78,28 @@ func (_e *mockProfileRetriever_Expecter) Profile(ctx interface{}, screenName int
 
 func (_c *mockProfileRetriever_Profile_Call) Run(run func(ctx context.Context, screenName state.IdentScreenName)) *mockProfileRetriever_Profile_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockProfileRetriever_Profile_Call) Return(_a0 state.UserProfile, _a1 error) *mockProfileRetriever_Profile_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockProfileRetriever_Profile_Call) Return(userProfile state.UserProfile, err error) *mockProfileRetriever_Profile_Call {
+	_c.Call.Return(userProfile, err)
 	return _c
 }
 
-func (_c *mockProfileRetriever_Profile_Call) RunAndReturn(run func(context.Context, state.IdentScreenName) (state.UserProfile, error)) *mockProfileRetriever_Profile_Call {
+func (_c *mockProfileRetriever_Profile_Call) RunAndReturn(run func(ctx context.Context, screenName state.IdentScreenName) (state.UserProfile, error)) *mockProfileRetriever_Profile_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockProfileRetriever creates a new instance of mockProfileRetriever. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockProfileRetriever(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockProfileRetriever {
-	mock := &mockProfileRetriever{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 40 - 34
server/http/mock_session_retriever_test.go

@@ -1,12 +1,28 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package http
 
 import (
-	state "github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/state"
 	mock "github.com/stretchr/testify/mock"
 )
 
+// newMockSessionRetriever creates a new instance of mockSessionRetriever. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockSessionRetriever(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockSessionRetriever {
+	mock := &mockSessionRetriever{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockSessionRetriever is an autogenerated mock type for the SessionRetriever type
 type mockSessionRetriever struct {
 	mock.Mock
@@ -20,23 +36,22 @@ func (_m *mockSessionRetriever) EXPECT() *mockSessionRetriever_Expecter {
 	return &mockSessionRetriever_Expecter{mock: &_m.Mock}
 }
 
-// AllSessions provides a mock function with no fields
-func (_m *mockSessionRetriever) AllSessions() []*state.Session {
-	ret := _m.Called()
+// AllSessions provides a mock function for the type mockSessionRetriever
+func (_mock *mockSessionRetriever) AllSessions() []*state.Session {
+	ret := _mock.Called()
 
 	if len(ret) == 0 {
 		panic("no return value specified for AllSessions")
 	}
 
 	var r0 []*state.Session
-	if rf, ok := ret.Get(0).(func() []*state.Session); ok {
-		r0 = rf()
+	if returnFunc, ok := ret.Get(0).(func() []*state.Session); ok {
+		r0 = returnFunc()
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).([]*state.Session)
 		}
 	}
-
 	return r0
 }
 
@@ -57,8 +72,8 @@ func (_c *mockSessionRetriever_AllSessions_Call) Run(run func()) *mockSessionRet
 	return _c
 }
 
-func (_c *mockSessionRetriever_AllSessions_Call) Return(_a0 []*state.Session) *mockSessionRetriever_AllSessions_Call {
-	_c.Call.Return(_a0)
+func (_c *mockSessionRetriever_AllSessions_Call) Return(sessions []*state.Session) *mockSessionRetriever_AllSessions_Call {
+	_c.Call.Return(sessions)
 	return _c
 }
 
@@ -67,23 +82,22 @@ func (_c *mockSessionRetriever_AllSessions_Call) RunAndReturn(run func() []*stat
 	return _c
 }
 
-// RetrieveSession provides a mock function with given fields: screenName
-func (_m *mockSessionRetriever) RetrieveSession(screenName state.IdentScreenName) *state.Session {
-	ret := _m.Called(screenName)
+// RetrieveSession provides a mock function for the type mockSessionRetriever
+func (_mock *mockSessionRetriever) RetrieveSession(screenName state.IdentScreenName) *state.Session {
+	ret := _mock.Called(screenName)
 
 	if len(ret) == 0 {
 		panic("no return value specified for RetrieveSession")
 	}
 
 	var r0 *state.Session
-	if rf, ok := ret.Get(0).(func(state.IdentScreenName) *state.Session); ok {
-		r0 = rf(screenName)
+	if returnFunc, ok := ret.Get(0).(func(state.IdentScreenName) *state.Session); ok {
+		r0 = returnFunc(screenName)
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).(*state.Session)
 		}
 	}
-
 	return r0
 }
 
@@ -100,31 +114,23 @@ func (_e *mockSessionRetriever_Expecter) RetrieveSession(screenName interface{})
 
 func (_c *mockSessionRetriever_RetrieveSession_Call) Run(run func(screenName state.IdentScreenName)) *mockSessionRetriever_RetrieveSession_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(state.IdentScreenName))
+		var arg0 state.IdentScreenName
+		if args[0] != nil {
+			arg0 = args[0].(state.IdentScreenName)
+		}
+		run(
+			arg0,
+		)
 	})
 	return _c
 }
 
-func (_c *mockSessionRetriever_RetrieveSession_Call) Return(_a0 *state.Session) *mockSessionRetriever_RetrieveSession_Call {
-	_c.Call.Return(_a0)
+func (_c *mockSessionRetriever_RetrieveSession_Call) Return(session *state.Session) *mockSessionRetriever_RetrieveSession_Call {
+	_c.Call.Return(session)
 	return _c
 }
 
-func (_c *mockSessionRetriever_RetrieveSession_Call) RunAndReturn(run func(state.IdentScreenName) *state.Session) *mockSessionRetriever_RetrieveSession_Call {
+func (_c *mockSessionRetriever_RetrieveSession_Call) RunAndReturn(run func(screenName state.IdentScreenName) *state.Session) *mockSessionRetriever_RetrieveSession_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockSessionRetriever creates a new instance of mockSessionRetriever. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockSessionRetriever(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockSessionRetriever {
-	mock := &mockSessionRetriever{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 127 - 77
server/http/mock_user_manager_test.go

@@ -1,14 +1,30 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package http
 
 import (
-	context "context"
+	"context"
 
-	state "github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/state"
 	mock "github.com/stretchr/testify/mock"
 )
 
+// newMockUserManager creates a new instance of mockUserManager. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockUserManager(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockUserManager {
+	mock := &mockUserManager{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockUserManager is an autogenerated mock type for the UserManager type
 type mockUserManager struct {
 	mock.Mock
@@ -22,9 +38,9 @@ func (_m *mockUserManager) EXPECT() *mockUserManager_Expecter {
 	return &mockUserManager_Expecter{mock: &_m.Mock}
 }
 
-// AllUsers provides a mock function with given fields: ctx
-func (_m *mockUserManager) AllUsers(ctx context.Context) ([]state.User, error) {
-	ret := _m.Called(ctx)
+// AllUsers provides a mock function for the type mockUserManager
+func (_mock *mockUserManager) AllUsers(ctx context.Context) ([]state.User, error) {
+	ret := _mock.Called(ctx)
 
 	if len(ret) == 0 {
 		panic("no return value specified for AllUsers")
@@ -32,23 +48,21 @@ func (_m *mockUserManager) AllUsers(ctx context.Context) ([]state.User, error) {
 
 	var r0 []state.User
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context) ([]state.User, error)); ok {
-		return rf(ctx)
+	if returnFunc, ok := ret.Get(0).(func(context.Context) ([]state.User, error)); ok {
+		return returnFunc(ctx)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context) []state.User); ok {
-		r0 = rf(ctx)
+	if returnFunc, ok := ret.Get(0).(func(context.Context) []state.User); ok {
+		r0 = returnFunc(ctx)
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).([]state.User)
 		}
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context) error); ok {
-		r1 = rf(ctx)
+	if returnFunc, ok := ret.Get(1).(func(context.Context) error); ok {
+		r1 = returnFunc(ctx)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -65,36 +79,41 @@ func (_e *mockUserManager_Expecter) AllUsers(ctx interface{}) *mockUserManager_A
 
 func (_c *mockUserManager_AllUsers_Call) Run(run func(ctx context.Context)) *mockUserManager_AllUsers_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		run(
+			arg0,
+		)
 	})
 	return _c
 }
 
-func (_c *mockUserManager_AllUsers_Call) Return(_a0 []state.User, _a1 error) *mockUserManager_AllUsers_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockUserManager_AllUsers_Call) Return(users []state.User, err error) *mockUserManager_AllUsers_Call {
+	_c.Call.Return(users, err)
 	return _c
 }
 
-func (_c *mockUserManager_AllUsers_Call) RunAndReturn(run func(context.Context) ([]state.User, error)) *mockUserManager_AllUsers_Call {
+func (_c *mockUserManager_AllUsers_Call) RunAndReturn(run func(ctx context.Context) ([]state.User, error)) *mockUserManager_AllUsers_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// DeleteUser provides a mock function with given fields: ctx, screenName
-func (_m *mockUserManager) DeleteUser(ctx context.Context, screenName state.IdentScreenName) error {
-	ret := _m.Called(ctx, screenName)
+// DeleteUser provides a mock function for the type mockUserManager
+func (_mock *mockUserManager) DeleteUser(ctx context.Context, screenName state.IdentScreenName) error {
+	ret := _mock.Called(ctx, screenName)
 
 	if len(ret) == 0 {
 		panic("no return value specified for DeleteUser")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) error); ok {
-		r0 = rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) error); ok {
+		r0 = returnFunc(ctx, screenName)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -112,36 +131,46 @@ func (_e *mockUserManager_Expecter) DeleteUser(ctx interface{}, screenName inter
 
 func (_c *mockUserManager_DeleteUser_Call) Run(run func(ctx context.Context, screenName state.IdentScreenName)) *mockUserManager_DeleteUser_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockUserManager_DeleteUser_Call) Return(_a0 error) *mockUserManager_DeleteUser_Call {
-	_c.Call.Return(_a0)
+func (_c *mockUserManager_DeleteUser_Call) Return(err error) *mockUserManager_DeleteUser_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockUserManager_DeleteUser_Call) RunAndReturn(run func(context.Context, state.IdentScreenName) error) *mockUserManager_DeleteUser_Call {
+func (_c *mockUserManager_DeleteUser_Call) RunAndReturn(run func(ctx context.Context, screenName state.IdentScreenName) error) *mockUserManager_DeleteUser_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// InsertUser provides a mock function with given fields: ctx, u
-func (_m *mockUserManager) InsertUser(ctx context.Context, u state.User) error {
-	ret := _m.Called(ctx, u)
+// InsertUser provides a mock function for the type mockUserManager
+func (_mock *mockUserManager) InsertUser(ctx context.Context, u state.User) error {
+	ret := _mock.Called(ctx, u)
 
 	if len(ret) == 0 {
 		panic("no return value specified for InsertUser")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.User) error); ok {
-		r0 = rf(ctx, u)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.User) error); ok {
+		r0 = returnFunc(ctx, u)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -159,36 +188,46 @@ func (_e *mockUserManager_Expecter) InsertUser(ctx interface{}, u interface{}) *
 
 func (_c *mockUserManager_InsertUser_Call) Run(run func(ctx context.Context, u state.User)) *mockUserManager_InsertUser_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.User))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.User
+		if args[1] != nil {
+			arg1 = args[1].(state.User)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockUserManager_InsertUser_Call) Return(_a0 error) *mockUserManager_InsertUser_Call {
-	_c.Call.Return(_a0)
+func (_c *mockUserManager_InsertUser_Call) Return(err error) *mockUserManager_InsertUser_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockUserManager_InsertUser_Call) RunAndReturn(run func(context.Context, state.User) error) *mockUserManager_InsertUser_Call {
+func (_c *mockUserManager_InsertUser_Call) RunAndReturn(run func(ctx context.Context, u state.User) error) *mockUserManager_InsertUser_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// SetUserPassword provides a mock function with given fields: ctx, screenName, newPassword
-func (_m *mockUserManager) SetUserPassword(ctx context.Context, screenName state.IdentScreenName, newPassword string) error {
-	ret := _m.Called(ctx, screenName, newPassword)
+// SetUserPassword provides a mock function for the type mockUserManager
+func (_mock *mockUserManager) SetUserPassword(ctx context.Context, screenName state.IdentScreenName, newPassword string) error {
+	ret := _mock.Called(ctx, screenName, newPassword)
 
 	if len(ret) == 0 {
 		panic("no return value specified for SetUserPassword")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, string) error); ok {
-		r0 = rf(ctx, screenName, newPassword)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, string) error); ok {
+		r0 = returnFunc(ctx, screenName, newPassword)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -207,24 +246,40 @@ func (_e *mockUserManager_Expecter) SetUserPassword(ctx interface{}, screenName
 
 func (_c *mockUserManager_SetUserPassword_Call) Run(run func(ctx context.Context, screenName state.IdentScreenName, newPassword string)) *mockUserManager_SetUserPassword_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName), args[2].(string))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		var arg2 string
+		if args[2] != nil {
+			arg2 = args[2].(string)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockUserManager_SetUserPassword_Call) Return(_a0 error) *mockUserManager_SetUserPassword_Call {
-	_c.Call.Return(_a0)
+func (_c *mockUserManager_SetUserPassword_Call) Return(err error) *mockUserManager_SetUserPassword_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockUserManager_SetUserPassword_Call) RunAndReturn(run func(context.Context, state.IdentScreenName, string) error) *mockUserManager_SetUserPassword_Call {
+func (_c *mockUserManager_SetUserPassword_Call) RunAndReturn(run func(ctx context.Context, screenName state.IdentScreenName, newPassword string) error) *mockUserManager_SetUserPassword_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// User provides a mock function with given fields: ctx, screenName
-func (_m *mockUserManager) User(ctx context.Context, screenName state.IdentScreenName) (*state.User, error) {
-	ret := _m.Called(ctx, screenName)
+// User provides a mock function for the type mockUserManager
+func (_mock *mockUserManager) User(ctx context.Context, screenName state.IdentScreenName) (*state.User, error) {
+	ret := _mock.Called(ctx, screenName)
 
 	if len(ret) == 0 {
 		panic("no return value specified for User")
@@ -232,23 +287,21 @@ func (_m *mockUserManager) User(ctx context.Context, screenName state.IdentScree
 
 	var r0 *state.User
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) (*state.User, error)); ok {
-		return rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) (*state.User, error)); ok {
+		return returnFunc(ctx, screenName)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) *state.User); ok {
-		r0 = rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) *state.User); ok {
+		r0 = returnFunc(ctx, screenName)
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).(*state.User)
 		}
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, state.IdentScreenName) error); ok {
-		r1 = rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, state.IdentScreenName) error); ok {
+		r1 = returnFunc(ctx, screenName)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -266,31 +319,28 @@ func (_e *mockUserManager_Expecter) User(ctx interface{}, screenName interface{}
 
 func (_c *mockUserManager_User_Call) Run(run func(ctx context.Context, screenName state.IdentScreenName)) *mockUserManager_User_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockUserManager_User_Call) Return(_a0 *state.User, _a1 error) *mockUserManager_User_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockUserManager_User_Call) Return(user *state.User, err error) *mockUserManager_User_Call {
+	_c.Call.Return(user, err)
 	return _c
 }
 
-func (_c *mockUserManager_User_Call) RunAndReturn(run func(context.Context, state.IdentScreenName) (*state.User, error)) *mockUserManager_User_Call {
+func (_c *mockUserManager_User_Call) RunAndReturn(run func(ctx context.Context, screenName state.IdentScreenName) (*state.User, error)) *mockUserManager_User_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockUserManager creates a new instance of mockUserManager. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockUserManager(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockUserManager {
-	mock := &mockUserManager{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 56 - 36
server/kerberos/mock_auth_test.go

@@ -1,16 +1,31 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package kerberos
 
 import (
-	context "context"
+	"context"
 
-	state "github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/wire"
 	mock "github.com/stretchr/testify/mock"
-
-	wire "github.com/mk6i/retro-aim-server/wire"
 )
 
+// newMockAuthService creates a new instance of mockAuthService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockAuthService(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockAuthService {
+	mock := &mockAuthService{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockAuthService is an autogenerated mock type for the AuthService type
 type mockAuthService struct {
 	mock.Mock
@@ -24,9 +39,9 @@ func (_m *mockAuthService) EXPECT() *mockAuthService_Expecter {
 	return &mockAuthService_Expecter{mock: &_m.Mock}
 }
 
-// KerberosLogin provides a mock function with given fields: ctx, inBody, newUserFn, advertisedHost
-func (_m *mockAuthService) KerberosLogin(ctx context.Context, inBody wire.SNAC_0x050C_0x0002_KerberosLoginRequest, newUserFn func(state.DisplayScreenName) (state.User, error), advertisedHost string) (wire.SNACMessage, error) {
-	ret := _m.Called(ctx, inBody, newUserFn, advertisedHost)
+// KerberosLogin provides a mock function for the type mockAuthService
+func (_mock *mockAuthService) KerberosLogin(ctx context.Context, inBody wire.SNAC_0x050C_0x0002_KerberosLoginRequest, newUserFn func(screenName state.DisplayScreenName) (state.User, error), advertisedHost string) (wire.SNACMessage, error) {
+	ret := _mock.Called(ctx, inBody, newUserFn, advertisedHost)
 
 	if len(ret) == 0 {
 		panic("no return value specified for KerberosLogin")
@@ -34,21 +49,19 @@ func (_m *mockAuthService) KerberosLogin(ctx context.Context, inBody wire.SNAC_0
 
 	var r0 wire.SNACMessage
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, wire.SNAC_0x050C_0x0002_KerberosLoginRequest, func(state.DisplayScreenName) (state.User, error), string) (wire.SNACMessage, error)); ok {
-		return rf(ctx, inBody, newUserFn, advertisedHost)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, wire.SNAC_0x050C_0x0002_KerberosLoginRequest, func(screenName state.DisplayScreenName) (state.User, error), string) (wire.SNACMessage, error)); ok {
+		return returnFunc(ctx, inBody, newUserFn, advertisedHost)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, wire.SNAC_0x050C_0x0002_KerberosLoginRequest, func(state.DisplayScreenName) (state.User, error), string) wire.SNACMessage); ok {
-		r0 = rf(ctx, inBody, newUserFn, advertisedHost)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, wire.SNAC_0x050C_0x0002_KerberosLoginRequest, func(screenName state.DisplayScreenName) (state.User, error), string) wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, inBody, newUserFn, advertisedHost)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, wire.SNAC_0x050C_0x0002_KerberosLoginRequest, func(state.DisplayScreenName) (state.User, error), string) error); ok {
-		r1 = rf(ctx, inBody, newUserFn, advertisedHost)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, wire.SNAC_0x050C_0x0002_KerberosLoginRequest, func(screenName state.DisplayScreenName) (state.User, error), string) error); ok {
+		r1 = returnFunc(ctx, inBody, newUserFn, advertisedHost)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -60,39 +73,46 @@ type mockAuthService_KerberosLogin_Call struct {
 // KerberosLogin is a helper method to define mock.On call
 //   - ctx context.Context
 //   - inBody wire.SNAC_0x050C_0x0002_KerberosLoginRequest
-//   - newUserFn func(state.DisplayScreenName)(state.User , error)
+//   - newUserFn func(screenName state.DisplayScreenName) (state.User, error)
 //   - advertisedHost string
 func (_e *mockAuthService_Expecter) KerberosLogin(ctx interface{}, inBody interface{}, newUserFn interface{}, advertisedHost interface{}) *mockAuthService_KerberosLogin_Call {
 	return &mockAuthService_KerberosLogin_Call{Call: _e.mock.On("KerberosLogin", ctx, inBody, newUserFn, advertisedHost)}
 }
 
-func (_c *mockAuthService_KerberosLogin_Call) Run(run func(ctx context.Context, inBody wire.SNAC_0x050C_0x0002_KerberosLoginRequest, newUserFn func(state.DisplayScreenName) (state.User, error), advertisedHost string)) *mockAuthService_KerberosLogin_Call {
+func (_c *mockAuthService_KerberosLogin_Call) Run(run func(ctx context.Context, inBody wire.SNAC_0x050C_0x0002_KerberosLoginRequest, newUserFn func(screenName state.DisplayScreenName) (state.User, error), advertisedHost string)) *mockAuthService_KerberosLogin_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(wire.SNAC_0x050C_0x0002_KerberosLoginRequest), args[2].(func(state.DisplayScreenName) (state.User, error)), args[3].(string))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 wire.SNAC_0x050C_0x0002_KerberosLoginRequest
+		if args[1] != nil {
+			arg1 = args[1].(wire.SNAC_0x050C_0x0002_KerberosLoginRequest)
+		}
+		var arg2 func(screenName state.DisplayScreenName) (state.User, error)
+		if args[2] != nil {
+			arg2 = args[2].(func(screenName state.DisplayScreenName) (state.User, error))
+		}
+		var arg3 string
+		if args[3] != nil {
+			arg3 = args[3].(string)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+			arg3,
+		)
 	})
 	return _c
 }
 
-func (_c *mockAuthService_KerberosLogin_Call) Return(_a0 wire.SNACMessage, _a1 error) *mockAuthService_KerberosLogin_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockAuthService_KerberosLogin_Call) Return(sNACMessage wire.SNACMessage, err error) *mockAuthService_KerberosLogin_Call {
+	_c.Call.Return(sNACMessage, err)
 	return _c
 }
 
-func (_c *mockAuthService_KerberosLogin_Call) RunAndReturn(run func(context.Context, wire.SNAC_0x050C_0x0002_KerberosLoginRequest, func(state.DisplayScreenName) (state.User, error), string) (wire.SNACMessage, error)) *mockAuthService_KerberosLogin_Call {
+func (_c *mockAuthService_KerberosLogin_Call) RunAndReturn(run func(ctx context.Context, inBody wire.SNAC_0x050C_0x0002_KerberosLoginRequest, newUserFn func(screenName state.DisplayScreenName) (state.User, error), advertisedHost string) (wire.SNACMessage, error)) *mockAuthService_KerberosLogin_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockAuthService creates a new instance of mockAuthService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockAuthService(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockAuthService {
-	mock := &mockAuthService{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 117 - 64
server/oscar/mock_admin_service_test.go

@@ -1,16 +1,31 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package oscar
 
 import (
-	context "context"
+	"context"
 
-	state "github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/wire"
 	mock "github.com/stretchr/testify/mock"
-
-	wire "github.com/mk6i/retro-aim-server/wire"
 )
 
+// newMockAdminService creates a new instance of mockAdminService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockAdminService(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockAdminService {
+	mock := &mockAdminService{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockAdminService is an autogenerated mock type for the AdminService type
 type mockAdminService struct {
 	mock.Mock
@@ -24,9 +39,9 @@ func (_m *mockAdminService) EXPECT() *mockAdminService_Expecter {
 	return &mockAdminService_Expecter{mock: &_m.Mock}
 }
 
-// ConfirmRequest provides a mock function with given fields: ctx, sess, frame
-func (_m *mockAdminService) ConfirmRequest(ctx context.Context, sess *state.Session, frame wire.SNACFrame) (wire.SNACMessage, error) {
-	ret := _m.Called(ctx, sess, frame)
+// ConfirmRequest provides a mock function for the type mockAdminService
+func (_mock *mockAdminService) ConfirmRequest(ctx context.Context, sess *state.Session, frame wire.SNACFrame) (wire.SNACMessage, error) {
+	ret := _mock.Called(ctx, sess, frame)
 
 	if len(ret) == 0 {
 		panic("no return value specified for ConfirmRequest")
@@ -34,21 +49,19 @@ func (_m *mockAdminService) ConfirmRequest(ctx context.Context, sess *state.Sess
 
 	var r0 wire.SNACMessage
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame) (wire.SNACMessage, error)); ok {
-		return rf(ctx, sess, frame)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame) (wire.SNACMessage, error)); ok {
+		return returnFunc(ctx, sess, frame)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame) wire.SNACMessage); ok {
-		r0 = rf(ctx, sess, frame)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame) wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, sess, frame)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, *state.Session, wire.SNACFrame) error); ok {
-		r1 = rf(ctx, sess, frame)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, *state.Session, wire.SNACFrame) error); ok {
+		r1 = returnFunc(ctx, sess, frame)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -67,24 +80,40 @@ func (_e *mockAdminService_Expecter) ConfirmRequest(ctx interface{}, sess interf
 
 func (_c *mockAdminService_ConfirmRequest_Call) Run(run func(ctx context.Context, sess *state.Session, frame wire.SNACFrame)) *mockAdminService_ConfirmRequest_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(wire.SNACFrame))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 wire.SNACFrame
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNACFrame)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockAdminService_ConfirmRequest_Call) Return(_a0 wire.SNACMessage, _a1 error) *mockAdminService_ConfirmRequest_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockAdminService_ConfirmRequest_Call) Return(sNACMessage wire.SNACMessage, err error) *mockAdminService_ConfirmRequest_Call {
+	_c.Call.Return(sNACMessage, err)
 	return _c
 }
 
-func (_c *mockAdminService_ConfirmRequest_Call) RunAndReturn(run func(context.Context, *state.Session, wire.SNACFrame) (wire.SNACMessage, error)) *mockAdminService_ConfirmRequest_Call {
+func (_c *mockAdminService_ConfirmRequest_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session, frame wire.SNACFrame) (wire.SNACMessage, error)) *mockAdminService_ConfirmRequest_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// InfoChangeRequest provides a mock function with given fields: ctx, sess, frame, body
-func (_m *mockAdminService) InfoChangeRequest(ctx context.Context, sess *state.Session, frame wire.SNACFrame, body wire.SNAC_0x07_0x04_AdminInfoChangeRequest) (wire.SNACMessage, error) {
-	ret := _m.Called(ctx, sess, frame, body)
+// InfoChangeRequest provides a mock function for the type mockAdminService
+func (_mock *mockAdminService) InfoChangeRequest(ctx context.Context, sess *state.Session, frame wire.SNACFrame, body wire.SNAC_0x07_0x04_AdminInfoChangeRequest) (wire.SNACMessage, error) {
+	ret := _mock.Called(ctx, sess, frame, body)
 
 	if len(ret) == 0 {
 		panic("no return value specified for InfoChangeRequest")
@@ -92,21 +121,19 @@ func (_m *mockAdminService) InfoChangeRequest(ctx context.Context, sess *state.S
 
 	var r0 wire.SNACMessage
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x07_0x04_AdminInfoChangeRequest) (wire.SNACMessage, error)); ok {
-		return rf(ctx, sess, frame, body)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x07_0x04_AdminInfoChangeRequest) (wire.SNACMessage, error)); ok {
+		return returnFunc(ctx, sess, frame, body)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x07_0x04_AdminInfoChangeRequest) wire.SNACMessage); ok {
-		r0 = rf(ctx, sess, frame, body)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x07_0x04_AdminInfoChangeRequest) wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, sess, frame, body)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x07_0x04_AdminInfoChangeRequest) error); ok {
-		r1 = rf(ctx, sess, frame, body)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x07_0x04_AdminInfoChangeRequest) error); ok {
+		r1 = returnFunc(ctx, sess, frame, body)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -126,24 +153,45 @@ func (_e *mockAdminService_Expecter) InfoChangeRequest(ctx interface{}, sess int
 
 func (_c *mockAdminService_InfoChangeRequest_Call) Run(run func(ctx context.Context, sess *state.Session, frame wire.SNACFrame, body wire.SNAC_0x07_0x04_AdminInfoChangeRequest)) *mockAdminService_InfoChangeRequest_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(wire.SNACFrame), args[3].(wire.SNAC_0x07_0x04_AdminInfoChangeRequest))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 wire.SNACFrame
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNACFrame)
+		}
+		var arg3 wire.SNAC_0x07_0x04_AdminInfoChangeRequest
+		if args[3] != nil {
+			arg3 = args[3].(wire.SNAC_0x07_0x04_AdminInfoChangeRequest)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+			arg3,
+		)
 	})
 	return _c
 }
 
-func (_c *mockAdminService_InfoChangeRequest_Call) Return(_a0 wire.SNACMessage, _a1 error) *mockAdminService_InfoChangeRequest_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockAdminService_InfoChangeRequest_Call) Return(sNACMessage wire.SNACMessage, err error) *mockAdminService_InfoChangeRequest_Call {
+	_c.Call.Return(sNACMessage, err)
 	return _c
 }
 
-func (_c *mockAdminService_InfoChangeRequest_Call) RunAndReturn(run func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x07_0x04_AdminInfoChangeRequest) (wire.SNACMessage, error)) *mockAdminService_InfoChangeRequest_Call {
+func (_c *mockAdminService_InfoChangeRequest_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session, frame wire.SNACFrame, body wire.SNAC_0x07_0x04_AdminInfoChangeRequest) (wire.SNACMessage, error)) *mockAdminService_InfoChangeRequest_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// InfoQuery provides a mock function with given fields: ctx, sess, frame, body
-func (_m *mockAdminService) InfoQuery(ctx context.Context, sess *state.Session, frame wire.SNACFrame, body wire.SNAC_0x07_0x02_AdminInfoQuery) (wire.SNACMessage, error) {
-	ret := _m.Called(ctx, sess, frame, body)
+// InfoQuery provides a mock function for the type mockAdminService
+func (_mock *mockAdminService) InfoQuery(ctx context.Context, sess *state.Session, frame wire.SNACFrame, body wire.SNAC_0x07_0x02_AdminInfoQuery) (wire.SNACMessage, error) {
+	ret := _mock.Called(ctx, sess, frame, body)
 
 	if len(ret) == 0 {
 		panic("no return value specified for InfoQuery")
@@ -151,21 +199,19 @@ func (_m *mockAdminService) InfoQuery(ctx context.Context, sess *state.Session,
 
 	var r0 wire.SNACMessage
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x07_0x02_AdminInfoQuery) (wire.SNACMessage, error)); ok {
-		return rf(ctx, sess, frame, body)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x07_0x02_AdminInfoQuery) (wire.SNACMessage, error)); ok {
+		return returnFunc(ctx, sess, frame, body)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x07_0x02_AdminInfoQuery) wire.SNACMessage); ok {
-		r0 = rf(ctx, sess, frame, body)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x07_0x02_AdminInfoQuery) wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, sess, frame, body)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x07_0x02_AdminInfoQuery) error); ok {
-		r1 = rf(ctx, sess, frame, body)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x07_0x02_AdminInfoQuery) error); ok {
+		r1 = returnFunc(ctx, sess, frame, body)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -185,31 +231,38 @@ func (_e *mockAdminService_Expecter) InfoQuery(ctx interface{}, sess interface{}
 
 func (_c *mockAdminService_InfoQuery_Call) Run(run func(ctx context.Context, sess *state.Session, frame wire.SNACFrame, body wire.SNAC_0x07_0x02_AdminInfoQuery)) *mockAdminService_InfoQuery_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(wire.SNACFrame), args[3].(wire.SNAC_0x07_0x02_AdminInfoQuery))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 wire.SNACFrame
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNACFrame)
+		}
+		var arg3 wire.SNAC_0x07_0x02_AdminInfoQuery
+		if args[3] != nil {
+			arg3 = args[3].(wire.SNAC_0x07_0x02_AdminInfoQuery)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+			arg3,
+		)
 	})
 	return _c
 }
 
-func (_c *mockAdminService_InfoQuery_Call) Return(_a0 wire.SNACMessage, _a1 error) *mockAdminService_InfoQuery_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockAdminService_InfoQuery_Call) Return(sNACMessage wire.SNACMessage, err error) *mockAdminService_InfoQuery_Call {
+	_c.Call.Return(sNACMessage, err)
 	return _c
 }
 
-func (_c *mockAdminService_InfoQuery_Call) RunAndReturn(run func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x07_0x02_AdminInfoQuery) (wire.SNACMessage, error)) *mockAdminService_InfoQuery_Call {
+func (_c *mockAdminService_InfoQuery_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session, frame wire.SNACFrame, body wire.SNAC_0x07_0x02_AdminInfoQuery) (wire.SNACMessage, error)) *mockAdminService_InfoQuery_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockAdminService creates a new instance of mockAdminService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockAdminService(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockAdminService {
-	mock := &mockAdminService{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 282 - 156
server/oscar/mock_auth_test.go

@@ -1,17 +1,31 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package oscar
 
 import (
-	context "context"
+	"context"
 
-	state "github.com/mk6i/retro-aim-server/state"
+	"github.com/google/uuid"
+	"github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/wire"
 	mock "github.com/stretchr/testify/mock"
+)
+
+// newMockAuthService creates a new instance of mockAuthService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockAuthService(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockAuthService {
+	mock := &mockAuthService{}
+	mock.Mock.Test(t)
 
-	uuid "github.com/google/uuid"
+	t.Cleanup(func() { mock.AssertExpectations(t) })
 
-	wire "github.com/mk6i/retro-aim-server/wire"
-)
+	return mock
+}
 
 // mockAuthService is an autogenerated mock type for the AuthService type
 type mockAuthService struct {
@@ -26,9 +40,9 @@ func (_m *mockAuthService) EXPECT() *mockAuthService_Expecter {
 	return &mockAuthService_Expecter{mock: &_m.Mock}
 }
 
-// BUCPChallenge provides a mock function with given fields: ctx, bodyIn, newUUID
-func (_m *mockAuthService) BUCPChallenge(ctx context.Context, bodyIn wire.SNAC_0x17_0x06_BUCPChallengeRequest, newUUID func() uuid.UUID) (wire.SNACMessage, error) {
-	ret := _m.Called(ctx, bodyIn, newUUID)
+// BUCPChallenge provides a mock function for the type mockAuthService
+func (_mock *mockAuthService) BUCPChallenge(ctx context.Context, bodyIn wire.SNAC_0x17_0x06_BUCPChallengeRequest, newUUID func() uuid.UUID) (wire.SNACMessage, error) {
+	ret := _mock.Called(ctx, bodyIn, newUUID)
 
 	if len(ret) == 0 {
 		panic("no return value specified for BUCPChallenge")
@@ -36,21 +50,19 @@ func (_m *mockAuthService) BUCPChallenge(ctx context.Context, bodyIn wire.SNAC_0
 
 	var r0 wire.SNACMessage
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, wire.SNAC_0x17_0x06_BUCPChallengeRequest, func() uuid.UUID) (wire.SNACMessage, error)); ok {
-		return rf(ctx, bodyIn, newUUID)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, wire.SNAC_0x17_0x06_BUCPChallengeRequest, func() uuid.UUID) (wire.SNACMessage, error)); ok {
+		return returnFunc(ctx, bodyIn, newUUID)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, wire.SNAC_0x17_0x06_BUCPChallengeRequest, func() uuid.UUID) wire.SNACMessage); ok {
-		r0 = rf(ctx, bodyIn, newUUID)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, wire.SNAC_0x17_0x06_BUCPChallengeRequest, func() uuid.UUID) wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, bodyIn, newUUID)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, wire.SNAC_0x17_0x06_BUCPChallengeRequest, func() uuid.UUID) error); ok {
-		r1 = rf(ctx, bodyIn, newUUID)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, wire.SNAC_0x17_0x06_BUCPChallengeRequest, func() uuid.UUID) error); ok {
+		r1 = returnFunc(ctx, bodyIn, newUUID)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -69,24 +81,40 @@ func (_e *mockAuthService_Expecter) BUCPChallenge(ctx interface{}, bodyIn interf
 
 func (_c *mockAuthService_BUCPChallenge_Call) Run(run func(ctx context.Context, bodyIn wire.SNAC_0x17_0x06_BUCPChallengeRequest, newUUID func() uuid.UUID)) *mockAuthService_BUCPChallenge_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(wire.SNAC_0x17_0x06_BUCPChallengeRequest), args[2].(func() uuid.UUID))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 wire.SNAC_0x17_0x06_BUCPChallengeRequest
+		if args[1] != nil {
+			arg1 = args[1].(wire.SNAC_0x17_0x06_BUCPChallengeRequest)
+		}
+		var arg2 func() uuid.UUID
+		if args[2] != nil {
+			arg2 = args[2].(func() uuid.UUID)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockAuthService_BUCPChallenge_Call) Return(_a0 wire.SNACMessage, _a1 error) *mockAuthService_BUCPChallenge_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockAuthService_BUCPChallenge_Call) Return(sNACMessage wire.SNACMessage, err error) *mockAuthService_BUCPChallenge_Call {
+	_c.Call.Return(sNACMessage, err)
 	return _c
 }
 
-func (_c *mockAuthService_BUCPChallenge_Call) RunAndReturn(run func(context.Context, wire.SNAC_0x17_0x06_BUCPChallengeRequest, func() uuid.UUID) (wire.SNACMessage, error)) *mockAuthService_BUCPChallenge_Call {
+func (_c *mockAuthService_BUCPChallenge_Call) RunAndReturn(run func(ctx context.Context, bodyIn wire.SNAC_0x17_0x06_BUCPChallengeRequest, newUUID func() uuid.UUID) (wire.SNACMessage, error)) *mockAuthService_BUCPChallenge_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// BUCPLogin provides a mock function with given fields: ctx, bodyIn, newUserFn, here
-func (_m *mockAuthService) BUCPLogin(ctx context.Context, bodyIn wire.SNAC_0x17_0x02_BUCPLoginRequest, newUserFn func(state.DisplayScreenName) (state.User, error), here string) (wire.SNACMessage, error) {
-	ret := _m.Called(ctx, bodyIn, newUserFn, here)
+// BUCPLogin provides a mock function for the type mockAuthService
+func (_mock *mockAuthService) BUCPLogin(ctx context.Context, bodyIn wire.SNAC_0x17_0x02_BUCPLoginRequest, newUserFn func(screenName state.DisplayScreenName) (state.User, error), here string) (wire.SNACMessage, error) {
+	ret := _mock.Called(ctx, bodyIn, newUserFn, here)
 
 	if len(ret) == 0 {
 		panic("no return value specified for BUCPLogin")
@@ -94,21 +122,19 @@ func (_m *mockAuthService) BUCPLogin(ctx context.Context, bodyIn wire.SNAC_0x17_
 
 	var r0 wire.SNACMessage
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, wire.SNAC_0x17_0x02_BUCPLoginRequest, func(state.DisplayScreenName) (state.User, error), string) (wire.SNACMessage, error)); ok {
-		return rf(ctx, bodyIn, newUserFn, here)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, wire.SNAC_0x17_0x02_BUCPLoginRequest, func(screenName state.DisplayScreenName) (state.User, error), string) (wire.SNACMessage, error)); ok {
+		return returnFunc(ctx, bodyIn, newUserFn, here)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, wire.SNAC_0x17_0x02_BUCPLoginRequest, func(state.DisplayScreenName) (state.User, error), string) wire.SNACMessage); ok {
-		r0 = rf(ctx, bodyIn, newUserFn, here)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, wire.SNAC_0x17_0x02_BUCPLoginRequest, func(screenName state.DisplayScreenName) (state.User, error), string) wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, bodyIn, newUserFn, here)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, wire.SNAC_0x17_0x02_BUCPLoginRequest, func(state.DisplayScreenName) (state.User, error), string) error); ok {
-		r1 = rf(ctx, bodyIn, newUserFn, here)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, wire.SNAC_0x17_0x02_BUCPLoginRequest, func(screenName state.DisplayScreenName) (state.User, error), string) error); ok {
+		r1 = returnFunc(ctx, bodyIn, newUserFn, here)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -120,32 +146,53 @@ type mockAuthService_BUCPLogin_Call struct {
 // BUCPLogin is a helper method to define mock.On call
 //   - ctx context.Context
 //   - bodyIn wire.SNAC_0x17_0x02_BUCPLoginRequest
-//   - newUserFn func(state.DisplayScreenName)(state.User , error)
+//   - newUserFn func(screenName state.DisplayScreenName) (state.User, error)
 //   - here string
 func (_e *mockAuthService_Expecter) BUCPLogin(ctx interface{}, bodyIn interface{}, newUserFn interface{}, here interface{}) *mockAuthService_BUCPLogin_Call {
 	return &mockAuthService_BUCPLogin_Call{Call: _e.mock.On("BUCPLogin", ctx, bodyIn, newUserFn, here)}
 }
 
-func (_c *mockAuthService_BUCPLogin_Call) Run(run func(ctx context.Context, bodyIn wire.SNAC_0x17_0x02_BUCPLoginRequest, newUserFn func(state.DisplayScreenName) (state.User, error), here string)) *mockAuthService_BUCPLogin_Call {
+func (_c *mockAuthService_BUCPLogin_Call) Run(run func(ctx context.Context, bodyIn wire.SNAC_0x17_0x02_BUCPLoginRequest, newUserFn func(screenName state.DisplayScreenName) (state.User, error), here string)) *mockAuthService_BUCPLogin_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(wire.SNAC_0x17_0x02_BUCPLoginRequest), args[2].(func(state.DisplayScreenName) (state.User, error)), args[3].(string))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 wire.SNAC_0x17_0x02_BUCPLoginRequest
+		if args[1] != nil {
+			arg1 = args[1].(wire.SNAC_0x17_0x02_BUCPLoginRequest)
+		}
+		var arg2 func(screenName state.DisplayScreenName) (state.User, error)
+		if args[2] != nil {
+			arg2 = args[2].(func(screenName state.DisplayScreenName) (state.User, error))
+		}
+		var arg3 string
+		if args[3] != nil {
+			arg3 = args[3].(string)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+			arg3,
+		)
 	})
 	return _c
 }
 
-func (_c *mockAuthService_BUCPLogin_Call) Return(_a0 wire.SNACMessage, _a1 error) *mockAuthService_BUCPLogin_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockAuthService_BUCPLogin_Call) Return(sNACMessage wire.SNACMessage, err error) *mockAuthService_BUCPLogin_Call {
+	_c.Call.Return(sNACMessage, err)
 	return _c
 }
 
-func (_c *mockAuthService_BUCPLogin_Call) RunAndReturn(run func(context.Context, wire.SNAC_0x17_0x02_BUCPLoginRequest, func(state.DisplayScreenName) (state.User, error), string) (wire.SNACMessage, error)) *mockAuthService_BUCPLogin_Call {
+func (_c *mockAuthService_BUCPLogin_Call) RunAndReturn(run func(ctx context.Context, bodyIn wire.SNAC_0x17_0x02_BUCPLoginRequest, newUserFn func(screenName state.DisplayScreenName) (state.User, error), here string) (wire.SNACMessage, error)) *mockAuthService_BUCPLogin_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// CrackCookie provides a mock function with given fields: authCookie
-func (_m *mockAuthService) CrackCookie(authCookie []byte) (state.ServerCookie, error) {
-	ret := _m.Called(authCookie)
+// CrackCookie provides a mock function for the type mockAuthService
+func (_mock *mockAuthService) CrackCookie(authCookie []byte) (state.ServerCookie, error) {
+	ret := _mock.Called(authCookie)
 
 	if len(ret) == 0 {
 		panic("no return value specified for CrackCookie")
@@ -153,21 +200,19 @@ func (_m *mockAuthService) CrackCookie(authCookie []byte) (state.ServerCookie, e
 
 	var r0 state.ServerCookie
 	var r1 error
-	if rf, ok := ret.Get(0).(func([]byte) (state.ServerCookie, error)); ok {
-		return rf(authCookie)
+	if returnFunc, ok := ret.Get(0).(func([]byte) (state.ServerCookie, error)); ok {
+		return returnFunc(authCookie)
 	}
-	if rf, ok := ret.Get(0).(func([]byte) state.ServerCookie); ok {
-		r0 = rf(authCookie)
+	if returnFunc, ok := ret.Get(0).(func([]byte) state.ServerCookie); ok {
+		r0 = returnFunc(authCookie)
 	} else {
 		r0 = ret.Get(0).(state.ServerCookie)
 	}
-
-	if rf, ok := ret.Get(1).(func([]byte) error); ok {
-		r1 = rf(authCookie)
+	if returnFunc, ok := ret.Get(1).(func([]byte) error); ok {
+		r1 = returnFunc(authCookie)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -184,24 +229,30 @@ func (_e *mockAuthService_Expecter) CrackCookie(authCookie interface{}) *mockAut
 
 func (_c *mockAuthService_CrackCookie_Call) Run(run func(authCookie []byte)) *mockAuthService_CrackCookie_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].([]byte))
+		var arg0 []byte
+		if args[0] != nil {
+			arg0 = args[0].([]byte)
+		}
+		run(
+			arg0,
+		)
 	})
 	return _c
 }
 
-func (_c *mockAuthService_CrackCookie_Call) Return(_a0 state.ServerCookie, _a1 error) *mockAuthService_CrackCookie_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockAuthService_CrackCookie_Call) Return(serverCookie state.ServerCookie, err error) *mockAuthService_CrackCookie_Call {
+	_c.Call.Return(serverCookie, err)
 	return _c
 }
 
-func (_c *mockAuthService_CrackCookie_Call) RunAndReturn(run func([]byte) (state.ServerCookie, error)) *mockAuthService_CrackCookie_Call {
+func (_c *mockAuthService_CrackCookie_Call) RunAndReturn(run func(authCookie []byte) (state.ServerCookie, error)) *mockAuthService_CrackCookie_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// FLAPLogin provides a mock function with given fields: ctx, frame, newUserFn, here
-func (_m *mockAuthService) FLAPLogin(ctx context.Context, frame wire.FLAPSignonFrame, newUserFn func(state.DisplayScreenName) (state.User, error), here string) (wire.TLVRestBlock, error) {
-	ret := _m.Called(ctx, frame, newUserFn, here)
+// FLAPLogin provides a mock function for the type mockAuthService
+func (_mock *mockAuthService) FLAPLogin(ctx context.Context, frame wire.FLAPSignonFrame, newUserFn func(screenName state.DisplayScreenName) (state.User, error), here string) (wire.TLVRestBlock, error) {
+	ret := _mock.Called(ctx, frame, newUserFn, here)
 
 	if len(ret) == 0 {
 		panic("no return value specified for FLAPLogin")
@@ -209,21 +260,19 @@ func (_m *mockAuthService) FLAPLogin(ctx context.Context, frame wire.FLAPSignonF
 
 	var r0 wire.TLVRestBlock
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, wire.FLAPSignonFrame, func(state.DisplayScreenName) (state.User, error), string) (wire.TLVRestBlock, error)); ok {
-		return rf(ctx, frame, newUserFn, here)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, wire.FLAPSignonFrame, func(screenName state.DisplayScreenName) (state.User, error), string) (wire.TLVRestBlock, error)); ok {
+		return returnFunc(ctx, frame, newUserFn, here)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, wire.FLAPSignonFrame, func(state.DisplayScreenName) (state.User, error), string) wire.TLVRestBlock); ok {
-		r0 = rf(ctx, frame, newUserFn, here)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, wire.FLAPSignonFrame, func(screenName state.DisplayScreenName) (state.User, error), string) wire.TLVRestBlock); ok {
+		r0 = returnFunc(ctx, frame, newUserFn, here)
 	} else {
 		r0 = ret.Get(0).(wire.TLVRestBlock)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, wire.FLAPSignonFrame, func(state.DisplayScreenName) (state.User, error), string) error); ok {
-		r1 = rf(ctx, frame, newUserFn, here)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, wire.FLAPSignonFrame, func(screenName state.DisplayScreenName) (state.User, error), string) error); ok {
+		r1 = returnFunc(ctx, frame, newUserFn, here)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -235,32 +284,53 @@ type mockAuthService_FLAPLogin_Call struct {
 // FLAPLogin is a helper method to define mock.On call
 //   - ctx context.Context
 //   - frame wire.FLAPSignonFrame
-//   - newUserFn func(state.DisplayScreenName)(state.User , error)
+//   - newUserFn func(screenName state.DisplayScreenName) (state.User, error)
 //   - here string
 func (_e *mockAuthService_Expecter) FLAPLogin(ctx interface{}, frame interface{}, newUserFn interface{}, here interface{}) *mockAuthService_FLAPLogin_Call {
 	return &mockAuthService_FLAPLogin_Call{Call: _e.mock.On("FLAPLogin", ctx, frame, newUserFn, here)}
 }
 
-func (_c *mockAuthService_FLAPLogin_Call) Run(run func(ctx context.Context, frame wire.FLAPSignonFrame, newUserFn func(state.DisplayScreenName) (state.User, error), here string)) *mockAuthService_FLAPLogin_Call {
+func (_c *mockAuthService_FLAPLogin_Call) Run(run func(ctx context.Context, frame wire.FLAPSignonFrame, newUserFn func(screenName state.DisplayScreenName) (state.User, error), here string)) *mockAuthService_FLAPLogin_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(wire.FLAPSignonFrame), args[2].(func(state.DisplayScreenName) (state.User, error)), args[3].(string))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 wire.FLAPSignonFrame
+		if args[1] != nil {
+			arg1 = args[1].(wire.FLAPSignonFrame)
+		}
+		var arg2 func(screenName state.DisplayScreenName) (state.User, error)
+		if args[2] != nil {
+			arg2 = args[2].(func(screenName state.DisplayScreenName) (state.User, error))
+		}
+		var arg3 string
+		if args[3] != nil {
+			arg3 = args[3].(string)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+			arg3,
+		)
 	})
 	return _c
 }
 
-func (_c *mockAuthService_FLAPLogin_Call) Return(_a0 wire.TLVRestBlock, _a1 error) *mockAuthService_FLAPLogin_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockAuthService_FLAPLogin_Call) Return(tLVRestBlock wire.TLVRestBlock, err error) *mockAuthService_FLAPLogin_Call {
+	_c.Call.Return(tLVRestBlock, err)
 	return _c
 }
 
-func (_c *mockAuthService_FLAPLogin_Call) RunAndReturn(run func(context.Context, wire.FLAPSignonFrame, func(state.DisplayScreenName) (state.User, error), string) (wire.TLVRestBlock, error)) *mockAuthService_FLAPLogin_Call {
+func (_c *mockAuthService_FLAPLogin_Call) RunAndReturn(run func(ctx context.Context, frame wire.FLAPSignonFrame, newUserFn func(screenName state.DisplayScreenName) (state.User, error), here string) (wire.TLVRestBlock, error)) *mockAuthService_FLAPLogin_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// KerberosLogin provides a mock function with given fields: ctx, inBody, newUserFn, advertisedHost
-func (_m *mockAuthService) KerberosLogin(ctx context.Context, inBody wire.SNAC_0x050C_0x0002_KerberosLoginRequest, newUserFn func(state.DisplayScreenName) (state.User, error), advertisedHost string) (wire.SNACMessage, error) {
-	ret := _m.Called(ctx, inBody, newUserFn, advertisedHost)
+// KerberosLogin provides a mock function for the type mockAuthService
+func (_mock *mockAuthService) KerberosLogin(ctx context.Context, inBody wire.SNAC_0x050C_0x0002_KerberosLoginRequest, newUserFn func(screenName state.DisplayScreenName) (state.User, error), advertisedHost string) (wire.SNACMessage, error) {
+	ret := _mock.Called(ctx, inBody, newUserFn, advertisedHost)
 
 	if len(ret) == 0 {
 		panic("no return value specified for KerberosLogin")
@@ -268,21 +338,19 @@ func (_m *mockAuthService) KerberosLogin(ctx context.Context, inBody wire.SNAC_0
 
 	var r0 wire.SNACMessage
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, wire.SNAC_0x050C_0x0002_KerberosLoginRequest, func(state.DisplayScreenName) (state.User, error), string) (wire.SNACMessage, error)); ok {
-		return rf(ctx, inBody, newUserFn, advertisedHost)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, wire.SNAC_0x050C_0x0002_KerberosLoginRequest, func(screenName state.DisplayScreenName) (state.User, error), string) (wire.SNACMessage, error)); ok {
+		return returnFunc(ctx, inBody, newUserFn, advertisedHost)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, wire.SNAC_0x050C_0x0002_KerberosLoginRequest, func(state.DisplayScreenName) (state.User, error), string) wire.SNACMessage); ok {
-		r0 = rf(ctx, inBody, newUserFn, advertisedHost)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, wire.SNAC_0x050C_0x0002_KerberosLoginRequest, func(screenName state.DisplayScreenName) (state.User, error), string) wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, inBody, newUserFn, advertisedHost)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, wire.SNAC_0x050C_0x0002_KerberosLoginRequest, func(state.DisplayScreenName) (state.User, error), string) error); ok {
-		r1 = rf(ctx, inBody, newUserFn, advertisedHost)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, wire.SNAC_0x050C_0x0002_KerberosLoginRequest, func(screenName state.DisplayScreenName) (state.User, error), string) error); ok {
+		r1 = returnFunc(ctx, inBody, newUserFn, advertisedHost)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -294,32 +362,53 @@ type mockAuthService_KerberosLogin_Call struct {
 // KerberosLogin is a helper method to define mock.On call
 //   - ctx context.Context
 //   - inBody wire.SNAC_0x050C_0x0002_KerberosLoginRequest
-//   - newUserFn func(state.DisplayScreenName)(state.User , error)
+//   - newUserFn func(screenName state.DisplayScreenName) (state.User, error)
 //   - advertisedHost string
 func (_e *mockAuthService_Expecter) KerberosLogin(ctx interface{}, inBody interface{}, newUserFn interface{}, advertisedHost interface{}) *mockAuthService_KerberosLogin_Call {
 	return &mockAuthService_KerberosLogin_Call{Call: _e.mock.On("KerberosLogin", ctx, inBody, newUserFn, advertisedHost)}
 }
 
-func (_c *mockAuthService_KerberosLogin_Call) Run(run func(ctx context.Context, inBody wire.SNAC_0x050C_0x0002_KerberosLoginRequest, newUserFn func(state.DisplayScreenName) (state.User, error), advertisedHost string)) *mockAuthService_KerberosLogin_Call {
+func (_c *mockAuthService_KerberosLogin_Call) Run(run func(ctx context.Context, inBody wire.SNAC_0x050C_0x0002_KerberosLoginRequest, newUserFn func(screenName state.DisplayScreenName) (state.User, error), advertisedHost string)) *mockAuthService_KerberosLogin_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(wire.SNAC_0x050C_0x0002_KerberosLoginRequest), args[2].(func(state.DisplayScreenName) (state.User, error)), args[3].(string))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 wire.SNAC_0x050C_0x0002_KerberosLoginRequest
+		if args[1] != nil {
+			arg1 = args[1].(wire.SNAC_0x050C_0x0002_KerberosLoginRequest)
+		}
+		var arg2 func(screenName state.DisplayScreenName) (state.User, error)
+		if args[2] != nil {
+			arg2 = args[2].(func(screenName state.DisplayScreenName) (state.User, error))
+		}
+		var arg3 string
+		if args[3] != nil {
+			arg3 = args[3].(string)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+			arg3,
+		)
 	})
 	return _c
 }
 
-func (_c *mockAuthService_KerberosLogin_Call) Return(_a0 wire.SNACMessage, _a1 error) *mockAuthService_KerberosLogin_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockAuthService_KerberosLogin_Call) Return(sNACMessage wire.SNACMessage, err error) *mockAuthService_KerberosLogin_Call {
+	_c.Call.Return(sNACMessage, err)
 	return _c
 }
 
-func (_c *mockAuthService_KerberosLogin_Call) RunAndReturn(run func(context.Context, wire.SNAC_0x050C_0x0002_KerberosLoginRequest, func(state.DisplayScreenName) (state.User, error), string) (wire.SNACMessage, error)) *mockAuthService_KerberosLogin_Call {
+func (_c *mockAuthService_KerberosLogin_Call) RunAndReturn(run func(ctx context.Context, inBody wire.SNAC_0x050C_0x0002_KerberosLoginRequest, newUserFn func(screenName state.DisplayScreenName) (state.User, error), advertisedHost string) (wire.SNACMessage, error)) *mockAuthService_KerberosLogin_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// RegisterBOSSession provides a mock function with given fields: ctx, authCookie
-func (_m *mockAuthService) RegisterBOSSession(ctx context.Context, authCookie state.ServerCookie) (*state.Session, error) {
-	ret := _m.Called(ctx, authCookie)
+// RegisterBOSSession provides a mock function for the type mockAuthService
+func (_mock *mockAuthService) RegisterBOSSession(ctx context.Context, authCookie state.ServerCookie) (*state.Session, error) {
+	ret := _mock.Called(ctx, authCookie)
 
 	if len(ret) == 0 {
 		panic("no return value specified for RegisterBOSSession")
@@ -327,23 +416,21 @@ func (_m *mockAuthService) RegisterBOSSession(ctx context.Context, authCookie st
 
 	var r0 *state.Session
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.ServerCookie) (*state.Session, error)); ok {
-		return rf(ctx, authCookie)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.ServerCookie) (*state.Session, error)); ok {
+		return returnFunc(ctx, authCookie)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, state.ServerCookie) *state.Session); ok {
-		r0 = rf(ctx, authCookie)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.ServerCookie) *state.Session); ok {
+		r0 = returnFunc(ctx, authCookie)
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).(*state.Session)
 		}
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, state.ServerCookie) error); ok {
-		r1 = rf(ctx, authCookie)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, state.ServerCookie) error); ok {
+		r1 = returnFunc(ctx, authCookie)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -361,24 +448,35 @@ func (_e *mockAuthService_Expecter) RegisterBOSSession(ctx interface{}, authCook
 
 func (_c *mockAuthService_RegisterBOSSession_Call) Run(run func(ctx context.Context, authCookie state.ServerCookie)) *mockAuthService_RegisterBOSSession_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.ServerCookie))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.ServerCookie
+		if args[1] != nil {
+			arg1 = args[1].(state.ServerCookie)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockAuthService_RegisterBOSSession_Call) Return(_a0 *state.Session, _a1 error) *mockAuthService_RegisterBOSSession_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockAuthService_RegisterBOSSession_Call) Return(session *state.Session, err error) *mockAuthService_RegisterBOSSession_Call {
+	_c.Call.Return(session, err)
 	return _c
 }
 
-func (_c *mockAuthService_RegisterBOSSession_Call) RunAndReturn(run func(context.Context, state.ServerCookie) (*state.Session, error)) *mockAuthService_RegisterBOSSession_Call {
+func (_c *mockAuthService_RegisterBOSSession_Call) RunAndReturn(run func(ctx context.Context, authCookie state.ServerCookie) (*state.Session, error)) *mockAuthService_RegisterBOSSession_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// RegisterChatSession provides a mock function with given fields: ctx, authCookie
-func (_m *mockAuthService) RegisterChatSession(ctx context.Context, authCookie state.ServerCookie) (*state.Session, error) {
-	ret := _m.Called(ctx, authCookie)
+// RegisterChatSession provides a mock function for the type mockAuthService
+func (_mock *mockAuthService) RegisterChatSession(ctx context.Context, authCookie state.ServerCookie) (*state.Session, error) {
+	ret := _mock.Called(ctx, authCookie)
 
 	if len(ret) == 0 {
 		panic("no return value specified for RegisterChatSession")
@@ -386,23 +484,21 @@ func (_m *mockAuthService) RegisterChatSession(ctx context.Context, authCookie s
 
 	var r0 *state.Session
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.ServerCookie) (*state.Session, error)); ok {
-		return rf(ctx, authCookie)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.ServerCookie) (*state.Session, error)); ok {
+		return returnFunc(ctx, authCookie)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, state.ServerCookie) *state.Session); ok {
-		r0 = rf(ctx, authCookie)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.ServerCookie) *state.Session); ok {
+		r0 = returnFunc(ctx, authCookie)
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).(*state.Session)
 		}
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, state.ServerCookie) error); ok {
-		r1 = rf(ctx, authCookie)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, state.ServerCookie) error); ok {
+		r1 = returnFunc(ctx, authCookie)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -420,24 +516,35 @@ func (_e *mockAuthService_Expecter) RegisterChatSession(ctx interface{}, authCoo
 
 func (_c *mockAuthService_RegisterChatSession_Call) Run(run func(ctx context.Context, authCookie state.ServerCookie)) *mockAuthService_RegisterChatSession_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.ServerCookie))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.ServerCookie
+		if args[1] != nil {
+			arg1 = args[1].(state.ServerCookie)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockAuthService_RegisterChatSession_Call) Return(_a0 *state.Session, _a1 error) *mockAuthService_RegisterChatSession_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockAuthService_RegisterChatSession_Call) Return(session *state.Session, err error) *mockAuthService_RegisterChatSession_Call {
+	_c.Call.Return(session, err)
 	return _c
 }
 
-func (_c *mockAuthService_RegisterChatSession_Call) RunAndReturn(run func(context.Context, state.ServerCookie) (*state.Session, error)) *mockAuthService_RegisterChatSession_Call {
+func (_c *mockAuthService_RegisterChatSession_Call) RunAndReturn(run func(ctx context.Context, authCookie state.ServerCookie) (*state.Session, error)) *mockAuthService_RegisterChatSession_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// RetrieveBOSSession provides a mock function with given fields: ctx, authCookie
-func (_m *mockAuthService) RetrieveBOSSession(ctx context.Context, authCookie state.ServerCookie) (*state.Session, error) {
-	ret := _m.Called(ctx, authCookie)
+// RetrieveBOSSession provides a mock function for the type mockAuthService
+func (_mock *mockAuthService) RetrieveBOSSession(ctx context.Context, authCookie state.ServerCookie) (*state.Session, error) {
+	ret := _mock.Called(ctx, authCookie)
 
 	if len(ret) == 0 {
 		panic("no return value specified for RetrieveBOSSession")
@@ -445,23 +552,21 @@ func (_m *mockAuthService) RetrieveBOSSession(ctx context.Context, authCookie st
 
 	var r0 *state.Session
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.ServerCookie) (*state.Session, error)); ok {
-		return rf(ctx, authCookie)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.ServerCookie) (*state.Session, error)); ok {
+		return returnFunc(ctx, authCookie)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, state.ServerCookie) *state.Session); ok {
-		r0 = rf(ctx, authCookie)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.ServerCookie) *state.Session); ok {
+		r0 = returnFunc(ctx, authCookie)
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).(*state.Session)
 		}
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, state.ServerCookie) error); ok {
-		r1 = rf(ctx, authCookie)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, state.ServerCookie) error); ok {
+		r1 = returnFunc(ctx, authCookie)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -479,24 +584,36 @@ func (_e *mockAuthService_Expecter) RetrieveBOSSession(ctx interface{}, authCook
 
 func (_c *mockAuthService_RetrieveBOSSession_Call) Run(run func(ctx context.Context, authCookie state.ServerCookie)) *mockAuthService_RetrieveBOSSession_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.ServerCookie))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.ServerCookie
+		if args[1] != nil {
+			arg1 = args[1].(state.ServerCookie)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockAuthService_RetrieveBOSSession_Call) Return(_a0 *state.Session, _a1 error) *mockAuthService_RetrieveBOSSession_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockAuthService_RetrieveBOSSession_Call) Return(session *state.Session, err error) *mockAuthService_RetrieveBOSSession_Call {
+	_c.Call.Return(session, err)
 	return _c
 }
 
-func (_c *mockAuthService_RetrieveBOSSession_Call) RunAndReturn(run func(context.Context, state.ServerCookie) (*state.Session, error)) *mockAuthService_RetrieveBOSSession_Call {
+func (_c *mockAuthService_RetrieveBOSSession_Call) RunAndReturn(run func(ctx context.Context, authCookie state.ServerCookie) (*state.Session, error)) *mockAuthService_RetrieveBOSSession_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// Signout provides a mock function with given fields: ctx, sess
-func (_m *mockAuthService) Signout(ctx context.Context, sess *state.Session) {
-	_m.Called(ctx, sess)
+// Signout provides a mock function for the type mockAuthService
+func (_mock *mockAuthService) Signout(ctx context.Context, sess *state.Session) {
+	_mock.Called(ctx, sess)
+	return
 }
 
 // mockAuthService_Signout_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Signout'
@@ -513,7 +630,18 @@ func (_e *mockAuthService_Expecter) Signout(ctx interface{}, sess interface{}) *
 
 func (_c *mockAuthService_Signout_Call) Run(run func(ctx context.Context, sess *state.Session)) *mockAuthService_Signout_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
@@ -523,14 +651,15 @@ func (_c *mockAuthService_Signout_Call) Return() *mockAuthService_Signout_Call {
 	return _c
 }
 
-func (_c *mockAuthService_Signout_Call) RunAndReturn(run func(context.Context, *state.Session)) *mockAuthService_Signout_Call {
+func (_c *mockAuthService_Signout_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session)) *mockAuthService_Signout_Call {
 	_c.Run(run)
 	return _c
 }
 
-// SignoutChat provides a mock function with given fields: ctx, sess
-func (_m *mockAuthService) SignoutChat(ctx context.Context, sess *state.Session) {
-	_m.Called(ctx, sess)
+// SignoutChat provides a mock function for the type mockAuthService
+func (_mock *mockAuthService) SignoutChat(ctx context.Context, sess *state.Session) {
+	_mock.Called(ctx, sess)
+	return
 }
 
 // mockAuthService_SignoutChat_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'SignoutChat'
@@ -547,7 +676,18 @@ func (_e *mockAuthService_Expecter) SignoutChat(ctx interface{}, sess interface{
 
 func (_c *mockAuthService_SignoutChat_Call) Run(run func(ctx context.Context, sess *state.Session)) *mockAuthService_SignoutChat_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
@@ -557,21 +697,7 @@ func (_c *mockAuthService_SignoutChat_Call) Return() *mockAuthService_SignoutCha
 	return _c
 }
 
-func (_c *mockAuthService_SignoutChat_Call) RunAndReturn(run func(context.Context, *state.Session)) *mockAuthService_SignoutChat_Call {
+func (_c *mockAuthService_SignoutChat_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session)) *mockAuthService_SignoutChat_Call {
 	_c.Run(run)
 	return _c
 }
-
-// newMockAuthService creates a new instance of mockAuthService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockAuthService(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockAuthService {
-	mock := &mockAuthService{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 112 - 64
server/oscar/mock_bart_service_test.go

@@ -1,16 +1,31 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package oscar
 
 import (
-	context "context"
+	"context"
 
-	state "github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/wire"
 	mock "github.com/stretchr/testify/mock"
-
-	wire "github.com/mk6i/retro-aim-server/wire"
 )
 
+// newMockBARTService creates a new instance of mockBARTService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockBARTService(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockBARTService {
+	mock := &mockBARTService{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockBARTService is an autogenerated mock type for the BARTService type
 type mockBARTService struct {
 	mock.Mock
@@ -24,9 +39,9 @@ func (_m *mockBARTService) EXPECT() *mockBARTService_Expecter {
 	return &mockBARTService_Expecter{mock: &_m.Mock}
 }
 
-// RetrieveItem provides a mock function with given fields: ctx, inFrame, inBody
-func (_m *mockBARTService) RetrieveItem(ctx context.Context, inFrame wire.SNACFrame, inBody wire.SNAC_0x10_0x04_BARTDownloadQuery) (wire.SNACMessage, error) {
-	ret := _m.Called(ctx, inFrame, inBody)
+// RetrieveItem provides a mock function for the type mockBARTService
+func (_mock *mockBARTService) RetrieveItem(ctx context.Context, inFrame wire.SNACFrame, inBody wire.SNAC_0x10_0x04_BARTDownloadQuery) (wire.SNACMessage, error) {
+	ret := _mock.Called(ctx, inFrame, inBody)
 
 	if len(ret) == 0 {
 		panic("no return value specified for RetrieveItem")
@@ -34,21 +49,19 @@ func (_m *mockBARTService) RetrieveItem(ctx context.Context, inFrame wire.SNACFr
 
 	var r0 wire.SNACMessage
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, wire.SNACFrame, wire.SNAC_0x10_0x04_BARTDownloadQuery) (wire.SNACMessage, error)); ok {
-		return rf(ctx, inFrame, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, wire.SNACFrame, wire.SNAC_0x10_0x04_BARTDownloadQuery) (wire.SNACMessage, error)); ok {
+		return returnFunc(ctx, inFrame, inBody)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, wire.SNACFrame, wire.SNAC_0x10_0x04_BARTDownloadQuery) wire.SNACMessage); ok {
-		r0 = rf(ctx, inFrame, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, wire.SNACFrame, wire.SNAC_0x10_0x04_BARTDownloadQuery) wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, inFrame, inBody)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, wire.SNACFrame, wire.SNAC_0x10_0x04_BARTDownloadQuery) error); ok {
-		r1 = rf(ctx, inFrame, inBody)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, wire.SNACFrame, wire.SNAC_0x10_0x04_BARTDownloadQuery) error); ok {
+		r1 = returnFunc(ctx, inFrame, inBody)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -67,24 +80,40 @@ func (_e *mockBARTService_Expecter) RetrieveItem(ctx interface{}, inFrame interf
 
 func (_c *mockBARTService_RetrieveItem_Call) Run(run func(ctx context.Context, inFrame wire.SNACFrame, inBody wire.SNAC_0x10_0x04_BARTDownloadQuery)) *mockBARTService_RetrieveItem_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(wire.SNACFrame), args[2].(wire.SNAC_0x10_0x04_BARTDownloadQuery))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 wire.SNACFrame
+		if args[1] != nil {
+			arg1 = args[1].(wire.SNACFrame)
+		}
+		var arg2 wire.SNAC_0x10_0x04_BARTDownloadQuery
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNAC_0x10_0x04_BARTDownloadQuery)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockBARTService_RetrieveItem_Call) Return(_a0 wire.SNACMessage, _a1 error) *mockBARTService_RetrieveItem_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockBARTService_RetrieveItem_Call) Return(sNACMessage wire.SNACMessage, err error) *mockBARTService_RetrieveItem_Call {
+	_c.Call.Return(sNACMessage, err)
 	return _c
 }
 
-func (_c *mockBARTService_RetrieveItem_Call) RunAndReturn(run func(context.Context, wire.SNACFrame, wire.SNAC_0x10_0x04_BARTDownloadQuery) (wire.SNACMessage, error)) *mockBARTService_RetrieveItem_Call {
+func (_c *mockBARTService_RetrieveItem_Call) RunAndReturn(run func(ctx context.Context, inFrame wire.SNACFrame, inBody wire.SNAC_0x10_0x04_BARTDownloadQuery) (wire.SNACMessage, error)) *mockBARTService_RetrieveItem_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// RetrieveItemV2 provides a mock function with given fields: ctx, frame, body
-func (_m *mockBARTService) RetrieveItemV2(ctx context.Context, frame wire.SNACFrame, body wire.SNAC_0x10_0x06_BARTDownload2Query) ([]wire.SNACMessage, error) {
-	ret := _m.Called(ctx, frame, body)
+// RetrieveItemV2 provides a mock function for the type mockBARTService
+func (_mock *mockBARTService) RetrieveItemV2(ctx context.Context, frame wire.SNACFrame, body wire.SNAC_0x10_0x06_BARTDownload2Query) ([]wire.SNACMessage, error) {
+	ret := _mock.Called(ctx, frame, body)
 
 	if len(ret) == 0 {
 		panic("no return value specified for RetrieveItemV2")
@@ -92,23 +121,21 @@ func (_m *mockBARTService) RetrieveItemV2(ctx context.Context, frame wire.SNACFr
 
 	var r0 []wire.SNACMessage
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, wire.SNACFrame, wire.SNAC_0x10_0x06_BARTDownload2Query) ([]wire.SNACMessage, error)); ok {
-		return rf(ctx, frame, body)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, wire.SNACFrame, wire.SNAC_0x10_0x06_BARTDownload2Query) ([]wire.SNACMessage, error)); ok {
+		return returnFunc(ctx, frame, body)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, wire.SNACFrame, wire.SNAC_0x10_0x06_BARTDownload2Query) []wire.SNACMessage); ok {
-		r0 = rf(ctx, frame, body)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, wire.SNACFrame, wire.SNAC_0x10_0x06_BARTDownload2Query) []wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, frame, body)
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).([]wire.SNACMessage)
 		}
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, wire.SNACFrame, wire.SNAC_0x10_0x06_BARTDownload2Query) error); ok {
-		r1 = rf(ctx, frame, body)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, wire.SNACFrame, wire.SNAC_0x10_0x06_BARTDownload2Query) error); ok {
+		r1 = returnFunc(ctx, frame, body)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -127,24 +154,40 @@ func (_e *mockBARTService_Expecter) RetrieveItemV2(ctx interface{}, frame interf
 
 func (_c *mockBARTService_RetrieveItemV2_Call) Run(run func(ctx context.Context, frame wire.SNACFrame, body wire.SNAC_0x10_0x06_BARTDownload2Query)) *mockBARTService_RetrieveItemV2_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(wire.SNACFrame), args[2].(wire.SNAC_0x10_0x06_BARTDownload2Query))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 wire.SNACFrame
+		if args[1] != nil {
+			arg1 = args[1].(wire.SNACFrame)
+		}
+		var arg2 wire.SNAC_0x10_0x06_BARTDownload2Query
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNAC_0x10_0x06_BARTDownload2Query)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockBARTService_RetrieveItemV2_Call) Return(_a0 []wire.SNACMessage, _a1 error) *mockBARTService_RetrieveItemV2_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockBARTService_RetrieveItemV2_Call) Return(sNACMessages []wire.SNACMessage, err error) *mockBARTService_RetrieveItemV2_Call {
+	_c.Call.Return(sNACMessages, err)
 	return _c
 }
 
-func (_c *mockBARTService_RetrieveItemV2_Call) RunAndReturn(run func(context.Context, wire.SNACFrame, wire.SNAC_0x10_0x06_BARTDownload2Query) ([]wire.SNACMessage, error)) *mockBARTService_RetrieveItemV2_Call {
+func (_c *mockBARTService_RetrieveItemV2_Call) RunAndReturn(run func(ctx context.Context, frame wire.SNACFrame, body wire.SNAC_0x10_0x06_BARTDownload2Query) ([]wire.SNACMessage, error)) *mockBARTService_RetrieveItemV2_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// UpsertItem provides a mock function with given fields: ctx, sess, inFrame, inBody
-func (_m *mockBARTService) UpsertItem(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x10_0x02_BARTUploadQuery) (wire.SNACMessage, error) {
-	ret := _m.Called(ctx, sess, inFrame, inBody)
+// UpsertItem provides a mock function for the type mockBARTService
+func (_mock *mockBARTService) UpsertItem(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x10_0x02_BARTUploadQuery) (wire.SNACMessage, error) {
+	ret := _mock.Called(ctx, sess, inFrame, inBody)
 
 	if len(ret) == 0 {
 		panic("no return value specified for UpsertItem")
@@ -152,21 +195,19 @@ func (_m *mockBARTService) UpsertItem(ctx context.Context, sess *state.Session,
 
 	var r0 wire.SNACMessage
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x10_0x02_BARTUploadQuery) (wire.SNACMessage, error)); ok {
-		return rf(ctx, sess, inFrame, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x10_0x02_BARTUploadQuery) (wire.SNACMessage, error)); ok {
+		return returnFunc(ctx, sess, inFrame, inBody)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x10_0x02_BARTUploadQuery) wire.SNACMessage); ok {
-		r0 = rf(ctx, sess, inFrame, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x10_0x02_BARTUploadQuery) wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, sess, inFrame, inBody)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x10_0x02_BARTUploadQuery) error); ok {
-		r1 = rf(ctx, sess, inFrame, inBody)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x10_0x02_BARTUploadQuery) error); ok {
+		r1 = returnFunc(ctx, sess, inFrame, inBody)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -186,31 +227,38 @@ func (_e *mockBARTService_Expecter) UpsertItem(ctx interface{}, sess interface{}
 
 func (_c *mockBARTService_UpsertItem_Call) Run(run func(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x10_0x02_BARTUploadQuery)) *mockBARTService_UpsertItem_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(wire.SNACFrame), args[3].(wire.SNAC_0x10_0x02_BARTUploadQuery))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 wire.SNACFrame
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNACFrame)
+		}
+		var arg3 wire.SNAC_0x10_0x02_BARTUploadQuery
+		if args[3] != nil {
+			arg3 = args[3].(wire.SNAC_0x10_0x02_BARTUploadQuery)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+			arg3,
+		)
 	})
 	return _c
 }
 
-func (_c *mockBARTService_UpsertItem_Call) Return(_a0 wire.SNACMessage, _a1 error) *mockBARTService_UpsertItem_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockBARTService_UpsertItem_Call) Return(sNACMessage wire.SNACMessage, err error) *mockBARTService_UpsertItem_Call {
+	_c.Call.Return(sNACMessage, err)
 	return _c
 }
 
-func (_c *mockBARTService_UpsertItem_Call) RunAndReturn(run func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x10_0x02_BARTUploadQuery) (wire.SNACMessage, error)) *mockBARTService_UpsertItem_Call {
+func (_c *mockBARTService_UpsertItem_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x10_0x02_BARTUploadQuery) (wire.SNACMessage, error)) *mockBARTService_UpsertItem_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockBARTService creates a new instance of mockBARTService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockBARTService(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockBARTService {
-	mock := &mockBARTService{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 74 - 47
server/oscar/mock_buddy_list_registry_test.go

@@ -1,14 +1,30 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package oscar
 
 import (
-	context "context"
+	"context"
 
-	state "github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/state"
 	mock "github.com/stretchr/testify/mock"
 )
 
+// newMockBuddyListRegistry creates a new instance of mockBuddyListRegistry. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockBuddyListRegistry(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockBuddyListRegistry {
+	mock := &mockBuddyListRegistry{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockBuddyListRegistry is an autogenerated mock type for the BuddyListRegistry type
 type mockBuddyListRegistry struct {
 	mock.Mock
@@ -22,21 +38,20 @@ func (_m *mockBuddyListRegistry) EXPECT() *mockBuddyListRegistry_Expecter {
 	return &mockBuddyListRegistry_Expecter{mock: &_m.Mock}
 }
 
-// ClearBuddyListRegistry provides a mock function with given fields: ctx
-func (_m *mockBuddyListRegistry) ClearBuddyListRegistry(ctx context.Context) error {
-	ret := _m.Called(ctx)
+// ClearBuddyListRegistry provides a mock function for the type mockBuddyListRegistry
+func (_mock *mockBuddyListRegistry) ClearBuddyListRegistry(ctx context.Context) error {
+	ret := _mock.Called(ctx)
 
 	if len(ret) == 0 {
 		panic("no return value specified for ClearBuddyListRegistry")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context) error); ok {
-		r0 = rf(ctx)
+	if returnFunc, ok := ret.Get(0).(func(context.Context) error); ok {
+		r0 = returnFunc(ctx)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -53,36 +68,41 @@ func (_e *mockBuddyListRegistry_Expecter) ClearBuddyListRegistry(ctx interface{}
 
 func (_c *mockBuddyListRegistry_ClearBuddyListRegistry_Call) Run(run func(ctx context.Context)) *mockBuddyListRegistry_ClearBuddyListRegistry_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		run(
+			arg0,
+		)
 	})
 	return _c
 }
 
-func (_c *mockBuddyListRegistry_ClearBuddyListRegistry_Call) Return(_a0 error) *mockBuddyListRegistry_ClearBuddyListRegistry_Call {
-	_c.Call.Return(_a0)
+func (_c *mockBuddyListRegistry_ClearBuddyListRegistry_Call) Return(err error) *mockBuddyListRegistry_ClearBuddyListRegistry_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockBuddyListRegistry_ClearBuddyListRegistry_Call) RunAndReturn(run func(context.Context) error) *mockBuddyListRegistry_ClearBuddyListRegistry_Call {
+func (_c *mockBuddyListRegistry_ClearBuddyListRegistry_Call) RunAndReturn(run func(ctx context.Context) error) *mockBuddyListRegistry_ClearBuddyListRegistry_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// RegisterBuddyList provides a mock function with given fields: ctx, user
-func (_m *mockBuddyListRegistry) RegisterBuddyList(ctx context.Context, user state.IdentScreenName) error {
-	ret := _m.Called(ctx, user)
+// RegisterBuddyList provides a mock function for the type mockBuddyListRegistry
+func (_mock *mockBuddyListRegistry) RegisterBuddyList(ctx context.Context, user state.IdentScreenName) error {
+	ret := _mock.Called(ctx, user)
 
 	if len(ret) == 0 {
 		panic("no return value specified for RegisterBuddyList")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) error); ok {
-		r0 = rf(ctx, user)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) error); ok {
+		r0 = returnFunc(ctx, user)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -100,36 +120,46 @@ func (_e *mockBuddyListRegistry_Expecter) RegisterBuddyList(ctx interface{}, use
 
 func (_c *mockBuddyListRegistry_RegisterBuddyList_Call) Run(run func(ctx context.Context, user state.IdentScreenName)) *mockBuddyListRegistry_RegisterBuddyList_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockBuddyListRegistry_RegisterBuddyList_Call) Return(_a0 error) *mockBuddyListRegistry_RegisterBuddyList_Call {
-	_c.Call.Return(_a0)
+func (_c *mockBuddyListRegistry_RegisterBuddyList_Call) Return(err error) *mockBuddyListRegistry_RegisterBuddyList_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockBuddyListRegistry_RegisterBuddyList_Call) RunAndReturn(run func(context.Context, state.IdentScreenName) error) *mockBuddyListRegistry_RegisterBuddyList_Call {
+func (_c *mockBuddyListRegistry_RegisterBuddyList_Call) RunAndReturn(run func(ctx context.Context, user state.IdentScreenName) error) *mockBuddyListRegistry_RegisterBuddyList_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// UnregisterBuddyList provides a mock function with given fields: ctx, user
-func (_m *mockBuddyListRegistry) UnregisterBuddyList(ctx context.Context, user state.IdentScreenName) error {
-	ret := _m.Called(ctx, user)
+// UnregisterBuddyList provides a mock function for the type mockBuddyListRegistry
+func (_mock *mockBuddyListRegistry) UnregisterBuddyList(ctx context.Context, user state.IdentScreenName) error {
+	ret := _mock.Called(ctx, user)
 
 	if len(ret) == 0 {
 		panic("no return value specified for UnregisterBuddyList")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) error); ok {
-		r0 = rf(ctx, user)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) error); ok {
+		r0 = returnFunc(ctx, user)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -147,31 +177,28 @@ func (_e *mockBuddyListRegistry_Expecter) UnregisterBuddyList(ctx interface{}, u
 
 func (_c *mockBuddyListRegistry_UnregisterBuddyList_Call) Run(run func(ctx context.Context, user state.IdentScreenName)) *mockBuddyListRegistry_UnregisterBuddyList_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockBuddyListRegistry_UnregisterBuddyList_Call) Return(_a0 error) *mockBuddyListRegistry_UnregisterBuddyList_Call {
-	_c.Call.Return(_a0)
+func (_c *mockBuddyListRegistry_UnregisterBuddyList_Call) Return(err error) *mockBuddyListRegistry_UnregisterBuddyList_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockBuddyListRegistry_UnregisterBuddyList_Call) RunAndReturn(run func(context.Context, state.IdentScreenName) error) *mockBuddyListRegistry_UnregisterBuddyList_Call {
+func (_c *mockBuddyListRegistry_UnregisterBuddyList_Call) RunAndReturn(run func(ctx context.Context, user state.IdentScreenName) error) *mockBuddyListRegistry_UnregisterBuddyList_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockBuddyListRegistry creates a new instance of mockBuddyListRegistry. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockBuddyListRegistry(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockBuddyListRegistry {
-	mock := &mockBuddyListRegistry{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 144 - 73
server/oscar/mock_buddy_service_test.go

@@ -1,16 +1,31 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package oscar
 
 import (
-	context "context"
+	"context"
 
-	state "github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/wire"
 	mock "github.com/stretchr/testify/mock"
-
-	wire "github.com/mk6i/retro-aim-server/wire"
 )
 
+// newMockBuddyService creates a new instance of mockBuddyService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockBuddyService(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockBuddyService {
+	mock := &mockBuddyService{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockBuddyService is an autogenerated mock type for the BuddyService type
 type mockBuddyService struct {
 	mock.Mock
@@ -24,21 +39,20 @@ func (_m *mockBuddyService) EXPECT() *mockBuddyService_Expecter {
 	return &mockBuddyService_Expecter{mock: &_m.Mock}
 }
 
-// AddBuddies provides a mock function with given fields: ctx, sess, inBody
-func (_m *mockBuddyService) AddBuddies(ctx context.Context, sess *state.Session, inBody wire.SNAC_0x03_0x04_BuddyAddBuddies) error {
-	ret := _m.Called(ctx, sess, inBody)
+// AddBuddies provides a mock function for the type mockBuddyService
+func (_mock *mockBuddyService) AddBuddies(ctx context.Context, sess *state.Session, inBody wire.SNAC_0x03_0x04_BuddyAddBuddies) error {
+	ret := _mock.Called(ctx, sess, inBody)
 
 	if len(ret) == 0 {
 		panic("no return value specified for AddBuddies")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNAC_0x03_0x04_BuddyAddBuddies) error); ok {
-		r0 = rf(ctx, sess, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNAC_0x03_0x04_BuddyAddBuddies) error); ok {
+		r0 = returnFunc(ctx, sess, inBody)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -57,36 +71,51 @@ func (_e *mockBuddyService_Expecter) AddBuddies(ctx interface{}, sess interface{
 
 func (_c *mockBuddyService_AddBuddies_Call) Run(run func(ctx context.Context, sess *state.Session, inBody wire.SNAC_0x03_0x04_BuddyAddBuddies)) *mockBuddyService_AddBuddies_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(wire.SNAC_0x03_0x04_BuddyAddBuddies))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 wire.SNAC_0x03_0x04_BuddyAddBuddies
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNAC_0x03_0x04_BuddyAddBuddies)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockBuddyService_AddBuddies_Call) Return(_a0 error) *mockBuddyService_AddBuddies_Call {
-	_c.Call.Return(_a0)
+func (_c *mockBuddyService_AddBuddies_Call) Return(err error) *mockBuddyService_AddBuddies_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockBuddyService_AddBuddies_Call) RunAndReturn(run func(context.Context, *state.Session, wire.SNAC_0x03_0x04_BuddyAddBuddies) error) *mockBuddyService_AddBuddies_Call {
+func (_c *mockBuddyService_AddBuddies_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session, inBody wire.SNAC_0x03_0x04_BuddyAddBuddies) error) *mockBuddyService_AddBuddies_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// AddTempBuddies provides a mock function with given fields: ctx, sess, snac
-func (_m *mockBuddyService) AddTempBuddies(ctx context.Context, sess *state.Session, snac wire.SNAC_0x03_0x0F_BuddyAddTempBuddies) error {
-	ret := _m.Called(ctx, sess, snac)
+// AddTempBuddies provides a mock function for the type mockBuddyService
+func (_mock *mockBuddyService) AddTempBuddies(ctx context.Context, sess *state.Session, snac wire.SNAC_0x03_0x0F_BuddyAddTempBuddies) error {
+	ret := _mock.Called(ctx, sess, snac)
 
 	if len(ret) == 0 {
 		panic("no return value specified for AddTempBuddies")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNAC_0x03_0x0F_BuddyAddTempBuddies) error); ok {
-		r0 = rf(ctx, sess, snac)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNAC_0x03_0x0F_BuddyAddTempBuddies) error); ok {
+		r0 = returnFunc(ctx, sess, snac)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -105,36 +134,51 @@ func (_e *mockBuddyService_Expecter) AddTempBuddies(ctx interface{}, sess interf
 
 func (_c *mockBuddyService_AddTempBuddies_Call) Run(run func(ctx context.Context, sess *state.Session, snac wire.SNAC_0x03_0x0F_BuddyAddTempBuddies)) *mockBuddyService_AddTempBuddies_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(wire.SNAC_0x03_0x0F_BuddyAddTempBuddies))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 wire.SNAC_0x03_0x0F_BuddyAddTempBuddies
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNAC_0x03_0x0F_BuddyAddTempBuddies)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockBuddyService_AddTempBuddies_Call) Return(_a0 error) *mockBuddyService_AddTempBuddies_Call {
-	_c.Call.Return(_a0)
+func (_c *mockBuddyService_AddTempBuddies_Call) Return(err error) *mockBuddyService_AddTempBuddies_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockBuddyService_AddTempBuddies_Call) RunAndReturn(run func(context.Context, *state.Session, wire.SNAC_0x03_0x0F_BuddyAddTempBuddies) error) *mockBuddyService_AddTempBuddies_Call {
+func (_c *mockBuddyService_AddTempBuddies_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session, snac wire.SNAC_0x03_0x0F_BuddyAddTempBuddies) error) *mockBuddyService_AddTempBuddies_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// DelBuddies provides a mock function with given fields: _a0, sess, inBody
-func (_m *mockBuddyService) DelBuddies(_a0 context.Context, sess *state.Session, inBody wire.SNAC_0x03_0x05_BuddyDelBuddies) error {
-	ret := _m.Called(_a0, sess, inBody)
+// DelBuddies provides a mock function for the type mockBuddyService
+func (_mock *mockBuddyService) DelBuddies(context1 context.Context, sess *state.Session, inBody wire.SNAC_0x03_0x05_BuddyDelBuddies) error {
+	ret := _mock.Called(context1, sess, inBody)
 
 	if len(ret) == 0 {
 		panic("no return value specified for DelBuddies")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNAC_0x03_0x05_BuddyDelBuddies) error); ok {
-		r0 = rf(_a0, sess, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNAC_0x03_0x05_BuddyDelBuddies) error); ok {
+		r0 = returnFunc(context1, sess, inBody)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -144,45 +188,60 @@ type mockBuddyService_DelBuddies_Call struct {
 }
 
 // DelBuddies is a helper method to define mock.On call
-//   - _a0 context.Context
+//   - context1 context.Context
 //   - sess *state.Session
 //   - inBody wire.SNAC_0x03_0x05_BuddyDelBuddies
-func (_e *mockBuddyService_Expecter) DelBuddies(_a0 interface{}, sess interface{}, inBody interface{}) *mockBuddyService_DelBuddies_Call {
-	return &mockBuddyService_DelBuddies_Call{Call: _e.mock.On("DelBuddies", _a0, sess, inBody)}
+func (_e *mockBuddyService_Expecter) DelBuddies(context1 interface{}, sess interface{}, inBody interface{}) *mockBuddyService_DelBuddies_Call {
+	return &mockBuddyService_DelBuddies_Call{Call: _e.mock.On("DelBuddies", context1, sess, inBody)}
 }
 
-func (_c *mockBuddyService_DelBuddies_Call) Run(run func(_a0 context.Context, sess *state.Session, inBody wire.SNAC_0x03_0x05_BuddyDelBuddies)) *mockBuddyService_DelBuddies_Call {
+func (_c *mockBuddyService_DelBuddies_Call) Run(run func(context1 context.Context, sess *state.Session, inBody wire.SNAC_0x03_0x05_BuddyDelBuddies)) *mockBuddyService_DelBuddies_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(wire.SNAC_0x03_0x05_BuddyDelBuddies))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 wire.SNAC_0x03_0x05_BuddyDelBuddies
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNAC_0x03_0x05_BuddyDelBuddies)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockBuddyService_DelBuddies_Call) Return(_a0 error) *mockBuddyService_DelBuddies_Call {
-	_c.Call.Return(_a0)
+func (_c *mockBuddyService_DelBuddies_Call) Return(err error) *mockBuddyService_DelBuddies_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockBuddyService_DelBuddies_Call) RunAndReturn(run func(context.Context, *state.Session, wire.SNAC_0x03_0x05_BuddyDelBuddies) error) *mockBuddyService_DelBuddies_Call {
+func (_c *mockBuddyService_DelBuddies_Call) RunAndReturn(run func(context1 context.Context, sess *state.Session, inBody wire.SNAC_0x03_0x05_BuddyDelBuddies) error) *mockBuddyService_DelBuddies_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// DelTempBuddies provides a mock function with given fields: ctx, sess, snac
-func (_m *mockBuddyService) DelTempBuddies(ctx context.Context, sess *state.Session, snac wire.SNAC_0x03_0x10_BuddyDelTempBuddies) error {
-	ret := _m.Called(ctx, sess, snac)
+// DelTempBuddies provides a mock function for the type mockBuddyService
+func (_mock *mockBuddyService) DelTempBuddies(ctx context.Context, sess *state.Session, snac wire.SNAC_0x03_0x10_BuddyDelTempBuddies) error {
+	ret := _mock.Called(ctx, sess, snac)
 
 	if len(ret) == 0 {
 		panic("no return value specified for DelTempBuddies")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNAC_0x03_0x10_BuddyDelTempBuddies) error); ok {
-		r0 = rf(ctx, sess, snac)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNAC_0x03_0x10_BuddyDelTempBuddies) error); ok {
+		r0 = returnFunc(ctx, sess, snac)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -201,36 +260,51 @@ func (_e *mockBuddyService_Expecter) DelTempBuddies(ctx interface{}, sess interf
 
 func (_c *mockBuddyService_DelTempBuddies_Call) Run(run func(ctx context.Context, sess *state.Session, snac wire.SNAC_0x03_0x10_BuddyDelTempBuddies)) *mockBuddyService_DelTempBuddies_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(wire.SNAC_0x03_0x10_BuddyDelTempBuddies))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 wire.SNAC_0x03_0x10_BuddyDelTempBuddies
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNAC_0x03_0x10_BuddyDelTempBuddies)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockBuddyService_DelTempBuddies_Call) Return(_a0 error) *mockBuddyService_DelTempBuddies_Call {
-	_c.Call.Return(_a0)
+func (_c *mockBuddyService_DelTempBuddies_Call) Return(err error) *mockBuddyService_DelTempBuddies_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockBuddyService_DelTempBuddies_Call) RunAndReturn(run func(context.Context, *state.Session, wire.SNAC_0x03_0x10_BuddyDelTempBuddies) error) *mockBuddyService_DelTempBuddies_Call {
+func (_c *mockBuddyService_DelTempBuddies_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session, snac wire.SNAC_0x03_0x10_BuddyDelTempBuddies) error) *mockBuddyService_DelTempBuddies_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// RightsQuery provides a mock function with given fields: ctx, inFrame
-func (_m *mockBuddyService) RightsQuery(ctx context.Context, inFrame wire.SNACFrame) wire.SNACMessage {
-	ret := _m.Called(ctx, inFrame)
+// RightsQuery provides a mock function for the type mockBuddyService
+func (_mock *mockBuddyService) RightsQuery(ctx context.Context, inFrame wire.SNACFrame) wire.SNACMessage {
+	ret := _mock.Called(ctx, inFrame)
 
 	if len(ret) == 0 {
 		panic("no return value specified for RightsQuery")
 	}
 
 	var r0 wire.SNACMessage
-	if rf, ok := ret.Get(0).(func(context.Context, wire.SNACFrame) wire.SNACMessage); ok {
-		r0 = rf(ctx, inFrame)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, wire.SNACFrame) wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, inFrame)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
 	return r0
 }
 
@@ -248,31 +322,28 @@ func (_e *mockBuddyService_Expecter) RightsQuery(ctx interface{}, inFrame interf
 
 func (_c *mockBuddyService_RightsQuery_Call) Run(run func(ctx context.Context, inFrame wire.SNACFrame)) *mockBuddyService_RightsQuery_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(wire.SNACFrame))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 wire.SNACFrame
+		if args[1] != nil {
+			arg1 = args[1].(wire.SNACFrame)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockBuddyService_RightsQuery_Call) Return(_a0 wire.SNACMessage) *mockBuddyService_RightsQuery_Call {
-	_c.Call.Return(_a0)
+func (_c *mockBuddyService_RightsQuery_Call) Return(sNACMessage wire.SNACMessage) *mockBuddyService_RightsQuery_Call {
+	_c.Call.Return(sNACMessage)
 	return _c
 }
 
-func (_c *mockBuddyService_RightsQuery_Call) RunAndReturn(run func(context.Context, wire.SNACFrame) wire.SNACMessage) *mockBuddyService_RightsQuery_Call {
+func (_c *mockBuddyService_RightsQuery_Call) RunAndReturn(run func(ctx context.Context, inFrame wire.SNACFrame) wire.SNACMessage) *mockBuddyService_RightsQuery_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockBuddyService creates a new instance of mockBuddyService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockBuddyService(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockBuddyService {
-	mock := &mockBuddyService{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 132 - 74
server/oscar/mock_chat_nav_service_test.go

@@ -1,16 +1,31 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package oscar
 
 import (
-	context "context"
+	"context"
 
-	state "github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/wire"
 	mock "github.com/stretchr/testify/mock"
-
-	wire "github.com/mk6i/retro-aim-server/wire"
 )
 
+// newMockChatNavService creates a new instance of mockChatNavService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockChatNavService(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockChatNavService {
+	mock := &mockChatNavService{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockChatNavService is an autogenerated mock type for the ChatNavService type
 type mockChatNavService struct {
 	mock.Mock
@@ -24,9 +39,9 @@ func (_m *mockChatNavService) EXPECT() *mockChatNavService_Expecter {
 	return &mockChatNavService_Expecter{mock: &_m.Mock}
 }
 
-// CreateRoom provides a mock function with given fields: ctx, sess, inFrame, inBody
-func (_m *mockChatNavService) CreateRoom(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x0E_0x02_ChatRoomInfoUpdate) (wire.SNACMessage, error) {
-	ret := _m.Called(ctx, sess, inFrame, inBody)
+// CreateRoom provides a mock function for the type mockChatNavService
+func (_mock *mockChatNavService) CreateRoom(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x0E_0x02_ChatRoomInfoUpdate) (wire.SNACMessage, error) {
+	ret := _mock.Called(ctx, sess, inFrame, inBody)
 
 	if len(ret) == 0 {
 		panic("no return value specified for CreateRoom")
@@ -34,21 +49,19 @@ func (_m *mockChatNavService) CreateRoom(ctx context.Context, sess *state.Sessio
 
 	var r0 wire.SNACMessage
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x0E_0x02_ChatRoomInfoUpdate) (wire.SNACMessage, error)); ok {
-		return rf(ctx, sess, inFrame, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x0E_0x02_ChatRoomInfoUpdate) (wire.SNACMessage, error)); ok {
+		return returnFunc(ctx, sess, inFrame, inBody)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x0E_0x02_ChatRoomInfoUpdate) wire.SNACMessage); ok {
-		r0 = rf(ctx, sess, inFrame, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x0E_0x02_ChatRoomInfoUpdate) wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, sess, inFrame, inBody)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x0E_0x02_ChatRoomInfoUpdate) error); ok {
-		r1 = rf(ctx, sess, inFrame, inBody)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x0E_0x02_ChatRoomInfoUpdate) error); ok {
+		r1 = returnFunc(ctx, sess, inFrame, inBody)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -68,24 +81,45 @@ func (_e *mockChatNavService_Expecter) CreateRoom(ctx interface{}, sess interfac
 
 func (_c *mockChatNavService_CreateRoom_Call) Run(run func(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x0E_0x02_ChatRoomInfoUpdate)) *mockChatNavService_CreateRoom_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(wire.SNACFrame), args[3].(wire.SNAC_0x0E_0x02_ChatRoomInfoUpdate))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 wire.SNACFrame
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNACFrame)
+		}
+		var arg3 wire.SNAC_0x0E_0x02_ChatRoomInfoUpdate
+		if args[3] != nil {
+			arg3 = args[3].(wire.SNAC_0x0E_0x02_ChatRoomInfoUpdate)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+			arg3,
+		)
 	})
 	return _c
 }
 
-func (_c *mockChatNavService_CreateRoom_Call) Return(_a0 wire.SNACMessage, _a1 error) *mockChatNavService_CreateRoom_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockChatNavService_CreateRoom_Call) Return(sNACMessage wire.SNACMessage, err error) *mockChatNavService_CreateRoom_Call {
+	_c.Call.Return(sNACMessage, err)
 	return _c
 }
 
-func (_c *mockChatNavService_CreateRoom_Call) RunAndReturn(run func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x0E_0x02_ChatRoomInfoUpdate) (wire.SNACMessage, error)) *mockChatNavService_CreateRoom_Call {
+func (_c *mockChatNavService_CreateRoom_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x0E_0x02_ChatRoomInfoUpdate) (wire.SNACMessage, error)) *mockChatNavService_CreateRoom_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// ExchangeInfo provides a mock function with given fields: ctx, inFrame, inBody
-func (_m *mockChatNavService) ExchangeInfo(ctx context.Context, inFrame wire.SNACFrame, inBody wire.SNAC_0x0D_0x03_ChatNavRequestExchangeInfo) (wire.SNACMessage, error) {
-	ret := _m.Called(ctx, inFrame, inBody)
+// ExchangeInfo provides a mock function for the type mockChatNavService
+func (_mock *mockChatNavService) ExchangeInfo(ctx context.Context, inFrame wire.SNACFrame, inBody wire.SNAC_0x0D_0x03_ChatNavRequestExchangeInfo) (wire.SNACMessage, error) {
+	ret := _mock.Called(ctx, inFrame, inBody)
 
 	if len(ret) == 0 {
 		panic("no return value specified for ExchangeInfo")
@@ -93,21 +127,19 @@ func (_m *mockChatNavService) ExchangeInfo(ctx context.Context, inFrame wire.SNA
 
 	var r0 wire.SNACMessage
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, wire.SNACFrame, wire.SNAC_0x0D_0x03_ChatNavRequestExchangeInfo) (wire.SNACMessage, error)); ok {
-		return rf(ctx, inFrame, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, wire.SNACFrame, wire.SNAC_0x0D_0x03_ChatNavRequestExchangeInfo) (wire.SNACMessage, error)); ok {
+		return returnFunc(ctx, inFrame, inBody)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, wire.SNACFrame, wire.SNAC_0x0D_0x03_ChatNavRequestExchangeInfo) wire.SNACMessage); ok {
-		r0 = rf(ctx, inFrame, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, wire.SNACFrame, wire.SNAC_0x0D_0x03_ChatNavRequestExchangeInfo) wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, inFrame, inBody)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, wire.SNACFrame, wire.SNAC_0x0D_0x03_ChatNavRequestExchangeInfo) error); ok {
-		r1 = rf(ctx, inFrame, inBody)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, wire.SNACFrame, wire.SNAC_0x0D_0x03_ChatNavRequestExchangeInfo) error); ok {
+		r1 = returnFunc(ctx, inFrame, inBody)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -126,36 +158,51 @@ func (_e *mockChatNavService_Expecter) ExchangeInfo(ctx interface{}, inFrame int
 
 func (_c *mockChatNavService_ExchangeInfo_Call) Run(run func(ctx context.Context, inFrame wire.SNACFrame, inBody wire.SNAC_0x0D_0x03_ChatNavRequestExchangeInfo)) *mockChatNavService_ExchangeInfo_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(wire.SNACFrame), args[2].(wire.SNAC_0x0D_0x03_ChatNavRequestExchangeInfo))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 wire.SNACFrame
+		if args[1] != nil {
+			arg1 = args[1].(wire.SNACFrame)
+		}
+		var arg2 wire.SNAC_0x0D_0x03_ChatNavRequestExchangeInfo
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNAC_0x0D_0x03_ChatNavRequestExchangeInfo)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockChatNavService_ExchangeInfo_Call) Return(_a0 wire.SNACMessage, _a1 error) *mockChatNavService_ExchangeInfo_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockChatNavService_ExchangeInfo_Call) Return(sNACMessage wire.SNACMessage, err error) *mockChatNavService_ExchangeInfo_Call {
+	_c.Call.Return(sNACMessage, err)
 	return _c
 }
 
-func (_c *mockChatNavService_ExchangeInfo_Call) RunAndReturn(run func(context.Context, wire.SNACFrame, wire.SNAC_0x0D_0x03_ChatNavRequestExchangeInfo) (wire.SNACMessage, error)) *mockChatNavService_ExchangeInfo_Call {
+func (_c *mockChatNavService_ExchangeInfo_Call) RunAndReturn(run func(ctx context.Context, inFrame wire.SNACFrame, inBody wire.SNAC_0x0D_0x03_ChatNavRequestExchangeInfo) (wire.SNACMessage, error)) *mockChatNavService_ExchangeInfo_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// RequestChatRights provides a mock function with given fields: ctx, inFrame
-func (_m *mockChatNavService) RequestChatRights(ctx context.Context, inFrame wire.SNACFrame) wire.SNACMessage {
-	ret := _m.Called(ctx, inFrame)
+// RequestChatRights provides a mock function for the type mockChatNavService
+func (_mock *mockChatNavService) RequestChatRights(ctx context.Context, inFrame wire.SNACFrame) wire.SNACMessage {
+	ret := _mock.Called(ctx, inFrame)
 
 	if len(ret) == 0 {
 		panic("no return value specified for RequestChatRights")
 	}
 
 	var r0 wire.SNACMessage
-	if rf, ok := ret.Get(0).(func(context.Context, wire.SNACFrame) wire.SNACMessage); ok {
-		r0 = rf(ctx, inFrame)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, wire.SNACFrame) wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, inFrame)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
 	return r0
 }
 
@@ -173,24 +220,35 @@ func (_e *mockChatNavService_Expecter) RequestChatRights(ctx interface{}, inFram
 
 func (_c *mockChatNavService_RequestChatRights_Call) Run(run func(ctx context.Context, inFrame wire.SNACFrame)) *mockChatNavService_RequestChatRights_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(wire.SNACFrame))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 wire.SNACFrame
+		if args[1] != nil {
+			arg1 = args[1].(wire.SNACFrame)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockChatNavService_RequestChatRights_Call) Return(_a0 wire.SNACMessage) *mockChatNavService_RequestChatRights_Call {
-	_c.Call.Return(_a0)
+func (_c *mockChatNavService_RequestChatRights_Call) Return(sNACMessage wire.SNACMessage) *mockChatNavService_RequestChatRights_Call {
+	_c.Call.Return(sNACMessage)
 	return _c
 }
 
-func (_c *mockChatNavService_RequestChatRights_Call) RunAndReturn(run func(context.Context, wire.SNACFrame) wire.SNACMessage) *mockChatNavService_RequestChatRights_Call {
+func (_c *mockChatNavService_RequestChatRights_Call) RunAndReturn(run func(ctx context.Context, inFrame wire.SNACFrame) wire.SNACMessage) *mockChatNavService_RequestChatRights_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// RequestRoomInfo provides a mock function with given fields: ctx, inFrame, inBody
-func (_m *mockChatNavService) RequestRoomInfo(ctx context.Context, inFrame wire.SNACFrame, inBody wire.SNAC_0x0D_0x04_ChatNavRequestRoomInfo) (wire.SNACMessage, error) {
-	ret := _m.Called(ctx, inFrame, inBody)
+// RequestRoomInfo provides a mock function for the type mockChatNavService
+func (_mock *mockChatNavService) RequestRoomInfo(ctx context.Context, inFrame wire.SNACFrame, inBody wire.SNAC_0x0D_0x04_ChatNavRequestRoomInfo) (wire.SNACMessage, error) {
+	ret := _mock.Called(ctx, inFrame, inBody)
 
 	if len(ret) == 0 {
 		panic("no return value specified for RequestRoomInfo")
@@ -198,21 +256,19 @@ func (_m *mockChatNavService) RequestRoomInfo(ctx context.Context, inFrame wire.
 
 	var r0 wire.SNACMessage
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, wire.SNACFrame, wire.SNAC_0x0D_0x04_ChatNavRequestRoomInfo) (wire.SNACMessage, error)); ok {
-		return rf(ctx, inFrame, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, wire.SNACFrame, wire.SNAC_0x0D_0x04_ChatNavRequestRoomInfo) (wire.SNACMessage, error)); ok {
+		return returnFunc(ctx, inFrame, inBody)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, wire.SNACFrame, wire.SNAC_0x0D_0x04_ChatNavRequestRoomInfo) wire.SNACMessage); ok {
-		r0 = rf(ctx, inFrame, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, wire.SNACFrame, wire.SNAC_0x0D_0x04_ChatNavRequestRoomInfo) wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, inFrame, inBody)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, wire.SNACFrame, wire.SNAC_0x0D_0x04_ChatNavRequestRoomInfo) error); ok {
-		r1 = rf(ctx, inFrame, inBody)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, wire.SNACFrame, wire.SNAC_0x0D_0x04_ChatNavRequestRoomInfo) error); ok {
+		r1 = returnFunc(ctx, inFrame, inBody)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -231,31 +287,33 @@ func (_e *mockChatNavService_Expecter) RequestRoomInfo(ctx interface{}, inFrame
 
 func (_c *mockChatNavService_RequestRoomInfo_Call) Run(run func(ctx context.Context, inFrame wire.SNACFrame, inBody wire.SNAC_0x0D_0x04_ChatNavRequestRoomInfo)) *mockChatNavService_RequestRoomInfo_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(wire.SNACFrame), args[2].(wire.SNAC_0x0D_0x04_ChatNavRequestRoomInfo))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 wire.SNACFrame
+		if args[1] != nil {
+			arg1 = args[1].(wire.SNACFrame)
+		}
+		var arg2 wire.SNAC_0x0D_0x04_ChatNavRequestRoomInfo
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNAC_0x0D_0x04_ChatNavRequestRoomInfo)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockChatNavService_RequestRoomInfo_Call) Return(_a0 wire.SNACMessage, _a1 error) *mockChatNavService_RequestRoomInfo_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockChatNavService_RequestRoomInfo_Call) Return(sNACMessage wire.SNACMessage, err error) *mockChatNavService_RequestRoomInfo_Call {
+	_c.Call.Return(sNACMessage, err)
 	return _c
 }
 
-func (_c *mockChatNavService_RequestRoomInfo_Call) RunAndReturn(run func(context.Context, wire.SNACFrame, wire.SNAC_0x0D_0x04_ChatNavRequestRoomInfo) (wire.SNACMessage, error)) *mockChatNavService_RequestRoomInfo_Call {
+func (_c *mockChatNavService_RequestRoomInfo_Call) RunAndReturn(run func(ctx context.Context, inFrame wire.SNACFrame, inBody wire.SNAC_0x0D_0x04_ChatNavRequestRoomInfo) (wire.SNACMessage, error)) *mockChatNavService_RequestRoomInfo_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockChatNavService creates a new instance of mockChatNavService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockChatNavService(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockChatNavService {
-	mock := &mockChatNavService{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 54 - 34
server/oscar/mock_chat_service_test.go

@@ -1,16 +1,31 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package oscar
 
 import (
-	context "context"
+	"context"
 
-	state "github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/wire"
 	mock "github.com/stretchr/testify/mock"
-
-	wire "github.com/mk6i/retro-aim-server/wire"
 )
 
+// newMockChatService creates a new instance of mockChatService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockChatService(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockChatService {
+	mock := &mockChatService{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockChatService is an autogenerated mock type for the ChatService type
 type mockChatService struct {
 	mock.Mock
@@ -24,9 +39,9 @@ func (_m *mockChatService) EXPECT() *mockChatService_Expecter {
 	return &mockChatService_Expecter{mock: &_m.Mock}
 }
 
-// ChannelMsgToHost provides a mock function with given fields: ctx, sess, inFrame, inBody
-func (_m *mockChatService) ChannelMsgToHost(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x0E_0x05_ChatChannelMsgToHost) (*wire.SNACMessage, error) {
-	ret := _m.Called(ctx, sess, inFrame, inBody)
+// ChannelMsgToHost provides a mock function for the type mockChatService
+func (_mock *mockChatService) ChannelMsgToHost(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x0E_0x05_ChatChannelMsgToHost) (*wire.SNACMessage, error) {
+	ret := _mock.Called(ctx, sess, inFrame, inBody)
 
 	if len(ret) == 0 {
 		panic("no return value specified for ChannelMsgToHost")
@@ -34,23 +49,21 @@ func (_m *mockChatService) ChannelMsgToHost(ctx context.Context, sess *state.Ses
 
 	var r0 *wire.SNACMessage
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x0E_0x05_ChatChannelMsgToHost) (*wire.SNACMessage, error)); ok {
-		return rf(ctx, sess, inFrame, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x0E_0x05_ChatChannelMsgToHost) (*wire.SNACMessage, error)); ok {
+		return returnFunc(ctx, sess, inFrame, inBody)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x0E_0x05_ChatChannelMsgToHost) *wire.SNACMessage); ok {
-		r0 = rf(ctx, sess, inFrame, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x0E_0x05_ChatChannelMsgToHost) *wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, sess, inFrame, inBody)
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).(*wire.SNACMessage)
 		}
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x0E_0x05_ChatChannelMsgToHost) error); ok {
-		r1 = rf(ctx, sess, inFrame, inBody)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x0E_0x05_ChatChannelMsgToHost) error); ok {
+		r1 = returnFunc(ctx, sess, inFrame, inBody)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -70,31 +83,38 @@ func (_e *mockChatService_Expecter) ChannelMsgToHost(ctx interface{}, sess inter
 
 func (_c *mockChatService_ChannelMsgToHost_Call) Run(run func(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x0E_0x05_ChatChannelMsgToHost)) *mockChatService_ChannelMsgToHost_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(wire.SNACFrame), args[3].(wire.SNAC_0x0E_0x05_ChatChannelMsgToHost))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 wire.SNACFrame
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNACFrame)
+		}
+		var arg3 wire.SNAC_0x0E_0x05_ChatChannelMsgToHost
+		if args[3] != nil {
+			arg3 = args[3].(wire.SNAC_0x0E_0x05_ChatChannelMsgToHost)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+			arg3,
+		)
 	})
 	return _c
 }
 
-func (_c *mockChatService_ChannelMsgToHost_Call) Return(_a0 *wire.SNACMessage, _a1 error) *mockChatService_ChannelMsgToHost_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockChatService_ChannelMsgToHost_Call) Return(sNACMessage *wire.SNACMessage, err error) *mockChatService_ChannelMsgToHost_Call {
+	_c.Call.Return(sNACMessage, err)
 	return _c
 }
 
-func (_c *mockChatService_ChannelMsgToHost_Call) RunAndReturn(run func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x0E_0x05_ChatChannelMsgToHost) (*wire.SNACMessage, error)) *mockChatService_ChannelMsgToHost_Call {
+func (_c *mockChatService_ChannelMsgToHost_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x0E_0x05_ChatChannelMsgToHost) (*wire.SNACMessage, error)) *mockChatService_ChannelMsgToHost_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockChatService creates a new instance of mockChatService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockChatService(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockChatService {
-	mock := &mockChatService{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 30 - 21
server/oscar/mock_chat_session_manager_test.go

@@ -1,12 +1,28 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package oscar
 
 import (
-	state "github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/state"
 	mock "github.com/stretchr/testify/mock"
 )
 
+// newMockChatSessionManager creates a new instance of mockChatSessionManager. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockChatSessionManager(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockChatSessionManager {
+	mock := &mockChatSessionManager{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockChatSessionManager is an autogenerated mock type for the ChatSessionManager type
 type mockChatSessionManager struct {
 	mock.Mock
@@ -20,9 +36,10 @@ func (_m *mockChatSessionManager) EXPECT() *mockChatSessionManager_Expecter {
 	return &mockChatSessionManager_Expecter{mock: &_m.Mock}
 }
 
-// RemoveUserFromAllChats provides a mock function with given fields: user
-func (_m *mockChatSessionManager) RemoveUserFromAllChats(user state.IdentScreenName) {
-	_m.Called(user)
+// RemoveUserFromAllChats provides a mock function for the type mockChatSessionManager
+func (_mock *mockChatSessionManager) RemoveUserFromAllChats(user state.IdentScreenName) {
+	_mock.Called(user)
+	return
 }
 
 // mockChatSessionManager_RemoveUserFromAllChats_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'RemoveUserFromAllChats'
@@ -38,7 +55,13 @@ func (_e *mockChatSessionManager_Expecter) RemoveUserFromAllChats(user interface
 
 func (_c *mockChatSessionManager_RemoveUserFromAllChats_Call) Run(run func(user state.IdentScreenName)) *mockChatSessionManager_RemoveUserFromAllChats_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(state.IdentScreenName))
+		var arg0 state.IdentScreenName
+		if args[0] != nil {
+			arg0 = args[0].(state.IdentScreenName)
+		}
+		run(
+			arg0,
+		)
 	})
 	return _c
 }
@@ -48,21 +71,7 @@ func (_c *mockChatSessionManager_RemoveUserFromAllChats_Call) Return() *mockChat
 	return _c
 }
 
-func (_c *mockChatSessionManager_RemoveUserFromAllChats_Call) RunAndReturn(run func(state.IdentScreenName)) *mockChatSessionManager_RemoveUserFromAllChats_Call {
+func (_c *mockChatSessionManager_RemoveUserFromAllChats_Call) RunAndReturn(run func(user state.IdentScreenName)) *mockChatSessionManager_RemoveUserFromAllChats_Call {
 	_c.Run(run)
 	return _c
 }
-
-// newMockChatSessionManager creates a new instance of mockChatSessionManager. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockChatSessionManager(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockChatSessionManager {
-	mock := &mockChatSessionManager{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 65 - 39
server/oscar/mock_departure_notifier_test.go

@@ -1,16 +1,31 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package oscar
 
 import (
-	context "context"
+	"context"
 
-	state "github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/wire"
 	mock "github.com/stretchr/testify/mock"
-
-	wire "github.com/mk6i/retro-aim-server/wire"
 )
 
+// newMockDepartureNotifier creates a new instance of mockDepartureNotifier. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockDepartureNotifier(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockDepartureNotifier {
+	mock := &mockDepartureNotifier{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockDepartureNotifier is an autogenerated mock type for the DepartureNotifier type
 type mockDepartureNotifier struct {
 	mock.Mock
@@ -24,21 +39,20 @@ func (_m *mockDepartureNotifier) EXPECT() *mockDepartureNotifier_Expecter {
 	return &mockDepartureNotifier_Expecter{mock: &_m.Mock}
 }
 
-// BroadcastBuddyArrived provides a mock function with given fields: ctx, screenName, userInfo
-func (_m *mockDepartureNotifier) BroadcastBuddyArrived(ctx context.Context, screenName state.IdentScreenName, userInfo wire.TLVUserInfo) error {
-	ret := _m.Called(ctx, screenName, userInfo)
+// BroadcastBuddyArrived provides a mock function for the type mockDepartureNotifier
+func (_mock *mockDepartureNotifier) BroadcastBuddyArrived(ctx context.Context, screenName state.IdentScreenName, userInfo wire.TLVUserInfo) error {
+	ret := _mock.Called(ctx, screenName, userInfo)
 
 	if len(ret) == 0 {
 		panic("no return value specified for BroadcastBuddyArrived")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, wire.TLVUserInfo) error); ok {
-		r0 = rf(ctx, screenName, userInfo)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, wire.TLVUserInfo) error); ok {
+		r0 = returnFunc(ctx, screenName, userInfo)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -57,36 +71,51 @@ func (_e *mockDepartureNotifier_Expecter) BroadcastBuddyArrived(ctx interface{},
 
 func (_c *mockDepartureNotifier_BroadcastBuddyArrived_Call) Run(run func(ctx context.Context, screenName state.IdentScreenName, userInfo wire.TLVUserInfo)) *mockDepartureNotifier_BroadcastBuddyArrived_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName), args[2].(wire.TLVUserInfo))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		var arg2 wire.TLVUserInfo
+		if args[2] != nil {
+			arg2 = args[2].(wire.TLVUserInfo)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockDepartureNotifier_BroadcastBuddyArrived_Call) Return(_a0 error) *mockDepartureNotifier_BroadcastBuddyArrived_Call {
-	_c.Call.Return(_a0)
+func (_c *mockDepartureNotifier_BroadcastBuddyArrived_Call) Return(err error) *mockDepartureNotifier_BroadcastBuddyArrived_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockDepartureNotifier_BroadcastBuddyArrived_Call) RunAndReturn(run func(context.Context, state.IdentScreenName, wire.TLVUserInfo) error) *mockDepartureNotifier_BroadcastBuddyArrived_Call {
+func (_c *mockDepartureNotifier_BroadcastBuddyArrived_Call) RunAndReturn(run func(ctx context.Context, screenName state.IdentScreenName, userInfo wire.TLVUserInfo) error) *mockDepartureNotifier_BroadcastBuddyArrived_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// BroadcastBuddyDeparted provides a mock function with given fields: ctx, sess
-func (_m *mockDepartureNotifier) BroadcastBuddyDeparted(ctx context.Context, sess *state.Session) error {
-	ret := _m.Called(ctx, sess)
+// BroadcastBuddyDeparted provides a mock function for the type mockDepartureNotifier
+func (_mock *mockDepartureNotifier) BroadcastBuddyDeparted(ctx context.Context, sess *state.Session) error {
+	ret := _mock.Called(ctx, sess)
 
 	if len(ret) == 0 {
 		panic("no return value specified for BroadcastBuddyDeparted")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session) error); ok {
-		r0 = rf(ctx, sess)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session) error); ok {
+		r0 = returnFunc(ctx, sess)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -104,31 +133,28 @@ func (_e *mockDepartureNotifier_Expecter) BroadcastBuddyDeparted(ctx interface{}
 
 func (_c *mockDepartureNotifier_BroadcastBuddyDeparted_Call) Run(run func(ctx context.Context, sess *state.Session)) *mockDepartureNotifier_BroadcastBuddyDeparted_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockDepartureNotifier_BroadcastBuddyDeparted_Call) Return(_a0 error) *mockDepartureNotifier_BroadcastBuddyDeparted_Call {
-	_c.Call.Return(_a0)
+func (_c *mockDepartureNotifier_BroadcastBuddyDeparted_Call) Return(err error) *mockDepartureNotifier_BroadcastBuddyDeparted_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockDepartureNotifier_BroadcastBuddyDeparted_Call) RunAndReturn(run func(context.Context, *state.Session) error) *mockDepartureNotifier_BroadcastBuddyDeparted_Call {
+func (_c *mockDepartureNotifier_BroadcastBuddyDeparted_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session) error) *mockDepartureNotifier_BroadcastBuddyDeparted_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockDepartureNotifier creates a new instance of mockDepartureNotifier. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockDepartureNotifier(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockDepartureNotifier {
-	mock := &mockDepartureNotifier{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 243 - 114
server/oscar/mock_feedbag_service_test.go

@@ -1,16 +1,31 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package oscar
 
 import (
-	context "context"
+	"context"
 
-	state "github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/wire"
 	mock "github.com/stretchr/testify/mock"
-
-	wire "github.com/mk6i/retro-aim-server/wire"
 )
 
+// newMockFeedbagService creates a new instance of mockFeedbagService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockFeedbagService(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockFeedbagService {
+	mock := &mockFeedbagService{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockFeedbagService is an autogenerated mock type for the FeedbagService type
 type mockFeedbagService struct {
 	mock.Mock
@@ -24,9 +39,9 @@ func (_m *mockFeedbagService) EXPECT() *mockFeedbagService_Expecter {
 	return &mockFeedbagService_Expecter{mock: &_m.Mock}
 }
 
-// DeleteItem provides a mock function with given fields: ctx, sess, inFrame, inBody
-func (_m *mockFeedbagService) DeleteItem(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x13_0x0A_FeedbagDeleteItem) (wire.SNACMessage, error) {
-	ret := _m.Called(ctx, sess, inFrame, inBody)
+// DeleteItem provides a mock function for the type mockFeedbagService
+func (_mock *mockFeedbagService) DeleteItem(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x13_0x0A_FeedbagDeleteItem) (wire.SNACMessage, error) {
+	ret := _mock.Called(ctx, sess, inFrame, inBody)
 
 	if len(ret) == 0 {
 		panic("no return value specified for DeleteItem")
@@ -34,21 +49,19 @@ func (_m *mockFeedbagService) DeleteItem(ctx context.Context, sess *state.Sessio
 
 	var r0 wire.SNACMessage
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x13_0x0A_FeedbagDeleteItem) (wire.SNACMessage, error)); ok {
-		return rf(ctx, sess, inFrame, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x13_0x0A_FeedbagDeleteItem) (wire.SNACMessage, error)); ok {
+		return returnFunc(ctx, sess, inFrame, inBody)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x13_0x0A_FeedbagDeleteItem) wire.SNACMessage); ok {
-		r0 = rf(ctx, sess, inFrame, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x13_0x0A_FeedbagDeleteItem) wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, sess, inFrame, inBody)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x13_0x0A_FeedbagDeleteItem) error); ok {
-		r1 = rf(ctx, sess, inFrame, inBody)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x13_0x0A_FeedbagDeleteItem) error); ok {
+		r1 = returnFunc(ctx, sess, inFrame, inBody)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -68,24 +81,45 @@ func (_e *mockFeedbagService_Expecter) DeleteItem(ctx interface{}, sess interfac
 
 func (_c *mockFeedbagService_DeleteItem_Call) Run(run func(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x13_0x0A_FeedbagDeleteItem)) *mockFeedbagService_DeleteItem_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(wire.SNACFrame), args[3].(wire.SNAC_0x13_0x0A_FeedbagDeleteItem))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 wire.SNACFrame
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNACFrame)
+		}
+		var arg3 wire.SNAC_0x13_0x0A_FeedbagDeleteItem
+		if args[3] != nil {
+			arg3 = args[3].(wire.SNAC_0x13_0x0A_FeedbagDeleteItem)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+			arg3,
+		)
 	})
 	return _c
 }
 
-func (_c *mockFeedbagService_DeleteItem_Call) Return(_a0 wire.SNACMessage, _a1 error) *mockFeedbagService_DeleteItem_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockFeedbagService_DeleteItem_Call) Return(sNACMessage wire.SNACMessage, err error) *mockFeedbagService_DeleteItem_Call {
+	_c.Call.Return(sNACMessage, err)
 	return _c
 }
 
-func (_c *mockFeedbagService_DeleteItem_Call) RunAndReturn(run func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x13_0x0A_FeedbagDeleteItem) (wire.SNACMessage, error)) *mockFeedbagService_DeleteItem_Call {
+func (_c *mockFeedbagService_DeleteItem_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x13_0x0A_FeedbagDeleteItem) (wire.SNACMessage, error)) *mockFeedbagService_DeleteItem_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// Query provides a mock function with given fields: ctx, sess, inFrame
-func (_m *mockFeedbagService) Query(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame) (wire.SNACMessage, error) {
-	ret := _m.Called(ctx, sess, inFrame)
+// Query provides a mock function for the type mockFeedbagService
+func (_mock *mockFeedbagService) Query(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame) (wire.SNACMessage, error) {
+	ret := _mock.Called(ctx, sess, inFrame)
 
 	if len(ret) == 0 {
 		panic("no return value specified for Query")
@@ -93,21 +127,19 @@ func (_m *mockFeedbagService) Query(ctx context.Context, sess *state.Session, in
 
 	var r0 wire.SNACMessage
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame) (wire.SNACMessage, error)); ok {
-		return rf(ctx, sess, inFrame)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame) (wire.SNACMessage, error)); ok {
+		return returnFunc(ctx, sess, inFrame)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame) wire.SNACMessage); ok {
-		r0 = rf(ctx, sess, inFrame)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame) wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, sess, inFrame)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, *state.Session, wire.SNACFrame) error); ok {
-		r1 = rf(ctx, sess, inFrame)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, *state.Session, wire.SNACFrame) error); ok {
+		r1 = returnFunc(ctx, sess, inFrame)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -126,24 +158,40 @@ func (_e *mockFeedbagService_Expecter) Query(ctx interface{}, sess interface{},
 
 func (_c *mockFeedbagService_Query_Call) Run(run func(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame)) *mockFeedbagService_Query_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(wire.SNACFrame))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 wire.SNACFrame
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNACFrame)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockFeedbagService_Query_Call) Return(_a0 wire.SNACMessage, _a1 error) *mockFeedbagService_Query_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockFeedbagService_Query_Call) Return(sNACMessage wire.SNACMessage, err error) *mockFeedbagService_Query_Call {
+	_c.Call.Return(sNACMessage, err)
 	return _c
 }
 
-func (_c *mockFeedbagService_Query_Call) RunAndReturn(run func(context.Context, *state.Session, wire.SNACFrame) (wire.SNACMessage, error)) *mockFeedbagService_Query_Call {
+func (_c *mockFeedbagService_Query_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame) (wire.SNACMessage, error)) *mockFeedbagService_Query_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// QueryIfModified provides a mock function with given fields: ctx, sess, inFrame, inBody
-func (_m *mockFeedbagService) QueryIfModified(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x13_0x05_FeedbagQueryIfModified) (wire.SNACMessage, error) {
-	ret := _m.Called(ctx, sess, inFrame, inBody)
+// QueryIfModified provides a mock function for the type mockFeedbagService
+func (_mock *mockFeedbagService) QueryIfModified(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x13_0x05_FeedbagQueryIfModified) (wire.SNACMessage, error) {
+	ret := _mock.Called(ctx, sess, inFrame, inBody)
 
 	if len(ret) == 0 {
 		panic("no return value specified for QueryIfModified")
@@ -151,21 +199,19 @@ func (_m *mockFeedbagService) QueryIfModified(ctx context.Context, sess *state.S
 
 	var r0 wire.SNACMessage
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x13_0x05_FeedbagQueryIfModified) (wire.SNACMessage, error)); ok {
-		return rf(ctx, sess, inFrame, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x13_0x05_FeedbagQueryIfModified) (wire.SNACMessage, error)); ok {
+		return returnFunc(ctx, sess, inFrame, inBody)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x13_0x05_FeedbagQueryIfModified) wire.SNACMessage); ok {
-		r0 = rf(ctx, sess, inFrame, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x13_0x05_FeedbagQueryIfModified) wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, sess, inFrame, inBody)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x13_0x05_FeedbagQueryIfModified) error); ok {
-		r1 = rf(ctx, sess, inFrame, inBody)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x13_0x05_FeedbagQueryIfModified) error); ok {
+		r1 = returnFunc(ctx, sess, inFrame, inBody)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -185,36 +231,56 @@ func (_e *mockFeedbagService_Expecter) QueryIfModified(ctx interface{}, sess int
 
 func (_c *mockFeedbagService_QueryIfModified_Call) Run(run func(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x13_0x05_FeedbagQueryIfModified)) *mockFeedbagService_QueryIfModified_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(wire.SNACFrame), args[3].(wire.SNAC_0x13_0x05_FeedbagQueryIfModified))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 wire.SNACFrame
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNACFrame)
+		}
+		var arg3 wire.SNAC_0x13_0x05_FeedbagQueryIfModified
+		if args[3] != nil {
+			arg3 = args[3].(wire.SNAC_0x13_0x05_FeedbagQueryIfModified)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+			arg3,
+		)
 	})
 	return _c
 }
 
-func (_c *mockFeedbagService_QueryIfModified_Call) Return(_a0 wire.SNACMessage, _a1 error) *mockFeedbagService_QueryIfModified_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockFeedbagService_QueryIfModified_Call) Return(sNACMessage wire.SNACMessage, err error) *mockFeedbagService_QueryIfModified_Call {
+	_c.Call.Return(sNACMessage, err)
 	return _c
 }
 
-func (_c *mockFeedbagService_QueryIfModified_Call) RunAndReturn(run func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x13_0x05_FeedbagQueryIfModified) (wire.SNACMessage, error)) *mockFeedbagService_QueryIfModified_Call {
+func (_c *mockFeedbagService_QueryIfModified_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x13_0x05_FeedbagQueryIfModified) (wire.SNACMessage, error)) *mockFeedbagService_QueryIfModified_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// RespondAuthorizeToHost provides a mock function with given fields: ctx, sess, inFrame, inBody
-func (_m *mockFeedbagService) RespondAuthorizeToHost(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x13_0x1A_FeedbagRespondAuthorizeToHost) error {
-	ret := _m.Called(ctx, sess, inFrame, inBody)
+// RespondAuthorizeToHost provides a mock function for the type mockFeedbagService
+func (_mock *mockFeedbagService) RespondAuthorizeToHost(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x13_0x1A_FeedbagRespondAuthorizeToHost) error {
+	ret := _mock.Called(ctx, sess, inFrame, inBody)
 
 	if len(ret) == 0 {
 		panic("no return value specified for RespondAuthorizeToHost")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x13_0x1A_FeedbagRespondAuthorizeToHost) error); ok {
-		r0 = rf(ctx, sess, inFrame, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x13_0x1A_FeedbagRespondAuthorizeToHost) error); ok {
+		r0 = returnFunc(ctx, sess, inFrame, inBody)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -234,36 +300,56 @@ func (_e *mockFeedbagService_Expecter) RespondAuthorizeToHost(ctx interface{}, s
 
 func (_c *mockFeedbagService_RespondAuthorizeToHost_Call) Run(run func(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x13_0x1A_FeedbagRespondAuthorizeToHost)) *mockFeedbagService_RespondAuthorizeToHost_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(wire.SNACFrame), args[3].(wire.SNAC_0x13_0x1A_FeedbagRespondAuthorizeToHost))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 wire.SNACFrame
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNACFrame)
+		}
+		var arg3 wire.SNAC_0x13_0x1A_FeedbagRespondAuthorizeToHost
+		if args[3] != nil {
+			arg3 = args[3].(wire.SNAC_0x13_0x1A_FeedbagRespondAuthorizeToHost)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+			arg3,
+		)
 	})
 	return _c
 }
 
-func (_c *mockFeedbagService_RespondAuthorizeToHost_Call) Return(_a0 error) *mockFeedbagService_RespondAuthorizeToHost_Call {
-	_c.Call.Return(_a0)
+func (_c *mockFeedbagService_RespondAuthorizeToHost_Call) Return(err error) *mockFeedbagService_RespondAuthorizeToHost_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockFeedbagService_RespondAuthorizeToHost_Call) RunAndReturn(run func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x13_0x1A_FeedbagRespondAuthorizeToHost) error) *mockFeedbagService_RespondAuthorizeToHost_Call {
+func (_c *mockFeedbagService_RespondAuthorizeToHost_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x13_0x1A_FeedbagRespondAuthorizeToHost) error) *mockFeedbagService_RespondAuthorizeToHost_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// RightsQuery provides a mock function with given fields: ctx, inFrame
-func (_m *mockFeedbagService) RightsQuery(ctx context.Context, inFrame wire.SNACFrame) wire.SNACMessage {
-	ret := _m.Called(ctx, inFrame)
+// RightsQuery provides a mock function for the type mockFeedbagService
+func (_mock *mockFeedbagService) RightsQuery(ctx context.Context, inFrame wire.SNACFrame) wire.SNACMessage {
+	ret := _mock.Called(ctx, inFrame)
 
 	if len(ret) == 0 {
 		panic("no return value specified for RightsQuery")
 	}
 
 	var r0 wire.SNACMessage
-	if rf, ok := ret.Get(0).(func(context.Context, wire.SNACFrame) wire.SNACMessage); ok {
-		r0 = rf(ctx, inFrame)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, wire.SNACFrame) wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, inFrame)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
 	return r0
 }
 
@@ -281,24 +367,36 @@ func (_e *mockFeedbagService_Expecter) RightsQuery(ctx interface{}, inFrame inte
 
 func (_c *mockFeedbagService_RightsQuery_Call) Run(run func(ctx context.Context, inFrame wire.SNACFrame)) *mockFeedbagService_RightsQuery_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(wire.SNACFrame))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 wire.SNACFrame
+		if args[1] != nil {
+			arg1 = args[1].(wire.SNACFrame)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockFeedbagService_RightsQuery_Call) Return(_a0 wire.SNACMessage) *mockFeedbagService_RightsQuery_Call {
-	_c.Call.Return(_a0)
+func (_c *mockFeedbagService_RightsQuery_Call) Return(sNACMessage wire.SNACMessage) *mockFeedbagService_RightsQuery_Call {
+	_c.Call.Return(sNACMessage)
 	return _c
 }
 
-func (_c *mockFeedbagService_RightsQuery_Call) RunAndReturn(run func(context.Context, wire.SNACFrame) wire.SNACMessage) *mockFeedbagService_RightsQuery_Call {
+func (_c *mockFeedbagService_RightsQuery_Call) RunAndReturn(run func(ctx context.Context, inFrame wire.SNACFrame) wire.SNACMessage) *mockFeedbagService_RightsQuery_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// StartCluster provides a mock function with given fields: ctx, inFrame, inBody
-func (_m *mockFeedbagService) StartCluster(ctx context.Context, inFrame wire.SNACFrame, inBody wire.SNAC_0x13_0x11_FeedbagStartCluster) {
-	_m.Called(ctx, inFrame, inBody)
+// StartCluster provides a mock function for the type mockFeedbagService
+func (_mock *mockFeedbagService) StartCluster(ctx context.Context, inFrame wire.SNACFrame, inBody wire.SNAC_0x13_0x11_FeedbagStartCluster) {
+	_mock.Called(ctx, inFrame, inBody)
+	return
 }
 
 // mockFeedbagService_StartCluster_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'StartCluster'
@@ -316,7 +414,23 @@ func (_e *mockFeedbagService_Expecter) StartCluster(ctx interface{}, inFrame int
 
 func (_c *mockFeedbagService_StartCluster_Call) Run(run func(ctx context.Context, inFrame wire.SNACFrame, inBody wire.SNAC_0x13_0x11_FeedbagStartCluster)) *mockFeedbagService_StartCluster_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(wire.SNACFrame), args[2].(wire.SNAC_0x13_0x11_FeedbagStartCluster))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 wire.SNACFrame
+		if args[1] != nil {
+			arg1 = args[1].(wire.SNACFrame)
+		}
+		var arg2 wire.SNAC_0x13_0x11_FeedbagStartCluster
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNAC_0x13_0x11_FeedbagStartCluster)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
@@ -326,14 +440,14 @@ func (_c *mockFeedbagService_StartCluster_Call) Return() *mockFeedbagService_Sta
 	return _c
 }
 
-func (_c *mockFeedbagService_StartCluster_Call) RunAndReturn(run func(context.Context, wire.SNACFrame, wire.SNAC_0x13_0x11_FeedbagStartCluster)) *mockFeedbagService_StartCluster_Call {
+func (_c *mockFeedbagService_StartCluster_Call) RunAndReturn(run func(ctx context.Context, inFrame wire.SNACFrame, inBody wire.SNAC_0x13_0x11_FeedbagStartCluster)) *mockFeedbagService_StartCluster_Call {
 	_c.Run(run)
 	return _c
 }
 
-// UpsertItem provides a mock function with given fields: ctx, sess, inFrame, items
-func (_m *mockFeedbagService) UpsertItem(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, items []wire.FeedbagItem) (wire.SNACMessage, error) {
-	ret := _m.Called(ctx, sess, inFrame, items)
+// UpsertItem provides a mock function for the type mockFeedbagService
+func (_mock *mockFeedbagService) UpsertItem(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, items []wire.FeedbagItem) (wire.SNACMessage, error) {
+	ret := _mock.Called(ctx, sess, inFrame, items)
 
 	if len(ret) == 0 {
 		panic("no return value specified for UpsertItem")
@@ -341,21 +455,19 @@ func (_m *mockFeedbagService) UpsertItem(ctx context.Context, sess *state.Sessio
 
 	var r0 wire.SNACMessage
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, []wire.FeedbagItem) (wire.SNACMessage, error)); ok {
-		return rf(ctx, sess, inFrame, items)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, []wire.FeedbagItem) (wire.SNACMessage, error)); ok {
+		return returnFunc(ctx, sess, inFrame, items)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, []wire.FeedbagItem) wire.SNACMessage); ok {
-		r0 = rf(ctx, sess, inFrame, items)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, []wire.FeedbagItem) wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, sess, inFrame, items)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, *state.Session, wire.SNACFrame, []wire.FeedbagItem) error); ok {
-		r1 = rf(ctx, sess, inFrame, items)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, *state.Session, wire.SNACFrame, []wire.FeedbagItem) error); ok {
+		r1 = returnFunc(ctx, sess, inFrame, items)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -375,36 +487,56 @@ func (_e *mockFeedbagService_Expecter) UpsertItem(ctx interface{}, sess interfac
 
 func (_c *mockFeedbagService_UpsertItem_Call) Run(run func(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, items []wire.FeedbagItem)) *mockFeedbagService_UpsertItem_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(wire.SNACFrame), args[3].([]wire.FeedbagItem))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 wire.SNACFrame
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNACFrame)
+		}
+		var arg3 []wire.FeedbagItem
+		if args[3] != nil {
+			arg3 = args[3].([]wire.FeedbagItem)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+			arg3,
+		)
 	})
 	return _c
 }
 
-func (_c *mockFeedbagService_UpsertItem_Call) Return(_a0 wire.SNACMessage, _a1 error) *mockFeedbagService_UpsertItem_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockFeedbagService_UpsertItem_Call) Return(sNACMessage wire.SNACMessage, err error) *mockFeedbagService_UpsertItem_Call {
+	_c.Call.Return(sNACMessage, err)
 	return _c
 }
 
-func (_c *mockFeedbagService_UpsertItem_Call) RunAndReturn(run func(context.Context, *state.Session, wire.SNACFrame, []wire.FeedbagItem) (wire.SNACMessage, error)) *mockFeedbagService_UpsertItem_Call {
+func (_c *mockFeedbagService_UpsertItem_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, items []wire.FeedbagItem) (wire.SNACMessage, error)) *mockFeedbagService_UpsertItem_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// Use provides a mock function with given fields: ctx, sess
-func (_m *mockFeedbagService) Use(ctx context.Context, sess *state.Session) error {
-	ret := _m.Called(ctx, sess)
+// Use provides a mock function for the type mockFeedbagService
+func (_mock *mockFeedbagService) Use(ctx context.Context, sess *state.Session) error {
+	ret := _mock.Called(ctx, sess)
 
 	if len(ret) == 0 {
 		panic("no return value specified for Use")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session) error); ok {
-		r0 = rf(ctx, sess)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session) error); ok {
+		r0 = returnFunc(ctx, sess)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -422,31 +554,28 @@ func (_e *mockFeedbagService_Expecter) Use(ctx interface{}, sess interface{}) *m
 
 func (_c *mockFeedbagService_Use_Call) Run(run func(ctx context.Context, sess *state.Session)) *mockFeedbagService_Use_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockFeedbagService_Use_Call) Return(_a0 error) *mockFeedbagService_Use_Call {
-	_c.Call.Return(_a0)
+func (_c *mockFeedbagService_Use_Call) Return(err error) *mockFeedbagService_Use_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockFeedbagService_Use_Call) RunAndReturn(run func(context.Context, *state.Session) error) *mockFeedbagService_Use_Call {
+func (_c *mockFeedbagService_Use_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session) error) *mockFeedbagService_Use_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockFeedbagService creates a new instance of mockFeedbagService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockFeedbagService(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockFeedbagService {
-	mock := &mockFeedbagService{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 234 - 109
server/oscar/mock_icbm_service_test.go

@@ -1,16 +1,31 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package oscar
 
 import (
-	context "context"
+	"context"
 
-	state "github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/wire"
 	mock "github.com/stretchr/testify/mock"
-
-	wire "github.com/mk6i/retro-aim-server/wire"
 )
 
+// newMockICBMService creates a new instance of mockICBMService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockICBMService(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockICBMService {
+	mock := &mockICBMService{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockICBMService is an autogenerated mock type for the ICBMService type
 type mockICBMService struct {
 	mock.Mock
@@ -24,9 +39,9 @@ func (_m *mockICBMService) EXPECT() *mockICBMService_Expecter {
 	return &mockICBMService_Expecter{mock: &_m.Mock}
 }
 
-// ChannelMsgToHost provides a mock function with given fields: ctx, sess, inFrame, inBody
-func (_m *mockICBMService) ChannelMsgToHost(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x04_0x06_ICBMChannelMsgToHost) (*wire.SNACMessage, error) {
-	ret := _m.Called(ctx, sess, inFrame, inBody)
+// ChannelMsgToHost provides a mock function for the type mockICBMService
+func (_mock *mockICBMService) ChannelMsgToHost(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x04_0x06_ICBMChannelMsgToHost) (*wire.SNACMessage, error) {
+	ret := _mock.Called(ctx, sess, inFrame, inBody)
 
 	if len(ret) == 0 {
 		panic("no return value specified for ChannelMsgToHost")
@@ -34,23 +49,21 @@ func (_m *mockICBMService) ChannelMsgToHost(ctx context.Context, sess *state.Ses
 
 	var r0 *wire.SNACMessage
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x04_0x06_ICBMChannelMsgToHost) (*wire.SNACMessage, error)); ok {
-		return rf(ctx, sess, inFrame, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x04_0x06_ICBMChannelMsgToHost) (*wire.SNACMessage, error)); ok {
+		return returnFunc(ctx, sess, inFrame, inBody)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x04_0x06_ICBMChannelMsgToHost) *wire.SNACMessage); ok {
-		r0 = rf(ctx, sess, inFrame, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x04_0x06_ICBMChannelMsgToHost) *wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, sess, inFrame, inBody)
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).(*wire.SNACMessage)
 		}
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x04_0x06_ICBMChannelMsgToHost) error); ok {
-		r1 = rf(ctx, sess, inFrame, inBody)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x04_0x06_ICBMChannelMsgToHost) error); ok {
+		r1 = returnFunc(ctx, sess, inFrame, inBody)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -70,36 +83,56 @@ func (_e *mockICBMService_Expecter) ChannelMsgToHost(ctx interface{}, sess inter
 
 func (_c *mockICBMService_ChannelMsgToHost_Call) Run(run func(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x04_0x06_ICBMChannelMsgToHost)) *mockICBMService_ChannelMsgToHost_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(wire.SNACFrame), args[3].(wire.SNAC_0x04_0x06_ICBMChannelMsgToHost))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 wire.SNACFrame
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNACFrame)
+		}
+		var arg3 wire.SNAC_0x04_0x06_ICBMChannelMsgToHost
+		if args[3] != nil {
+			arg3 = args[3].(wire.SNAC_0x04_0x06_ICBMChannelMsgToHost)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+			arg3,
+		)
 	})
 	return _c
 }
 
-func (_c *mockICBMService_ChannelMsgToHost_Call) Return(_a0 *wire.SNACMessage, _a1 error) *mockICBMService_ChannelMsgToHost_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockICBMService_ChannelMsgToHost_Call) Return(sNACMessage *wire.SNACMessage, err error) *mockICBMService_ChannelMsgToHost_Call {
+	_c.Call.Return(sNACMessage, err)
 	return _c
 }
 
-func (_c *mockICBMService_ChannelMsgToHost_Call) RunAndReturn(run func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x04_0x06_ICBMChannelMsgToHost) (*wire.SNACMessage, error)) *mockICBMService_ChannelMsgToHost_Call {
+func (_c *mockICBMService_ChannelMsgToHost_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x04_0x06_ICBMChannelMsgToHost) (*wire.SNACMessage, error)) *mockICBMService_ChannelMsgToHost_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// ClientErr provides a mock function with given fields: ctx, sess, frame, body
-func (_m *mockICBMService) ClientErr(ctx context.Context, sess *state.Session, frame wire.SNACFrame, body wire.SNAC_0x04_0x0B_ICBMClientErr) error {
-	ret := _m.Called(ctx, sess, frame, body)
+// ClientErr provides a mock function for the type mockICBMService
+func (_mock *mockICBMService) ClientErr(ctx context.Context, sess *state.Session, frame wire.SNACFrame, body wire.SNAC_0x04_0x0B_ICBMClientErr) error {
+	ret := _mock.Called(ctx, sess, frame, body)
 
 	if len(ret) == 0 {
 		panic("no return value specified for ClientErr")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x04_0x0B_ICBMClientErr) error); ok {
-		r0 = rf(ctx, sess, frame, body)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x04_0x0B_ICBMClientErr) error); ok {
+		r0 = returnFunc(ctx, sess, frame, body)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -119,36 +152,56 @@ func (_e *mockICBMService_Expecter) ClientErr(ctx interface{}, sess interface{},
 
 func (_c *mockICBMService_ClientErr_Call) Run(run func(ctx context.Context, sess *state.Session, frame wire.SNACFrame, body wire.SNAC_0x04_0x0B_ICBMClientErr)) *mockICBMService_ClientErr_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(wire.SNACFrame), args[3].(wire.SNAC_0x04_0x0B_ICBMClientErr))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 wire.SNACFrame
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNACFrame)
+		}
+		var arg3 wire.SNAC_0x04_0x0B_ICBMClientErr
+		if args[3] != nil {
+			arg3 = args[3].(wire.SNAC_0x04_0x0B_ICBMClientErr)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+			arg3,
+		)
 	})
 	return _c
 }
 
-func (_c *mockICBMService_ClientErr_Call) Return(_a0 error) *mockICBMService_ClientErr_Call {
-	_c.Call.Return(_a0)
+func (_c *mockICBMService_ClientErr_Call) Return(err error) *mockICBMService_ClientErr_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockICBMService_ClientErr_Call) RunAndReturn(run func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x04_0x0B_ICBMClientErr) error) *mockICBMService_ClientErr_Call {
+func (_c *mockICBMService_ClientErr_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session, frame wire.SNACFrame, body wire.SNAC_0x04_0x0B_ICBMClientErr) error) *mockICBMService_ClientErr_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// ClientEvent provides a mock function with given fields: ctx, sess, inFrame, inBody
-func (_m *mockICBMService) ClientEvent(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x04_0x14_ICBMClientEvent) error {
-	ret := _m.Called(ctx, sess, inFrame, inBody)
+// ClientEvent provides a mock function for the type mockICBMService
+func (_mock *mockICBMService) ClientEvent(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x04_0x14_ICBMClientEvent) error {
+	ret := _mock.Called(ctx, sess, inFrame, inBody)
 
 	if len(ret) == 0 {
 		panic("no return value specified for ClientEvent")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x04_0x14_ICBMClientEvent) error); ok {
-		r0 = rf(ctx, sess, inFrame, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x04_0x14_ICBMClientEvent) error); ok {
+		r0 = returnFunc(ctx, sess, inFrame, inBody)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -168,24 +221,45 @@ func (_e *mockICBMService_Expecter) ClientEvent(ctx interface{}, sess interface{
 
 func (_c *mockICBMService_ClientEvent_Call) Run(run func(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x04_0x14_ICBMClientEvent)) *mockICBMService_ClientEvent_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(wire.SNACFrame), args[3].(wire.SNAC_0x04_0x14_ICBMClientEvent))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 wire.SNACFrame
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNACFrame)
+		}
+		var arg3 wire.SNAC_0x04_0x14_ICBMClientEvent
+		if args[3] != nil {
+			arg3 = args[3].(wire.SNAC_0x04_0x14_ICBMClientEvent)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+			arg3,
+		)
 	})
 	return _c
 }
 
-func (_c *mockICBMService_ClientEvent_Call) Return(_a0 error) *mockICBMService_ClientEvent_Call {
-	_c.Call.Return(_a0)
+func (_c *mockICBMService_ClientEvent_Call) Return(err error) *mockICBMService_ClientEvent_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockICBMService_ClientEvent_Call) RunAndReturn(run func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x04_0x14_ICBMClientEvent) error) *mockICBMService_ClientEvent_Call {
+func (_c *mockICBMService_ClientEvent_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x04_0x14_ICBMClientEvent) error) *mockICBMService_ClientEvent_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// EvilRequest provides a mock function with given fields: ctx, sess, inFrame, inBody
-func (_m *mockICBMService) EvilRequest(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x04_0x08_ICBMEvilRequest) (wire.SNACMessage, error) {
-	ret := _m.Called(ctx, sess, inFrame, inBody)
+// EvilRequest provides a mock function for the type mockICBMService
+func (_mock *mockICBMService) EvilRequest(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x04_0x08_ICBMEvilRequest) (wire.SNACMessage, error) {
+	ret := _mock.Called(ctx, sess, inFrame, inBody)
 
 	if len(ret) == 0 {
 		panic("no return value specified for EvilRequest")
@@ -193,21 +267,19 @@ func (_m *mockICBMService) EvilRequest(ctx context.Context, sess *state.Session,
 
 	var r0 wire.SNACMessage
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x04_0x08_ICBMEvilRequest) (wire.SNACMessage, error)); ok {
-		return rf(ctx, sess, inFrame, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x04_0x08_ICBMEvilRequest) (wire.SNACMessage, error)); ok {
+		return returnFunc(ctx, sess, inFrame, inBody)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x04_0x08_ICBMEvilRequest) wire.SNACMessage); ok {
-		r0 = rf(ctx, sess, inFrame, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x04_0x08_ICBMEvilRequest) wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, sess, inFrame, inBody)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x04_0x08_ICBMEvilRequest) error); ok {
-		r1 = rf(ctx, sess, inFrame, inBody)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x04_0x08_ICBMEvilRequest) error); ok {
+		r1 = returnFunc(ctx, sess, inFrame, inBody)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -227,24 +299,45 @@ func (_e *mockICBMService_Expecter) EvilRequest(ctx interface{}, sess interface{
 
 func (_c *mockICBMService_EvilRequest_Call) Run(run func(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x04_0x08_ICBMEvilRequest)) *mockICBMService_EvilRequest_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(wire.SNACFrame), args[3].(wire.SNAC_0x04_0x08_ICBMEvilRequest))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 wire.SNACFrame
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNACFrame)
+		}
+		var arg3 wire.SNAC_0x04_0x08_ICBMEvilRequest
+		if args[3] != nil {
+			arg3 = args[3].(wire.SNAC_0x04_0x08_ICBMEvilRequest)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+			arg3,
+		)
 	})
 	return _c
 }
 
-func (_c *mockICBMService_EvilRequest_Call) Return(_a0 wire.SNACMessage, _a1 error) *mockICBMService_EvilRequest_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockICBMService_EvilRequest_Call) Return(sNACMessage wire.SNACMessage, err error) *mockICBMService_EvilRequest_Call {
+	_c.Call.Return(sNACMessage, err)
 	return _c
 }
 
-func (_c *mockICBMService_EvilRequest_Call) RunAndReturn(run func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x04_0x08_ICBMEvilRequest) (wire.SNACMessage, error)) *mockICBMService_EvilRequest_Call {
+func (_c *mockICBMService_EvilRequest_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x04_0x08_ICBMEvilRequest) (wire.SNACMessage, error)) *mockICBMService_EvilRequest_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// OfflineRetrieve provides a mock function with given fields: ctx, sess, inFrame
-func (_m *mockICBMService) OfflineRetrieve(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame) (wire.SNACMessage, error) {
-	ret := _m.Called(ctx, sess, inFrame)
+// OfflineRetrieve provides a mock function for the type mockICBMService
+func (_mock *mockICBMService) OfflineRetrieve(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame) (wire.SNACMessage, error) {
+	ret := _mock.Called(ctx, sess, inFrame)
 
 	if len(ret) == 0 {
 		panic("no return value specified for OfflineRetrieve")
@@ -252,21 +345,19 @@ func (_m *mockICBMService) OfflineRetrieve(ctx context.Context, sess *state.Sess
 
 	var r0 wire.SNACMessage
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame) (wire.SNACMessage, error)); ok {
-		return rf(ctx, sess, inFrame)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame) (wire.SNACMessage, error)); ok {
+		return returnFunc(ctx, sess, inFrame)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame) wire.SNACMessage); ok {
-		r0 = rf(ctx, sess, inFrame)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame) wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, sess, inFrame)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, *state.Session, wire.SNACFrame) error); ok {
-		r1 = rf(ctx, sess, inFrame)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, *state.Session, wire.SNACFrame) error); ok {
+		r1 = returnFunc(ctx, sess, inFrame)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -285,36 +376,51 @@ func (_e *mockICBMService_Expecter) OfflineRetrieve(ctx interface{}, sess interf
 
 func (_c *mockICBMService_OfflineRetrieve_Call) Run(run func(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame)) *mockICBMService_OfflineRetrieve_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(wire.SNACFrame))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 wire.SNACFrame
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNACFrame)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockICBMService_OfflineRetrieve_Call) Return(_a0 wire.SNACMessage, _a1 error) *mockICBMService_OfflineRetrieve_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockICBMService_OfflineRetrieve_Call) Return(sNACMessage wire.SNACMessage, err error) *mockICBMService_OfflineRetrieve_Call {
+	_c.Call.Return(sNACMessage, err)
 	return _c
 }
 
-func (_c *mockICBMService_OfflineRetrieve_Call) RunAndReturn(run func(context.Context, *state.Session, wire.SNACFrame) (wire.SNACMessage, error)) *mockICBMService_OfflineRetrieve_Call {
+func (_c *mockICBMService_OfflineRetrieve_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame) (wire.SNACMessage, error)) *mockICBMService_OfflineRetrieve_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// ParameterQuery provides a mock function with given fields: ctx, inFrame
-func (_m *mockICBMService) ParameterQuery(ctx context.Context, inFrame wire.SNACFrame) wire.SNACMessage {
-	ret := _m.Called(ctx, inFrame)
+// ParameterQuery provides a mock function for the type mockICBMService
+func (_mock *mockICBMService) ParameterQuery(ctx context.Context, inFrame wire.SNACFrame) wire.SNACMessage {
+	ret := _mock.Called(ctx, inFrame)
 
 	if len(ret) == 0 {
 		panic("no return value specified for ParameterQuery")
 	}
 
 	var r0 wire.SNACMessage
-	if rf, ok := ret.Get(0).(func(context.Context, wire.SNACFrame) wire.SNACMessage); ok {
-		r0 = rf(ctx, inFrame)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, wire.SNACFrame) wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, inFrame)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
 	return r0
 }
 
@@ -332,36 +438,46 @@ func (_e *mockICBMService_Expecter) ParameterQuery(ctx interface{}, inFrame inte
 
 func (_c *mockICBMService_ParameterQuery_Call) Run(run func(ctx context.Context, inFrame wire.SNACFrame)) *mockICBMService_ParameterQuery_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(wire.SNACFrame))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 wire.SNACFrame
+		if args[1] != nil {
+			arg1 = args[1].(wire.SNACFrame)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockICBMService_ParameterQuery_Call) Return(_a0 wire.SNACMessage) *mockICBMService_ParameterQuery_Call {
-	_c.Call.Return(_a0)
+func (_c *mockICBMService_ParameterQuery_Call) Return(sNACMessage wire.SNACMessage) *mockICBMService_ParameterQuery_Call {
+	_c.Call.Return(sNACMessage)
 	return _c
 }
 
-func (_c *mockICBMService_ParameterQuery_Call) RunAndReturn(run func(context.Context, wire.SNACFrame) wire.SNACMessage) *mockICBMService_ParameterQuery_Call {
+func (_c *mockICBMService_ParameterQuery_Call) RunAndReturn(run func(ctx context.Context, inFrame wire.SNACFrame) wire.SNACMessage) *mockICBMService_ParameterQuery_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// RestoreWarningLevel provides a mock function with given fields: ctx, sess
-func (_m *mockICBMService) RestoreWarningLevel(ctx context.Context, sess *state.Session) error {
-	ret := _m.Called(ctx, sess)
+// RestoreWarningLevel provides a mock function for the type mockICBMService
+func (_mock *mockICBMService) RestoreWarningLevel(ctx context.Context, sess *state.Session) error {
+	ret := _mock.Called(ctx, sess)
 
 	if len(ret) == 0 {
 		panic("no return value specified for RestoreWarningLevel")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session) error); ok {
-		r0 = rf(ctx, sess)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session) error); ok {
+		r0 = returnFunc(ctx, sess)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -379,24 +495,36 @@ func (_e *mockICBMService_Expecter) RestoreWarningLevel(ctx interface{}, sess in
 
 func (_c *mockICBMService_RestoreWarningLevel_Call) Run(run func(ctx context.Context, sess *state.Session)) *mockICBMService_RestoreWarningLevel_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockICBMService_RestoreWarningLevel_Call) Return(_a0 error) *mockICBMService_RestoreWarningLevel_Call {
-	_c.Call.Return(_a0)
+func (_c *mockICBMService_RestoreWarningLevel_Call) Return(err error) *mockICBMService_RestoreWarningLevel_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockICBMService_RestoreWarningLevel_Call) RunAndReturn(run func(context.Context, *state.Session) error) *mockICBMService_RestoreWarningLevel_Call {
+func (_c *mockICBMService_RestoreWarningLevel_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session) error) *mockICBMService_RestoreWarningLevel_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// UpdateWarnLevel provides a mock function with given fields: ctx, sess
-func (_m *mockICBMService) UpdateWarnLevel(ctx context.Context, sess *state.Session) {
-	_m.Called(ctx, sess)
+// UpdateWarnLevel provides a mock function for the type mockICBMService
+func (_mock *mockICBMService) UpdateWarnLevel(ctx context.Context, sess *state.Session) {
+	_mock.Called(ctx, sess)
+	return
 }
 
 // mockICBMService_UpdateWarnLevel_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'UpdateWarnLevel'
@@ -413,7 +541,18 @@ func (_e *mockICBMService_Expecter) UpdateWarnLevel(ctx interface{}, sess interf
 
 func (_c *mockICBMService_UpdateWarnLevel_Call) Run(run func(ctx context.Context, sess *state.Session)) *mockICBMService_UpdateWarnLevel_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
@@ -423,21 +562,7 @@ func (_c *mockICBMService_UpdateWarnLevel_Call) Return() *mockICBMService_Update
 	return _c
 }
 
-func (_c *mockICBMService_UpdateWarnLevel_Call) RunAndReturn(run func(context.Context, *state.Session)) *mockICBMService_UpdateWarnLevel_Call {
+func (_c *mockICBMService_UpdateWarnLevel_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session)) *mockICBMService_UpdateWarnLevel_Call {
 	_c.Run(run)
 	return _c
 }
-
-// newMockICBMService creates a new instance of mockICBMService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockICBMService(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockICBMService {
-	mock := &mockICBMService{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

Разница между файлами не показана из-за своего большого размера
+ 465 - 161
server/oscar/mock_icq_service_test.go


+ 196 - 99
server/oscar/mock_locate_service_test.go

@@ -1,16 +1,31 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package oscar
 
 import (
-	context "context"
+	"context"
 
-	state "github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/wire"
 	mock "github.com/stretchr/testify/mock"
-
-	wire "github.com/mk6i/retro-aim-server/wire"
 )
 
+// newMockLocateService creates a new instance of mockLocateService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockLocateService(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockLocateService {
+	mock := &mockLocateService{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockLocateService is an autogenerated mock type for the LocateService type
 type mockLocateService struct {
 	mock.Mock
@@ -24,9 +39,9 @@ func (_m *mockLocateService) EXPECT() *mockLocateService_Expecter {
 	return &mockLocateService_Expecter{mock: &_m.Mock}
 }
 
-// DirInfo provides a mock function with given fields: ctx, frame, body
-func (_m *mockLocateService) DirInfo(ctx context.Context, frame wire.SNACFrame, body wire.SNAC_0x02_0x0B_LocateGetDirInfo) (wire.SNACMessage, error) {
-	ret := _m.Called(ctx, frame, body)
+// DirInfo provides a mock function for the type mockLocateService
+func (_mock *mockLocateService) DirInfo(ctx context.Context, frame wire.SNACFrame, body wire.SNAC_0x02_0x0B_LocateGetDirInfo) (wire.SNACMessage, error) {
+	ret := _mock.Called(ctx, frame, body)
 
 	if len(ret) == 0 {
 		panic("no return value specified for DirInfo")
@@ -34,21 +49,19 @@ func (_m *mockLocateService) DirInfo(ctx context.Context, frame wire.SNACFrame,
 
 	var r0 wire.SNACMessage
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, wire.SNACFrame, wire.SNAC_0x02_0x0B_LocateGetDirInfo) (wire.SNACMessage, error)); ok {
-		return rf(ctx, frame, body)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, wire.SNACFrame, wire.SNAC_0x02_0x0B_LocateGetDirInfo) (wire.SNACMessage, error)); ok {
+		return returnFunc(ctx, frame, body)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, wire.SNACFrame, wire.SNAC_0x02_0x0B_LocateGetDirInfo) wire.SNACMessage); ok {
-		r0 = rf(ctx, frame, body)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, wire.SNACFrame, wire.SNAC_0x02_0x0B_LocateGetDirInfo) wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, frame, body)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, wire.SNACFrame, wire.SNAC_0x02_0x0B_LocateGetDirInfo) error); ok {
-		r1 = rf(ctx, frame, body)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, wire.SNACFrame, wire.SNAC_0x02_0x0B_LocateGetDirInfo) error); ok {
+		r1 = returnFunc(ctx, frame, body)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -67,36 +80,51 @@ func (_e *mockLocateService_Expecter) DirInfo(ctx interface{}, frame interface{}
 
 func (_c *mockLocateService_DirInfo_Call) Run(run func(ctx context.Context, frame wire.SNACFrame, body wire.SNAC_0x02_0x0B_LocateGetDirInfo)) *mockLocateService_DirInfo_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(wire.SNACFrame), args[2].(wire.SNAC_0x02_0x0B_LocateGetDirInfo))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 wire.SNACFrame
+		if args[1] != nil {
+			arg1 = args[1].(wire.SNACFrame)
+		}
+		var arg2 wire.SNAC_0x02_0x0B_LocateGetDirInfo
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNAC_0x02_0x0B_LocateGetDirInfo)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockLocateService_DirInfo_Call) Return(_a0 wire.SNACMessage, _a1 error) *mockLocateService_DirInfo_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockLocateService_DirInfo_Call) Return(sNACMessage wire.SNACMessage, err error) *mockLocateService_DirInfo_Call {
+	_c.Call.Return(sNACMessage, err)
 	return _c
 }
 
-func (_c *mockLocateService_DirInfo_Call) RunAndReturn(run func(context.Context, wire.SNACFrame, wire.SNAC_0x02_0x0B_LocateGetDirInfo) (wire.SNACMessage, error)) *mockLocateService_DirInfo_Call {
+func (_c *mockLocateService_DirInfo_Call) RunAndReturn(run func(ctx context.Context, frame wire.SNACFrame, body wire.SNAC_0x02_0x0B_LocateGetDirInfo) (wire.SNACMessage, error)) *mockLocateService_DirInfo_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// RightsQuery provides a mock function with given fields: ctx, inFrame
-func (_m *mockLocateService) RightsQuery(ctx context.Context, inFrame wire.SNACFrame) wire.SNACMessage {
-	ret := _m.Called(ctx, inFrame)
+// RightsQuery provides a mock function for the type mockLocateService
+func (_mock *mockLocateService) RightsQuery(ctx context.Context, inFrame wire.SNACFrame) wire.SNACMessage {
+	ret := _mock.Called(ctx, inFrame)
 
 	if len(ret) == 0 {
 		panic("no return value specified for RightsQuery")
 	}
 
 	var r0 wire.SNACMessage
-	if rf, ok := ret.Get(0).(func(context.Context, wire.SNACFrame) wire.SNACMessage); ok {
-		r0 = rf(ctx, inFrame)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, wire.SNACFrame) wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, inFrame)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
 	return r0
 }
 
@@ -114,24 +142,35 @@ func (_e *mockLocateService_Expecter) RightsQuery(ctx interface{}, inFrame inter
 
 func (_c *mockLocateService_RightsQuery_Call) Run(run func(ctx context.Context, inFrame wire.SNACFrame)) *mockLocateService_RightsQuery_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(wire.SNACFrame))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 wire.SNACFrame
+		if args[1] != nil {
+			arg1 = args[1].(wire.SNACFrame)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockLocateService_RightsQuery_Call) Return(_a0 wire.SNACMessage) *mockLocateService_RightsQuery_Call {
-	_c.Call.Return(_a0)
+func (_c *mockLocateService_RightsQuery_Call) Return(sNACMessage wire.SNACMessage) *mockLocateService_RightsQuery_Call {
+	_c.Call.Return(sNACMessage)
 	return _c
 }
 
-func (_c *mockLocateService_RightsQuery_Call) RunAndReturn(run func(context.Context, wire.SNACFrame) wire.SNACMessage) *mockLocateService_RightsQuery_Call {
+func (_c *mockLocateService_RightsQuery_Call) RunAndReturn(run func(ctx context.Context, inFrame wire.SNACFrame) wire.SNACMessage) *mockLocateService_RightsQuery_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// SetDirInfo provides a mock function with given fields: ctx, sess, inFrame, inBody
-func (_m *mockLocateService) SetDirInfo(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x02_0x09_LocateSetDirInfo) (wire.SNACMessage, error) {
-	ret := _m.Called(ctx, sess, inFrame, inBody)
+// SetDirInfo provides a mock function for the type mockLocateService
+func (_mock *mockLocateService) SetDirInfo(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x02_0x09_LocateSetDirInfo) (wire.SNACMessage, error) {
+	ret := _mock.Called(ctx, sess, inFrame, inBody)
 
 	if len(ret) == 0 {
 		panic("no return value specified for SetDirInfo")
@@ -139,21 +178,19 @@ func (_m *mockLocateService) SetDirInfo(ctx context.Context, sess *state.Session
 
 	var r0 wire.SNACMessage
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x02_0x09_LocateSetDirInfo) (wire.SNACMessage, error)); ok {
-		return rf(ctx, sess, inFrame, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x02_0x09_LocateSetDirInfo) (wire.SNACMessage, error)); ok {
+		return returnFunc(ctx, sess, inFrame, inBody)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x02_0x09_LocateSetDirInfo) wire.SNACMessage); ok {
-		r0 = rf(ctx, sess, inFrame, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x02_0x09_LocateSetDirInfo) wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, sess, inFrame, inBody)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x02_0x09_LocateSetDirInfo) error); ok {
-		r1 = rf(ctx, sess, inFrame, inBody)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x02_0x09_LocateSetDirInfo) error); ok {
+		r1 = returnFunc(ctx, sess, inFrame, inBody)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -173,36 +210,56 @@ func (_e *mockLocateService_Expecter) SetDirInfo(ctx interface{}, sess interface
 
 func (_c *mockLocateService_SetDirInfo_Call) Run(run func(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x02_0x09_LocateSetDirInfo)) *mockLocateService_SetDirInfo_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(wire.SNACFrame), args[3].(wire.SNAC_0x02_0x09_LocateSetDirInfo))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 wire.SNACFrame
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNACFrame)
+		}
+		var arg3 wire.SNAC_0x02_0x09_LocateSetDirInfo
+		if args[3] != nil {
+			arg3 = args[3].(wire.SNAC_0x02_0x09_LocateSetDirInfo)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+			arg3,
+		)
 	})
 	return _c
 }
 
-func (_c *mockLocateService_SetDirInfo_Call) Return(_a0 wire.SNACMessage, _a1 error) *mockLocateService_SetDirInfo_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockLocateService_SetDirInfo_Call) Return(sNACMessage wire.SNACMessage, err error) *mockLocateService_SetDirInfo_Call {
+	_c.Call.Return(sNACMessage, err)
 	return _c
 }
 
-func (_c *mockLocateService_SetDirInfo_Call) RunAndReturn(run func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x02_0x09_LocateSetDirInfo) (wire.SNACMessage, error)) *mockLocateService_SetDirInfo_Call {
+func (_c *mockLocateService_SetDirInfo_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x02_0x09_LocateSetDirInfo) (wire.SNACMessage, error)) *mockLocateService_SetDirInfo_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// SetInfo provides a mock function with given fields: ctx, sess, inBody
-func (_m *mockLocateService) SetInfo(ctx context.Context, sess *state.Session, inBody wire.SNAC_0x02_0x04_LocateSetInfo) error {
-	ret := _m.Called(ctx, sess, inBody)
+// SetInfo provides a mock function for the type mockLocateService
+func (_mock *mockLocateService) SetInfo(ctx context.Context, sess *state.Session, inBody wire.SNAC_0x02_0x04_LocateSetInfo) error {
+	ret := _mock.Called(ctx, sess, inBody)
 
 	if len(ret) == 0 {
 		panic("no return value specified for SetInfo")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNAC_0x02_0x04_LocateSetInfo) error); ok {
-		r0 = rf(ctx, sess, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNAC_0x02_0x04_LocateSetInfo) error); ok {
+		r0 = returnFunc(ctx, sess, inBody)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -221,24 +278,40 @@ func (_e *mockLocateService_Expecter) SetInfo(ctx interface{}, sess interface{},
 
 func (_c *mockLocateService_SetInfo_Call) Run(run func(ctx context.Context, sess *state.Session, inBody wire.SNAC_0x02_0x04_LocateSetInfo)) *mockLocateService_SetInfo_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(wire.SNAC_0x02_0x04_LocateSetInfo))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 wire.SNAC_0x02_0x04_LocateSetInfo
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNAC_0x02_0x04_LocateSetInfo)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockLocateService_SetInfo_Call) Return(_a0 error) *mockLocateService_SetInfo_Call {
-	_c.Call.Return(_a0)
+func (_c *mockLocateService_SetInfo_Call) Return(err error) *mockLocateService_SetInfo_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockLocateService_SetInfo_Call) RunAndReturn(run func(context.Context, *state.Session, wire.SNAC_0x02_0x04_LocateSetInfo) error) *mockLocateService_SetInfo_Call {
+func (_c *mockLocateService_SetInfo_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session, inBody wire.SNAC_0x02_0x04_LocateSetInfo) error) *mockLocateService_SetInfo_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// SetKeywordInfo provides a mock function with given fields: ctx, sess, inFrame, body
-func (_m *mockLocateService) SetKeywordInfo(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, body wire.SNAC_0x02_0x0F_LocateSetKeywordInfo) (wire.SNACMessage, error) {
-	ret := _m.Called(ctx, sess, inFrame, body)
+// SetKeywordInfo provides a mock function for the type mockLocateService
+func (_mock *mockLocateService) SetKeywordInfo(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, body wire.SNAC_0x02_0x0F_LocateSetKeywordInfo) (wire.SNACMessage, error) {
+	ret := _mock.Called(ctx, sess, inFrame, body)
 
 	if len(ret) == 0 {
 		panic("no return value specified for SetKeywordInfo")
@@ -246,21 +319,19 @@ func (_m *mockLocateService) SetKeywordInfo(ctx context.Context, sess *state.Ses
 
 	var r0 wire.SNACMessage
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x02_0x0F_LocateSetKeywordInfo) (wire.SNACMessage, error)); ok {
-		return rf(ctx, sess, inFrame, body)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x02_0x0F_LocateSetKeywordInfo) (wire.SNACMessage, error)); ok {
+		return returnFunc(ctx, sess, inFrame, body)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x02_0x0F_LocateSetKeywordInfo) wire.SNACMessage); ok {
-		r0 = rf(ctx, sess, inFrame, body)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x02_0x0F_LocateSetKeywordInfo) wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, sess, inFrame, body)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x02_0x0F_LocateSetKeywordInfo) error); ok {
-		r1 = rf(ctx, sess, inFrame, body)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x02_0x0F_LocateSetKeywordInfo) error); ok {
+		r1 = returnFunc(ctx, sess, inFrame, body)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -280,24 +351,45 @@ func (_e *mockLocateService_Expecter) SetKeywordInfo(ctx interface{}, sess inter
 
 func (_c *mockLocateService_SetKeywordInfo_Call) Run(run func(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, body wire.SNAC_0x02_0x0F_LocateSetKeywordInfo)) *mockLocateService_SetKeywordInfo_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(wire.SNACFrame), args[3].(wire.SNAC_0x02_0x0F_LocateSetKeywordInfo))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 wire.SNACFrame
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNACFrame)
+		}
+		var arg3 wire.SNAC_0x02_0x0F_LocateSetKeywordInfo
+		if args[3] != nil {
+			arg3 = args[3].(wire.SNAC_0x02_0x0F_LocateSetKeywordInfo)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+			arg3,
+		)
 	})
 	return _c
 }
 
-func (_c *mockLocateService_SetKeywordInfo_Call) Return(_a0 wire.SNACMessage, _a1 error) *mockLocateService_SetKeywordInfo_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockLocateService_SetKeywordInfo_Call) Return(sNACMessage wire.SNACMessage, err error) *mockLocateService_SetKeywordInfo_Call {
+	_c.Call.Return(sNACMessage, err)
 	return _c
 }
 
-func (_c *mockLocateService_SetKeywordInfo_Call) RunAndReturn(run func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x02_0x0F_LocateSetKeywordInfo) (wire.SNACMessage, error)) *mockLocateService_SetKeywordInfo_Call {
+func (_c *mockLocateService_SetKeywordInfo_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, body wire.SNAC_0x02_0x0F_LocateSetKeywordInfo) (wire.SNACMessage, error)) *mockLocateService_SetKeywordInfo_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// UserInfoQuery provides a mock function with given fields: ctx, sess, inFrame, inBody
-func (_m *mockLocateService) UserInfoQuery(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x02_0x05_LocateUserInfoQuery) (wire.SNACMessage, error) {
-	ret := _m.Called(ctx, sess, inFrame, inBody)
+// UserInfoQuery provides a mock function for the type mockLocateService
+func (_mock *mockLocateService) UserInfoQuery(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x02_0x05_LocateUserInfoQuery) (wire.SNACMessage, error) {
+	ret := _mock.Called(ctx, sess, inFrame, inBody)
 
 	if len(ret) == 0 {
 		panic("no return value specified for UserInfoQuery")
@@ -305,21 +397,19 @@ func (_m *mockLocateService) UserInfoQuery(ctx context.Context, sess *state.Sess
 
 	var r0 wire.SNACMessage
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x02_0x05_LocateUserInfoQuery) (wire.SNACMessage, error)); ok {
-		return rf(ctx, sess, inFrame, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x02_0x05_LocateUserInfoQuery) (wire.SNACMessage, error)); ok {
+		return returnFunc(ctx, sess, inFrame, inBody)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x02_0x05_LocateUserInfoQuery) wire.SNACMessage); ok {
-		r0 = rf(ctx, sess, inFrame, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x02_0x05_LocateUserInfoQuery) wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, sess, inFrame, inBody)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x02_0x05_LocateUserInfoQuery) error); ok {
-		r1 = rf(ctx, sess, inFrame, inBody)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x02_0x05_LocateUserInfoQuery) error); ok {
+		r1 = returnFunc(ctx, sess, inFrame, inBody)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -339,31 +429,38 @@ func (_e *mockLocateService_Expecter) UserInfoQuery(ctx interface{}, sess interf
 
 func (_c *mockLocateService_UserInfoQuery_Call) Run(run func(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x02_0x05_LocateUserInfoQuery)) *mockLocateService_UserInfoQuery_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(wire.SNACFrame), args[3].(wire.SNAC_0x02_0x05_LocateUserInfoQuery))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 wire.SNACFrame
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNACFrame)
+		}
+		var arg3 wire.SNAC_0x02_0x05_LocateUserInfoQuery
+		if args[3] != nil {
+			arg3 = args[3].(wire.SNAC_0x02_0x05_LocateUserInfoQuery)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+			arg3,
+		)
 	})
 	return _c
 }
 
-func (_c *mockLocateService_UserInfoQuery_Call) Return(_a0 wire.SNACMessage, _a1 error) *mockLocateService_UserInfoQuery_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockLocateService_UserInfoQuery_Call) Return(sNACMessage wire.SNACMessage, err error) *mockLocateService_UserInfoQuery_Call {
+	_c.Call.Return(sNACMessage, err)
 	return _c
 }
 
-func (_c *mockLocateService_UserInfoQuery_Call) RunAndReturn(run func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x02_0x05_LocateUserInfoQuery) (wire.SNACMessage, error)) *mockLocateService_UserInfoQuery_Call {
+func (_c *mockLocateService_UserInfoQuery_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x02_0x05_LocateUserInfoQuery) (wire.SNACMessage, error)) *mockLocateService_UserInfoQuery_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockLocateService creates a new instance of mockLocateService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockLocateService(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockLocateService {
-	mock := &mockLocateService{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 77 - 52
server/oscar/mock_odir_service_test.go

@@ -1,14 +1,30 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package oscar
 
 import (
-	context "context"
+	"context"
 
-	wire "github.com/mk6i/retro-aim-server/wire"
+	"github.com/mk6i/retro-aim-server/wire"
 	mock "github.com/stretchr/testify/mock"
 )
 
+// newMockODirService creates a new instance of mockODirService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockODirService(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockODirService {
+	mock := &mockODirService{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockODirService is an autogenerated mock type for the ODirService type
 type mockODirService struct {
 	mock.Mock
@@ -22,9 +38,9 @@ func (_m *mockODirService) EXPECT() *mockODirService_Expecter {
 	return &mockODirService_Expecter{mock: &_m.Mock}
 }
 
-// InfoQuery provides a mock function with given fields: ctx, inFrame, inBody
-func (_m *mockODirService) InfoQuery(ctx context.Context, inFrame wire.SNACFrame, inBody wire.SNAC_0x0F_0x02_InfoQuery) (wire.SNACMessage, error) {
-	ret := _m.Called(ctx, inFrame, inBody)
+// InfoQuery provides a mock function for the type mockODirService
+func (_mock *mockODirService) InfoQuery(ctx context.Context, inFrame wire.SNACFrame, inBody wire.SNAC_0x0F_0x02_InfoQuery) (wire.SNACMessage, error) {
+	ret := _mock.Called(ctx, inFrame, inBody)
 
 	if len(ret) == 0 {
 		panic("no return value specified for InfoQuery")
@@ -32,21 +48,19 @@ func (_m *mockODirService) InfoQuery(ctx context.Context, inFrame wire.SNACFrame
 
 	var r0 wire.SNACMessage
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, wire.SNACFrame, wire.SNAC_0x0F_0x02_InfoQuery) (wire.SNACMessage, error)); ok {
-		return rf(ctx, inFrame, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, wire.SNACFrame, wire.SNAC_0x0F_0x02_InfoQuery) (wire.SNACMessage, error)); ok {
+		return returnFunc(ctx, inFrame, inBody)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, wire.SNACFrame, wire.SNAC_0x0F_0x02_InfoQuery) wire.SNACMessage); ok {
-		r0 = rf(ctx, inFrame, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, wire.SNACFrame, wire.SNAC_0x0F_0x02_InfoQuery) wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, inFrame, inBody)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, wire.SNACFrame, wire.SNAC_0x0F_0x02_InfoQuery) error); ok {
-		r1 = rf(ctx, inFrame, inBody)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, wire.SNACFrame, wire.SNAC_0x0F_0x02_InfoQuery) error); ok {
+		r1 = returnFunc(ctx, inFrame, inBody)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -65,24 +79,40 @@ func (_e *mockODirService_Expecter) InfoQuery(ctx interface{}, inFrame interface
 
 func (_c *mockODirService_InfoQuery_Call) Run(run func(ctx context.Context, inFrame wire.SNACFrame, inBody wire.SNAC_0x0F_0x02_InfoQuery)) *mockODirService_InfoQuery_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(wire.SNACFrame), args[2].(wire.SNAC_0x0F_0x02_InfoQuery))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 wire.SNACFrame
+		if args[1] != nil {
+			arg1 = args[1].(wire.SNACFrame)
+		}
+		var arg2 wire.SNAC_0x0F_0x02_InfoQuery
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNAC_0x0F_0x02_InfoQuery)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockODirService_InfoQuery_Call) Return(_a0 wire.SNACMessage, _a1 error) *mockODirService_InfoQuery_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockODirService_InfoQuery_Call) Return(sNACMessage wire.SNACMessage, err error) *mockODirService_InfoQuery_Call {
+	_c.Call.Return(sNACMessage, err)
 	return _c
 }
 
-func (_c *mockODirService_InfoQuery_Call) RunAndReturn(run func(context.Context, wire.SNACFrame, wire.SNAC_0x0F_0x02_InfoQuery) (wire.SNACMessage, error)) *mockODirService_InfoQuery_Call {
+func (_c *mockODirService_InfoQuery_Call) RunAndReturn(run func(ctx context.Context, inFrame wire.SNACFrame, inBody wire.SNAC_0x0F_0x02_InfoQuery) (wire.SNACMessage, error)) *mockODirService_InfoQuery_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// KeywordListQuery provides a mock function with given fields: _a0, _a1
-func (_m *mockODirService) KeywordListQuery(_a0 context.Context, _a1 wire.SNACFrame) (wire.SNACMessage, error) {
-	ret := _m.Called(_a0, _a1)
+// KeywordListQuery provides a mock function for the type mockODirService
+func (_mock *mockODirService) KeywordListQuery(context1 context.Context, sNACFrame wire.SNACFrame) (wire.SNACMessage, error) {
+	ret := _mock.Called(context1, sNACFrame)
 
 	if len(ret) == 0 {
 		panic("no return value specified for KeywordListQuery")
@@ -90,21 +120,19 @@ func (_m *mockODirService) KeywordListQuery(_a0 context.Context, _a1 wire.SNACFr
 
 	var r0 wire.SNACMessage
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, wire.SNACFrame) (wire.SNACMessage, error)); ok {
-		return rf(_a0, _a1)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, wire.SNACFrame) (wire.SNACMessage, error)); ok {
+		return returnFunc(context1, sNACFrame)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, wire.SNACFrame) wire.SNACMessage); ok {
-		r0 = rf(_a0, _a1)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, wire.SNACFrame) wire.SNACMessage); ok {
+		r0 = returnFunc(context1, sNACFrame)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, wire.SNACFrame) error); ok {
-		r1 = rf(_a0, _a1)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, wire.SNACFrame) error); ok {
+		r1 = returnFunc(context1, sNACFrame)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -114,39 +142,36 @@ type mockODirService_KeywordListQuery_Call struct {
 }
 
 // KeywordListQuery is a helper method to define mock.On call
-//   - _a0 context.Context
-//   - _a1 wire.SNACFrame
-func (_e *mockODirService_Expecter) KeywordListQuery(_a0 interface{}, _a1 interface{}) *mockODirService_KeywordListQuery_Call {
-	return &mockODirService_KeywordListQuery_Call{Call: _e.mock.On("KeywordListQuery", _a0, _a1)}
+//   - context1 context.Context
+//   - sNACFrame wire.SNACFrame
+func (_e *mockODirService_Expecter) KeywordListQuery(context1 interface{}, sNACFrame interface{}) *mockODirService_KeywordListQuery_Call {
+	return &mockODirService_KeywordListQuery_Call{Call: _e.mock.On("KeywordListQuery", context1, sNACFrame)}
 }
 
-func (_c *mockODirService_KeywordListQuery_Call) Run(run func(_a0 context.Context, _a1 wire.SNACFrame)) *mockODirService_KeywordListQuery_Call {
+func (_c *mockODirService_KeywordListQuery_Call) Run(run func(context1 context.Context, sNACFrame wire.SNACFrame)) *mockODirService_KeywordListQuery_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(wire.SNACFrame))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 wire.SNACFrame
+		if args[1] != nil {
+			arg1 = args[1].(wire.SNACFrame)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockODirService_KeywordListQuery_Call) Return(_a0 wire.SNACMessage, _a1 error) *mockODirService_KeywordListQuery_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockODirService_KeywordListQuery_Call) Return(sNACMessage wire.SNACMessage, err error) *mockODirService_KeywordListQuery_Call {
+	_c.Call.Return(sNACMessage, err)
 	return _c
 }
 
-func (_c *mockODirService_KeywordListQuery_Call) RunAndReturn(run func(context.Context, wire.SNACFrame) (wire.SNACMessage, error)) *mockODirService_KeywordListQuery_Call {
+func (_c *mockODirService_KeywordListQuery_Call) RunAndReturn(run func(context1 context.Context, sNACFrame wire.SNACFrame) (wire.SNACMessage, error)) *mockODirService_KeywordListQuery_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockODirService creates a new instance of mockODirService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockODirService(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockODirService {
-	mock := &mockODirService{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 33 - 26
server/oscar/mock_online_notifier_test.go

@@ -1,12 +1,28 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package oscar
 
 import (
-	wire "github.com/mk6i/retro-aim-server/wire"
+	"github.com/mk6i/retro-aim-server/wire"
 	mock "github.com/stretchr/testify/mock"
 )
 
+// newMockOnlineNotifier creates a new instance of mockOnlineNotifier. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockOnlineNotifier(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockOnlineNotifier {
+	mock := &mockOnlineNotifier{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockOnlineNotifier is an autogenerated mock type for the OnlineNotifier type
 type mockOnlineNotifier struct {
 	mock.Mock
@@ -20,21 +36,20 @@ func (_m *mockOnlineNotifier) EXPECT() *mockOnlineNotifier_Expecter {
 	return &mockOnlineNotifier_Expecter{mock: &_m.Mock}
 }
 
-// HostOnline provides a mock function with given fields: service
-func (_m *mockOnlineNotifier) HostOnline(service uint16) wire.SNACMessage {
-	ret := _m.Called(service)
+// HostOnline provides a mock function for the type mockOnlineNotifier
+func (_mock *mockOnlineNotifier) HostOnline(service uint16) wire.SNACMessage {
+	ret := _mock.Called(service)
 
 	if len(ret) == 0 {
 		panic("no return value specified for HostOnline")
 	}
 
 	var r0 wire.SNACMessage
-	if rf, ok := ret.Get(0).(func(uint16) wire.SNACMessage); ok {
-		r0 = rf(service)
+	if returnFunc, ok := ret.Get(0).(func(uint16) wire.SNACMessage); ok {
+		r0 = returnFunc(service)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
 	return r0
 }
 
@@ -51,31 +66,23 @@ func (_e *mockOnlineNotifier_Expecter) HostOnline(service interface{}) *mockOnli
 
 func (_c *mockOnlineNotifier_HostOnline_Call) Run(run func(service uint16)) *mockOnlineNotifier_HostOnline_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(uint16))
+		var arg0 uint16
+		if args[0] != nil {
+			arg0 = args[0].(uint16)
+		}
+		run(
+			arg0,
+		)
 	})
 	return _c
 }
 
-func (_c *mockOnlineNotifier_HostOnline_Call) Return(_a0 wire.SNACMessage) *mockOnlineNotifier_HostOnline_Call {
-	_c.Call.Return(_a0)
+func (_c *mockOnlineNotifier_HostOnline_Call) Return(sNACMessage wire.SNACMessage) *mockOnlineNotifier_HostOnline_Call {
+	_c.Call.Return(sNACMessage)
 	return _c
 }
 
-func (_c *mockOnlineNotifier_HostOnline_Call) RunAndReturn(run func(uint16) wire.SNACMessage) *mockOnlineNotifier_HostOnline_Call {
+func (_c *mockOnlineNotifier_HostOnline_Call) RunAndReturn(run func(service uint16) wire.SNACMessage) *mockOnlineNotifier_HostOnline_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockOnlineNotifier creates a new instance of mockOnlineNotifier. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockOnlineNotifier(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockOnlineNotifier {
-	mock := &mockOnlineNotifier{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 293 - 127
server/oscar/mock_oservice_service_test.go

@@ -1,18 +1,31 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package oscar
 
 import (
-	context "context"
-
-	config "github.com/mk6i/retro-aim-server/config"
+	"context"
 
+	"github.com/mk6i/retro-aim-server/config"
+	"github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/wire"
 	mock "github.com/stretchr/testify/mock"
+)
+
+// newMockOServiceService creates a new instance of mockOServiceService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockOServiceService(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockOServiceService {
+	mock := &mockOServiceService{}
+	mock.Mock.Test(t)
 
-	state "github.com/mk6i/retro-aim-server/state"
+	t.Cleanup(func() { mock.AssertExpectations(t) })
 
-	wire "github.com/mk6i/retro-aim-server/wire"
-)
+	return mock
+}
 
 // mockOServiceService is an autogenerated mock type for the OServiceService type
 type mockOServiceService struct {
@@ -27,21 +40,20 @@ func (_m *mockOServiceService) EXPECT() *mockOServiceService_Expecter {
 	return &mockOServiceService_Expecter{mock: &_m.Mock}
 }
 
-// ClientOnline provides a mock function with given fields: ctx, service, bodyIn, sess
-func (_m *mockOServiceService) ClientOnline(ctx context.Context, service uint16, bodyIn wire.SNAC_0x01_0x02_OServiceClientOnline, sess *state.Session) error {
-	ret := _m.Called(ctx, service, bodyIn, sess)
+// ClientOnline provides a mock function for the type mockOServiceService
+func (_mock *mockOServiceService) ClientOnline(ctx context.Context, service uint16, bodyIn wire.SNAC_0x01_0x02_OServiceClientOnline, sess *state.Session) error {
+	ret := _mock.Called(ctx, service, bodyIn, sess)
 
 	if len(ret) == 0 {
 		panic("no return value specified for ClientOnline")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, uint16, wire.SNAC_0x01_0x02_OServiceClientOnline, *state.Session) error); ok {
-		r0 = rf(ctx, service, bodyIn, sess)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, uint16, wire.SNAC_0x01_0x02_OServiceClientOnline, *state.Session) error); ok {
+		r0 = returnFunc(ctx, service, bodyIn, sess)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -61,36 +73,56 @@ func (_e *mockOServiceService_Expecter) ClientOnline(ctx interface{}, service in
 
 func (_c *mockOServiceService_ClientOnline_Call) Run(run func(ctx context.Context, service uint16, bodyIn wire.SNAC_0x01_0x02_OServiceClientOnline, sess *state.Session)) *mockOServiceService_ClientOnline_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(uint16), args[2].(wire.SNAC_0x01_0x02_OServiceClientOnline), args[3].(*state.Session))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 uint16
+		if args[1] != nil {
+			arg1 = args[1].(uint16)
+		}
+		var arg2 wire.SNAC_0x01_0x02_OServiceClientOnline
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNAC_0x01_0x02_OServiceClientOnline)
+		}
+		var arg3 *state.Session
+		if args[3] != nil {
+			arg3 = args[3].(*state.Session)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+			arg3,
+		)
 	})
 	return _c
 }
 
-func (_c *mockOServiceService_ClientOnline_Call) Return(_a0 error) *mockOServiceService_ClientOnline_Call {
-	_c.Call.Return(_a0)
+func (_c *mockOServiceService_ClientOnline_Call) Return(err error) *mockOServiceService_ClientOnline_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockOServiceService_ClientOnline_Call) RunAndReturn(run func(context.Context, uint16, wire.SNAC_0x01_0x02_OServiceClientOnline, *state.Session) error) *mockOServiceService_ClientOnline_Call {
+func (_c *mockOServiceService_ClientOnline_Call) RunAndReturn(run func(ctx context.Context, service uint16, bodyIn wire.SNAC_0x01_0x02_OServiceClientOnline, sess *state.Session) error) *mockOServiceService_ClientOnline_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// ClientVersions provides a mock function with given fields: ctx, sess, frame, bodyIn
-func (_m *mockOServiceService) ClientVersions(ctx context.Context, sess *state.Session, frame wire.SNACFrame, bodyIn wire.SNAC_0x01_0x17_OServiceClientVersions) wire.SNACMessage {
-	ret := _m.Called(ctx, sess, frame, bodyIn)
+// ClientVersions provides a mock function for the type mockOServiceService
+func (_mock *mockOServiceService) ClientVersions(ctx context.Context, sess *state.Session, frame wire.SNACFrame, bodyIn wire.SNAC_0x01_0x17_OServiceClientVersions) wire.SNACMessage {
+	ret := _mock.Called(ctx, sess, frame, bodyIn)
 
 	if len(ret) == 0 {
 		panic("no return value specified for ClientVersions")
 	}
 
 	var r0 wire.SNACMessage
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x01_0x17_OServiceClientVersions) wire.SNACMessage); ok {
-		r0 = rf(ctx, sess, frame, bodyIn)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x01_0x17_OServiceClientVersions) wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, sess, frame, bodyIn)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
 	return r0
 }
 
@@ -110,36 +142,56 @@ func (_e *mockOServiceService_Expecter) ClientVersions(ctx interface{}, sess int
 
 func (_c *mockOServiceService_ClientVersions_Call) Run(run func(ctx context.Context, sess *state.Session, frame wire.SNACFrame, bodyIn wire.SNAC_0x01_0x17_OServiceClientVersions)) *mockOServiceService_ClientVersions_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(wire.SNACFrame), args[3].(wire.SNAC_0x01_0x17_OServiceClientVersions))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 wire.SNACFrame
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNACFrame)
+		}
+		var arg3 wire.SNAC_0x01_0x17_OServiceClientVersions
+		if args[3] != nil {
+			arg3 = args[3].(wire.SNAC_0x01_0x17_OServiceClientVersions)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+			arg3,
+		)
 	})
 	return _c
 }
 
-func (_c *mockOServiceService_ClientVersions_Call) Return(_a0 wire.SNACMessage) *mockOServiceService_ClientVersions_Call {
-	_c.Call.Return(_a0)
+func (_c *mockOServiceService_ClientVersions_Call) Return(sNACMessage wire.SNACMessage) *mockOServiceService_ClientVersions_Call {
+	_c.Call.Return(sNACMessage)
 	return _c
 }
 
-func (_c *mockOServiceService_ClientVersions_Call) RunAndReturn(run func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x01_0x17_OServiceClientVersions) wire.SNACMessage) *mockOServiceService_ClientVersions_Call {
+func (_c *mockOServiceService_ClientVersions_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session, frame wire.SNACFrame, bodyIn wire.SNAC_0x01_0x17_OServiceClientVersions) wire.SNACMessage) *mockOServiceService_ClientVersions_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// HostOnline provides a mock function with given fields: service
-func (_m *mockOServiceService) HostOnline(service uint16) wire.SNACMessage {
-	ret := _m.Called(service)
+// HostOnline provides a mock function for the type mockOServiceService
+func (_mock *mockOServiceService) HostOnline(service uint16) wire.SNACMessage {
+	ret := _mock.Called(service)
 
 	if len(ret) == 0 {
 		panic("no return value specified for HostOnline")
 	}
 
 	var r0 wire.SNACMessage
-	if rf, ok := ret.Get(0).(func(uint16) wire.SNACMessage); ok {
-		r0 = rf(service)
+	if returnFunc, ok := ret.Get(0).(func(uint16) wire.SNACMessage); ok {
+		r0 = returnFunc(service)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
 	return r0
 }
 
@@ -156,36 +208,41 @@ func (_e *mockOServiceService_Expecter) HostOnline(service interface{}) *mockOSe
 
 func (_c *mockOServiceService_HostOnline_Call) Run(run func(service uint16)) *mockOServiceService_HostOnline_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(uint16))
+		var arg0 uint16
+		if args[0] != nil {
+			arg0 = args[0].(uint16)
+		}
+		run(
+			arg0,
+		)
 	})
 	return _c
 }
 
-func (_c *mockOServiceService_HostOnline_Call) Return(_a0 wire.SNACMessage) *mockOServiceService_HostOnline_Call {
-	_c.Call.Return(_a0)
+func (_c *mockOServiceService_HostOnline_Call) Return(sNACMessage wire.SNACMessage) *mockOServiceService_HostOnline_Call {
+	_c.Call.Return(sNACMessage)
 	return _c
 }
 
-func (_c *mockOServiceService_HostOnline_Call) RunAndReturn(run func(uint16) wire.SNACMessage) *mockOServiceService_HostOnline_Call {
+func (_c *mockOServiceService_HostOnline_Call) RunAndReturn(run func(service uint16) wire.SNACMessage) *mockOServiceService_HostOnline_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// IdleNotification provides a mock function with given fields: ctx, sess, bodyIn
-func (_m *mockOServiceService) IdleNotification(ctx context.Context, sess *state.Session, bodyIn wire.SNAC_0x01_0x11_OServiceIdleNotification) error {
-	ret := _m.Called(ctx, sess, bodyIn)
+// IdleNotification provides a mock function for the type mockOServiceService
+func (_mock *mockOServiceService) IdleNotification(ctx context.Context, sess *state.Session, bodyIn wire.SNAC_0x01_0x11_OServiceIdleNotification) error {
+	ret := _mock.Called(ctx, sess, bodyIn)
 
 	if len(ret) == 0 {
 		panic("no return value specified for IdleNotification")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNAC_0x01_0x11_OServiceIdleNotification) error); ok {
-		r0 = rf(ctx, sess, bodyIn)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNAC_0x01_0x11_OServiceIdleNotification) error); ok {
+		r0 = returnFunc(ctx, sess, bodyIn)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -204,36 +261,51 @@ func (_e *mockOServiceService_Expecter) IdleNotification(ctx interface{}, sess i
 
 func (_c *mockOServiceService_IdleNotification_Call) Run(run func(ctx context.Context, sess *state.Session, bodyIn wire.SNAC_0x01_0x11_OServiceIdleNotification)) *mockOServiceService_IdleNotification_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(wire.SNAC_0x01_0x11_OServiceIdleNotification))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 wire.SNAC_0x01_0x11_OServiceIdleNotification
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNAC_0x01_0x11_OServiceIdleNotification)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockOServiceService_IdleNotification_Call) Return(_a0 error) *mockOServiceService_IdleNotification_Call {
-	_c.Call.Return(_a0)
+func (_c *mockOServiceService_IdleNotification_Call) Return(err error) *mockOServiceService_IdleNotification_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockOServiceService_IdleNotification_Call) RunAndReturn(run func(context.Context, *state.Session, wire.SNAC_0x01_0x11_OServiceIdleNotification) error) *mockOServiceService_IdleNotification_Call {
+func (_c *mockOServiceService_IdleNotification_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session, bodyIn wire.SNAC_0x01_0x11_OServiceIdleNotification) error) *mockOServiceService_IdleNotification_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// RateParamsQuery provides a mock function with given fields: ctx, sess, frame
-func (_m *mockOServiceService) RateParamsQuery(ctx context.Context, sess *state.Session, frame wire.SNACFrame) wire.SNACMessage {
-	ret := _m.Called(ctx, sess, frame)
+// RateParamsQuery provides a mock function for the type mockOServiceService
+func (_mock *mockOServiceService) RateParamsQuery(ctx context.Context, sess *state.Session, frame wire.SNACFrame) wire.SNACMessage {
+	ret := _mock.Called(ctx, sess, frame)
 
 	if len(ret) == 0 {
 		panic("no return value specified for RateParamsQuery")
 	}
 
 	var r0 wire.SNACMessage
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame) wire.SNACMessage); ok {
-		r0 = rf(ctx, sess, frame)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame) wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, sess, frame)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
 	return r0
 }
 
@@ -252,24 +324,41 @@ func (_e *mockOServiceService_Expecter) RateParamsQuery(ctx interface{}, sess in
 
 func (_c *mockOServiceService_RateParamsQuery_Call) Run(run func(ctx context.Context, sess *state.Session, frame wire.SNACFrame)) *mockOServiceService_RateParamsQuery_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(wire.SNACFrame))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 wire.SNACFrame
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNACFrame)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockOServiceService_RateParamsQuery_Call) Return(_a0 wire.SNACMessage) *mockOServiceService_RateParamsQuery_Call {
-	_c.Call.Return(_a0)
+func (_c *mockOServiceService_RateParamsQuery_Call) Return(sNACMessage wire.SNACMessage) *mockOServiceService_RateParamsQuery_Call {
+	_c.Call.Return(sNACMessage)
 	return _c
 }
 
-func (_c *mockOServiceService_RateParamsQuery_Call) RunAndReturn(run func(context.Context, *state.Session, wire.SNACFrame) wire.SNACMessage) *mockOServiceService_RateParamsQuery_Call {
+func (_c *mockOServiceService_RateParamsQuery_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session, frame wire.SNACFrame) wire.SNACMessage) *mockOServiceService_RateParamsQuery_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// RateParamsSubAdd provides a mock function with given fields: _a0, _a1, _a2
-func (_m *mockOServiceService) RateParamsSubAdd(_a0 context.Context, _a1 *state.Session, _a2 wire.SNAC_0x01_0x08_OServiceRateParamsSubAdd) {
-	_m.Called(_a0, _a1, _a2)
+// RateParamsSubAdd provides a mock function for the type mockOServiceService
+func (_mock *mockOServiceService) RateParamsSubAdd(context1 context.Context, session *state.Session, sNAC_0x01_0x08_OServiceRateParamsSubAdd wire.SNAC_0x01_0x08_OServiceRateParamsSubAdd) {
+	_mock.Called(context1, session, sNAC_0x01_0x08_OServiceRateParamsSubAdd)
+	return
 }
 
 // mockOServiceService_RateParamsSubAdd_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'RateParamsSubAdd'
@@ -278,16 +367,32 @@ type mockOServiceService_RateParamsSubAdd_Call struct {
 }
 
 // RateParamsSubAdd is a helper method to define mock.On call
-//   - _a0 context.Context
-//   - _a1 *state.Session
-//   - _a2 wire.SNAC_0x01_0x08_OServiceRateParamsSubAdd
-func (_e *mockOServiceService_Expecter) RateParamsSubAdd(_a0 interface{}, _a1 interface{}, _a2 interface{}) *mockOServiceService_RateParamsSubAdd_Call {
-	return &mockOServiceService_RateParamsSubAdd_Call{Call: _e.mock.On("RateParamsSubAdd", _a0, _a1, _a2)}
+//   - context1 context.Context
+//   - session *state.Session
+//   - sNAC_0x01_0x08_OServiceRateParamsSubAdd wire.SNAC_0x01_0x08_OServiceRateParamsSubAdd
+func (_e *mockOServiceService_Expecter) RateParamsSubAdd(context1 interface{}, session interface{}, sNAC_0x01_0x08_OServiceRateParamsSubAdd interface{}) *mockOServiceService_RateParamsSubAdd_Call {
+	return &mockOServiceService_RateParamsSubAdd_Call{Call: _e.mock.On("RateParamsSubAdd", context1, session, sNAC_0x01_0x08_OServiceRateParamsSubAdd)}
 }
 
-func (_c *mockOServiceService_RateParamsSubAdd_Call) Run(run func(_a0 context.Context, _a1 *state.Session, _a2 wire.SNAC_0x01_0x08_OServiceRateParamsSubAdd)) *mockOServiceService_RateParamsSubAdd_Call {
+func (_c *mockOServiceService_RateParamsSubAdd_Call) Run(run func(context1 context.Context, session *state.Session, sNAC_0x01_0x08_OServiceRateParamsSubAdd wire.SNAC_0x01_0x08_OServiceRateParamsSubAdd)) *mockOServiceService_RateParamsSubAdd_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(wire.SNAC_0x01_0x08_OServiceRateParamsSubAdd))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 wire.SNAC_0x01_0x08_OServiceRateParamsSubAdd
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNAC_0x01_0x08_OServiceRateParamsSubAdd)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
@@ -297,14 +402,14 @@ func (_c *mockOServiceService_RateParamsSubAdd_Call) Return() *mockOServiceServi
 	return _c
 }
 
-func (_c *mockOServiceService_RateParamsSubAdd_Call) RunAndReturn(run func(context.Context, *state.Session, wire.SNAC_0x01_0x08_OServiceRateParamsSubAdd)) *mockOServiceService_RateParamsSubAdd_Call {
+func (_c *mockOServiceService_RateParamsSubAdd_Call) RunAndReturn(run func(context1 context.Context, session *state.Session, sNAC_0x01_0x08_OServiceRateParamsSubAdd wire.SNAC_0x01_0x08_OServiceRateParamsSubAdd)) *mockOServiceService_RateParamsSubAdd_Call {
 	_c.Run(run)
 	return _c
 }
 
-// ServiceRequest provides a mock function with given fields: ctx, service, sess, frame, bodyIn, advertisedHost
-func (_m *mockOServiceService) ServiceRequest(ctx context.Context, service uint16, sess *state.Session, frame wire.SNACFrame, bodyIn wire.SNAC_0x01_0x04_OServiceServiceRequest, advertisedHost config.Listener) (wire.SNACMessage, error) {
-	ret := _m.Called(ctx, service, sess, frame, bodyIn, advertisedHost)
+// ServiceRequest provides a mock function for the type mockOServiceService
+func (_mock *mockOServiceService) ServiceRequest(ctx context.Context, service uint16, sess *state.Session, frame wire.SNACFrame, bodyIn wire.SNAC_0x01_0x04_OServiceServiceRequest, advertisedHost config.Listener) (wire.SNACMessage, error) {
+	ret := _mock.Called(ctx, service, sess, frame, bodyIn, advertisedHost)
 
 	if len(ret) == 0 {
 		panic("no return value specified for ServiceRequest")
@@ -312,21 +417,19 @@ func (_m *mockOServiceService) ServiceRequest(ctx context.Context, service uint1
 
 	var r0 wire.SNACMessage
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, uint16, *state.Session, wire.SNACFrame, wire.SNAC_0x01_0x04_OServiceServiceRequest, config.Listener) (wire.SNACMessage, error)); ok {
-		return rf(ctx, service, sess, frame, bodyIn, advertisedHost)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, uint16, *state.Session, wire.SNACFrame, wire.SNAC_0x01_0x04_OServiceServiceRequest, config.Listener) (wire.SNACMessage, error)); ok {
+		return returnFunc(ctx, service, sess, frame, bodyIn, advertisedHost)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, uint16, *state.Session, wire.SNACFrame, wire.SNAC_0x01_0x04_OServiceServiceRequest, config.Listener) wire.SNACMessage); ok {
-		r0 = rf(ctx, service, sess, frame, bodyIn, advertisedHost)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, uint16, *state.Session, wire.SNACFrame, wire.SNAC_0x01_0x04_OServiceServiceRequest, config.Listener) wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, service, sess, frame, bodyIn, advertisedHost)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, uint16, *state.Session, wire.SNACFrame, wire.SNAC_0x01_0x04_OServiceServiceRequest, config.Listener) error); ok {
-		r1 = rf(ctx, service, sess, frame, bodyIn, advertisedHost)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, uint16, *state.Session, wire.SNACFrame, wire.SNAC_0x01_0x04_OServiceServiceRequest, config.Listener) error); ok {
+		r1 = returnFunc(ctx, service, sess, frame, bodyIn, advertisedHost)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -348,24 +451,56 @@ func (_e *mockOServiceService_Expecter) ServiceRequest(ctx interface{}, service
 
 func (_c *mockOServiceService_ServiceRequest_Call) Run(run func(ctx context.Context, service uint16, sess *state.Session, frame wire.SNACFrame, bodyIn wire.SNAC_0x01_0x04_OServiceServiceRequest, advertisedHost config.Listener)) *mockOServiceService_ServiceRequest_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(uint16), args[2].(*state.Session), args[3].(wire.SNACFrame), args[4].(wire.SNAC_0x01_0x04_OServiceServiceRequest), args[5].(config.Listener))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 uint16
+		if args[1] != nil {
+			arg1 = args[1].(uint16)
+		}
+		var arg2 *state.Session
+		if args[2] != nil {
+			arg2 = args[2].(*state.Session)
+		}
+		var arg3 wire.SNACFrame
+		if args[3] != nil {
+			arg3 = args[3].(wire.SNACFrame)
+		}
+		var arg4 wire.SNAC_0x01_0x04_OServiceServiceRequest
+		if args[4] != nil {
+			arg4 = args[4].(wire.SNAC_0x01_0x04_OServiceServiceRequest)
+		}
+		var arg5 config.Listener
+		if args[5] != nil {
+			arg5 = args[5].(config.Listener)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+			arg3,
+			arg4,
+			arg5,
+		)
 	})
 	return _c
 }
 
-func (_c *mockOServiceService_ServiceRequest_Call) Return(_a0 wire.SNACMessage, _a1 error) *mockOServiceService_ServiceRequest_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockOServiceService_ServiceRequest_Call) Return(sNACMessage wire.SNACMessage, err error) *mockOServiceService_ServiceRequest_Call {
+	_c.Call.Return(sNACMessage, err)
 	return _c
 }
 
-func (_c *mockOServiceService_ServiceRequest_Call) RunAndReturn(run func(context.Context, uint16, *state.Session, wire.SNACFrame, wire.SNAC_0x01_0x04_OServiceServiceRequest, config.Listener) (wire.SNACMessage, error)) *mockOServiceService_ServiceRequest_Call {
+func (_c *mockOServiceService_ServiceRequest_Call) RunAndReturn(run func(ctx context.Context, service uint16, sess *state.Session, frame wire.SNACFrame, bodyIn wire.SNAC_0x01_0x04_OServiceServiceRequest, advertisedHost config.Listener) (wire.SNACMessage, error)) *mockOServiceService_ServiceRequest_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// SetPrivacyFlags provides a mock function with given fields: ctx, bodyIn
-func (_m *mockOServiceService) SetPrivacyFlags(ctx context.Context, bodyIn wire.SNAC_0x01_0x14_OServiceSetPrivacyFlags) {
-	_m.Called(ctx, bodyIn)
+// SetPrivacyFlags provides a mock function for the type mockOServiceService
+func (_mock *mockOServiceService) SetPrivacyFlags(ctx context.Context, bodyIn wire.SNAC_0x01_0x14_OServiceSetPrivacyFlags) {
+	_mock.Called(ctx, bodyIn)
+	return
 }
 
 // mockOServiceService_SetPrivacyFlags_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'SetPrivacyFlags'
@@ -382,7 +517,18 @@ func (_e *mockOServiceService_Expecter) SetPrivacyFlags(ctx interface{}, bodyIn
 
 func (_c *mockOServiceService_SetPrivacyFlags_Call) Run(run func(ctx context.Context, bodyIn wire.SNAC_0x01_0x14_OServiceSetPrivacyFlags)) *mockOServiceService_SetPrivacyFlags_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(wire.SNAC_0x01_0x14_OServiceSetPrivacyFlags))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 wire.SNAC_0x01_0x14_OServiceSetPrivacyFlags
+		if args[1] != nil {
+			arg1 = args[1].(wire.SNAC_0x01_0x14_OServiceSetPrivacyFlags)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
@@ -392,14 +538,14 @@ func (_c *mockOServiceService_SetPrivacyFlags_Call) Return() *mockOServiceServic
 	return _c
 }
 
-func (_c *mockOServiceService_SetPrivacyFlags_Call) RunAndReturn(run func(context.Context, wire.SNAC_0x01_0x14_OServiceSetPrivacyFlags)) *mockOServiceService_SetPrivacyFlags_Call {
+func (_c *mockOServiceService_SetPrivacyFlags_Call) RunAndReturn(run func(ctx context.Context, bodyIn wire.SNAC_0x01_0x14_OServiceSetPrivacyFlags)) *mockOServiceService_SetPrivacyFlags_Call {
 	_c.Run(run)
 	return _c
 }
 
-// SetUserInfoFields provides a mock function with given fields: ctx, sess, frame, bodyIn
-func (_m *mockOServiceService) SetUserInfoFields(ctx context.Context, sess *state.Session, frame wire.SNACFrame, bodyIn wire.SNAC_0x01_0x1E_OServiceSetUserInfoFields) (wire.SNACMessage, error) {
-	ret := _m.Called(ctx, sess, frame, bodyIn)
+// SetUserInfoFields provides a mock function for the type mockOServiceService
+func (_mock *mockOServiceService) SetUserInfoFields(ctx context.Context, sess *state.Session, frame wire.SNACFrame, bodyIn wire.SNAC_0x01_0x1E_OServiceSetUserInfoFields) (wire.SNACMessage, error) {
+	ret := _mock.Called(ctx, sess, frame, bodyIn)
 
 	if len(ret) == 0 {
 		panic("no return value specified for SetUserInfoFields")
@@ -407,21 +553,19 @@ func (_m *mockOServiceService) SetUserInfoFields(ctx context.Context, sess *stat
 
 	var r0 wire.SNACMessage
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x01_0x1E_OServiceSetUserInfoFields) (wire.SNACMessage, error)); ok {
-		return rf(ctx, sess, frame, bodyIn)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x01_0x1E_OServiceSetUserInfoFields) (wire.SNACMessage, error)); ok {
+		return returnFunc(ctx, sess, frame, bodyIn)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x01_0x1E_OServiceSetUserInfoFields) wire.SNACMessage); ok {
-		r0 = rf(ctx, sess, frame, bodyIn)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x01_0x1E_OServiceSetUserInfoFields) wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, sess, frame, bodyIn)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x01_0x1E_OServiceSetUserInfoFields) error); ok {
-		r1 = rf(ctx, sess, frame, bodyIn)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x01_0x1E_OServiceSetUserInfoFields) error); ok {
+		r1 = returnFunc(ctx, sess, frame, bodyIn)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -441,36 +585,56 @@ func (_e *mockOServiceService_Expecter) SetUserInfoFields(ctx interface{}, sess
 
 func (_c *mockOServiceService_SetUserInfoFields_Call) Run(run func(ctx context.Context, sess *state.Session, frame wire.SNACFrame, bodyIn wire.SNAC_0x01_0x1E_OServiceSetUserInfoFields)) *mockOServiceService_SetUserInfoFields_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(wire.SNACFrame), args[3].(wire.SNAC_0x01_0x1E_OServiceSetUserInfoFields))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 wire.SNACFrame
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNACFrame)
+		}
+		var arg3 wire.SNAC_0x01_0x1E_OServiceSetUserInfoFields
+		if args[3] != nil {
+			arg3 = args[3].(wire.SNAC_0x01_0x1E_OServiceSetUserInfoFields)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+			arg3,
+		)
 	})
 	return _c
 }
 
-func (_c *mockOServiceService_SetUserInfoFields_Call) Return(_a0 wire.SNACMessage, _a1 error) *mockOServiceService_SetUserInfoFields_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockOServiceService_SetUserInfoFields_Call) Return(sNACMessage wire.SNACMessage, err error) *mockOServiceService_SetUserInfoFields_Call {
+	_c.Call.Return(sNACMessage, err)
 	return _c
 }
 
-func (_c *mockOServiceService_SetUserInfoFields_Call) RunAndReturn(run func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x01_0x1E_OServiceSetUserInfoFields) (wire.SNACMessage, error)) *mockOServiceService_SetUserInfoFields_Call {
+func (_c *mockOServiceService_SetUserInfoFields_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session, frame wire.SNACFrame, bodyIn wire.SNAC_0x01_0x1E_OServiceSetUserInfoFields) (wire.SNACMessage, error)) *mockOServiceService_SetUserInfoFields_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// UserInfoQuery provides a mock function with given fields: ctx, sess, frame
-func (_m *mockOServiceService) UserInfoQuery(ctx context.Context, sess *state.Session, frame wire.SNACFrame) wire.SNACMessage {
-	ret := _m.Called(ctx, sess, frame)
+// UserInfoQuery provides a mock function for the type mockOServiceService
+func (_mock *mockOServiceService) UserInfoQuery(ctx context.Context, sess *state.Session, frame wire.SNACFrame) wire.SNACMessage {
+	ret := _mock.Called(ctx, sess, frame)
 
 	if len(ret) == 0 {
 		panic("no return value specified for UserInfoQuery")
 	}
 
 	var r0 wire.SNACMessage
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame) wire.SNACMessage); ok {
-		r0 = rf(ctx, sess, frame)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame) wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, sess, frame)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
 	return r0
 }
 
@@ -489,31 +653,33 @@ func (_e *mockOServiceService_Expecter) UserInfoQuery(ctx interface{}, sess inte
 
 func (_c *mockOServiceService_UserInfoQuery_Call) Run(run func(ctx context.Context, sess *state.Session, frame wire.SNACFrame)) *mockOServiceService_UserInfoQuery_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(wire.SNACFrame))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 wire.SNACFrame
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNACFrame)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockOServiceService_UserInfoQuery_Call) Return(_a0 wire.SNACMessage) *mockOServiceService_UserInfoQuery_Call {
-	_c.Call.Return(_a0)
+func (_c *mockOServiceService_UserInfoQuery_Call) Return(sNACMessage wire.SNACMessage) *mockOServiceService_UserInfoQuery_Call {
+	_c.Call.Return(sNACMessage)
 	return _c
 }
 
-func (_c *mockOServiceService_UserInfoQuery_Call) RunAndReturn(run func(context.Context, *state.Session, wire.SNACFrame) wire.SNACMessage) *mockOServiceService_UserInfoQuery_Call {
+func (_c *mockOServiceService_UserInfoQuery_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session, frame wire.SNACFrame) wire.SNACMessage) *mockOServiceService_UserInfoQuery_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockOServiceService creates a new instance of mockOServiceService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockOServiceService(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockOServiceService {
-	mock := &mockOServiceService{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 144 - 73
server/oscar/mock_permit_deny_service_test.go

@@ -1,16 +1,31 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package oscar
 
 import (
-	context "context"
+	"context"
 
-	state "github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/wire"
 	mock "github.com/stretchr/testify/mock"
-
-	wire "github.com/mk6i/retro-aim-server/wire"
 )
 
+// newMockPermitDenyService creates a new instance of mockPermitDenyService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockPermitDenyService(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockPermitDenyService {
+	mock := &mockPermitDenyService{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockPermitDenyService is an autogenerated mock type for the PermitDenyService type
 type mockPermitDenyService struct {
 	mock.Mock
@@ -24,21 +39,20 @@ func (_m *mockPermitDenyService) EXPECT() *mockPermitDenyService_Expecter {
 	return &mockPermitDenyService_Expecter{mock: &_m.Mock}
 }
 
-// AddDenyListEntries provides a mock function with given fields: ctx, sess, body
-func (_m *mockPermitDenyService) AddDenyListEntries(ctx context.Context, sess *state.Session, body wire.SNAC_0x09_0x07_PermitDenyAddDenyListEntries) error {
-	ret := _m.Called(ctx, sess, body)
+// AddDenyListEntries provides a mock function for the type mockPermitDenyService
+func (_mock *mockPermitDenyService) AddDenyListEntries(ctx context.Context, sess *state.Session, body wire.SNAC_0x09_0x07_PermitDenyAddDenyListEntries) error {
+	ret := _mock.Called(ctx, sess, body)
 
 	if len(ret) == 0 {
 		panic("no return value specified for AddDenyListEntries")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNAC_0x09_0x07_PermitDenyAddDenyListEntries) error); ok {
-		r0 = rf(ctx, sess, body)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNAC_0x09_0x07_PermitDenyAddDenyListEntries) error); ok {
+		r0 = returnFunc(ctx, sess, body)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -57,36 +71,51 @@ func (_e *mockPermitDenyService_Expecter) AddDenyListEntries(ctx interface{}, se
 
 func (_c *mockPermitDenyService_AddDenyListEntries_Call) Run(run func(ctx context.Context, sess *state.Session, body wire.SNAC_0x09_0x07_PermitDenyAddDenyListEntries)) *mockPermitDenyService_AddDenyListEntries_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(wire.SNAC_0x09_0x07_PermitDenyAddDenyListEntries))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 wire.SNAC_0x09_0x07_PermitDenyAddDenyListEntries
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNAC_0x09_0x07_PermitDenyAddDenyListEntries)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockPermitDenyService_AddDenyListEntries_Call) Return(_a0 error) *mockPermitDenyService_AddDenyListEntries_Call {
-	_c.Call.Return(_a0)
+func (_c *mockPermitDenyService_AddDenyListEntries_Call) Return(err error) *mockPermitDenyService_AddDenyListEntries_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockPermitDenyService_AddDenyListEntries_Call) RunAndReturn(run func(context.Context, *state.Session, wire.SNAC_0x09_0x07_PermitDenyAddDenyListEntries) error) *mockPermitDenyService_AddDenyListEntries_Call {
+func (_c *mockPermitDenyService_AddDenyListEntries_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session, body wire.SNAC_0x09_0x07_PermitDenyAddDenyListEntries) error) *mockPermitDenyService_AddDenyListEntries_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// AddPermListEntries provides a mock function with given fields: ctx, sess, body
-func (_m *mockPermitDenyService) AddPermListEntries(ctx context.Context, sess *state.Session, body wire.SNAC_0x09_0x05_PermitDenyAddPermListEntries) error {
-	ret := _m.Called(ctx, sess, body)
+// AddPermListEntries provides a mock function for the type mockPermitDenyService
+func (_mock *mockPermitDenyService) AddPermListEntries(ctx context.Context, sess *state.Session, body wire.SNAC_0x09_0x05_PermitDenyAddPermListEntries) error {
+	ret := _mock.Called(ctx, sess, body)
 
 	if len(ret) == 0 {
 		panic("no return value specified for AddPermListEntries")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNAC_0x09_0x05_PermitDenyAddPermListEntries) error); ok {
-		r0 = rf(ctx, sess, body)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNAC_0x09_0x05_PermitDenyAddPermListEntries) error); ok {
+		r0 = returnFunc(ctx, sess, body)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -105,36 +134,51 @@ func (_e *mockPermitDenyService_Expecter) AddPermListEntries(ctx interface{}, se
 
 func (_c *mockPermitDenyService_AddPermListEntries_Call) Run(run func(ctx context.Context, sess *state.Session, body wire.SNAC_0x09_0x05_PermitDenyAddPermListEntries)) *mockPermitDenyService_AddPermListEntries_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(wire.SNAC_0x09_0x05_PermitDenyAddPermListEntries))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 wire.SNAC_0x09_0x05_PermitDenyAddPermListEntries
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNAC_0x09_0x05_PermitDenyAddPermListEntries)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockPermitDenyService_AddPermListEntries_Call) Return(_a0 error) *mockPermitDenyService_AddPermListEntries_Call {
-	_c.Call.Return(_a0)
+func (_c *mockPermitDenyService_AddPermListEntries_Call) Return(err error) *mockPermitDenyService_AddPermListEntries_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockPermitDenyService_AddPermListEntries_Call) RunAndReturn(run func(context.Context, *state.Session, wire.SNAC_0x09_0x05_PermitDenyAddPermListEntries) error) *mockPermitDenyService_AddPermListEntries_Call {
+func (_c *mockPermitDenyService_AddPermListEntries_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session, body wire.SNAC_0x09_0x05_PermitDenyAddPermListEntries) error) *mockPermitDenyService_AddPermListEntries_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// DelDenyListEntries provides a mock function with given fields: ctx, sess, body
-func (_m *mockPermitDenyService) DelDenyListEntries(ctx context.Context, sess *state.Session, body wire.SNAC_0x09_0x08_PermitDenyDelDenyListEntries) error {
-	ret := _m.Called(ctx, sess, body)
+// DelDenyListEntries provides a mock function for the type mockPermitDenyService
+func (_mock *mockPermitDenyService) DelDenyListEntries(ctx context.Context, sess *state.Session, body wire.SNAC_0x09_0x08_PermitDenyDelDenyListEntries) error {
+	ret := _mock.Called(ctx, sess, body)
 
 	if len(ret) == 0 {
 		panic("no return value specified for DelDenyListEntries")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNAC_0x09_0x08_PermitDenyDelDenyListEntries) error); ok {
-		r0 = rf(ctx, sess, body)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNAC_0x09_0x08_PermitDenyDelDenyListEntries) error); ok {
+		r0 = returnFunc(ctx, sess, body)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -153,36 +197,51 @@ func (_e *mockPermitDenyService_Expecter) DelDenyListEntries(ctx interface{}, se
 
 func (_c *mockPermitDenyService_DelDenyListEntries_Call) Run(run func(ctx context.Context, sess *state.Session, body wire.SNAC_0x09_0x08_PermitDenyDelDenyListEntries)) *mockPermitDenyService_DelDenyListEntries_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(wire.SNAC_0x09_0x08_PermitDenyDelDenyListEntries))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 wire.SNAC_0x09_0x08_PermitDenyDelDenyListEntries
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNAC_0x09_0x08_PermitDenyDelDenyListEntries)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockPermitDenyService_DelDenyListEntries_Call) Return(_a0 error) *mockPermitDenyService_DelDenyListEntries_Call {
-	_c.Call.Return(_a0)
+func (_c *mockPermitDenyService_DelDenyListEntries_Call) Return(err error) *mockPermitDenyService_DelDenyListEntries_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockPermitDenyService_DelDenyListEntries_Call) RunAndReturn(run func(context.Context, *state.Session, wire.SNAC_0x09_0x08_PermitDenyDelDenyListEntries) error) *mockPermitDenyService_DelDenyListEntries_Call {
+func (_c *mockPermitDenyService_DelDenyListEntries_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session, body wire.SNAC_0x09_0x08_PermitDenyDelDenyListEntries) error) *mockPermitDenyService_DelDenyListEntries_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// DelPermListEntries provides a mock function with given fields: ctx, sess, body
-func (_m *mockPermitDenyService) DelPermListEntries(ctx context.Context, sess *state.Session, body wire.SNAC_0x09_0x06_PermitDenyDelPermListEntries) error {
-	ret := _m.Called(ctx, sess, body)
+// DelPermListEntries provides a mock function for the type mockPermitDenyService
+func (_mock *mockPermitDenyService) DelPermListEntries(ctx context.Context, sess *state.Session, body wire.SNAC_0x09_0x06_PermitDenyDelPermListEntries) error {
+	ret := _mock.Called(ctx, sess, body)
 
 	if len(ret) == 0 {
 		panic("no return value specified for DelPermListEntries")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNAC_0x09_0x06_PermitDenyDelPermListEntries) error); ok {
-		r0 = rf(ctx, sess, body)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNAC_0x09_0x06_PermitDenyDelPermListEntries) error); ok {
+		r0 = returnFunc(ctx, sess, body)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -201,36 +260,51 @@ func (_e *mockPermitDenyService_Expecter) DelPermListEntries(ctx interface{}, se
 
 func (_c *mockPermitDenyService_DelPermListEntries_Call) Run(run func(ctx context.Context, sess *state.Session, body wire.SNAC_0x09_0x06_PermitDenyDelPermListEntries)) *mockPermitDenyService_DelPermListEntries_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(wire.SNAC_0x09_0x06_PermitDenyDelPermListEntries))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 wire.SNAC_0x09_0x06_PermitDenyDelPermListEntries
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNAC_0x09_0x06_PermitDenyDelPermListEntries)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockPermitDenyService_DelPermListEntries_Call) Return(_a0 error) *mockPermitDenyService_DelPermListEntries_Call {
-	_c.Call.Return(_a0)
+func (_c *mockPermitDenyService_DelPermListEntries_Call) Return(err error) *mockPermitDenyService_DelPermListEntries_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockPermitDenyService_DelPermListEntries_Call) RunAndReturn(run func(context.Context, *state.Session, wire.SNAC_0x09_0x06_PermitDenyDelPermListEntries) error) *mockPermitDenyService_DelPermListEntries_Call {
+func (_c *mockPermitDenyService_DelPermListEntries_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session, body wire.SNAC_0x09_0x06_PermitDenyDelPermListEntries) error) *mockPermitDenyService_DelPermListEntries_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// RightsQuery provides a mock function with given fields: _a0, frame
-func (_m *mockPermitDenyService) RightsQuery(_a0 context.Context, frame wire.SNACFrame) wire.SNACMessage {
-	ret := _m.Called(_a0, frame)
+// RightsQuery provides a mock function for the type mockPermitDenyService
+func (_mock *mockPermitDenyService) RightsQuery(context1 context.Context, frame wire.SNACFrame) wire.SNACMessage {
+	ret := _mock.Called(context1, frame)
 
 	if len(ret) == 0 {
 		panic("no return value specified for RightsQuery")
 	}
 
 	var r0 wire.SNACMessage
-	if rf, ok := ret.Get(0).(func(context.Context, wire.SNACFrame) wire.SNACMessage); ok {
-		r0 = rf(_a0, frame)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, wire.SNACFrame) wire.SNACMessage); ok {
+		r0 = returnFunc(context1, frame)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
 	return r0
 }
 
@@ -240,39 +314,36 @@ type mockPermitDenyService_RightsQuery_Call struct {
 }
 
 // RightsQuery is a helper method to define mock.On call
-//   - _a0 context.Context
+//   - context1 context.Context
 //   - frame wire.SNACFrame
-func (_e *mockPermitDenyService_Expecter) RightsQuery(_a0 interface{}, frame interface{}) *mockPermitDenyService_RightsQuery_Call {
-	return &mockPermitDenyService_RightsQuery_Call{Call: _e.mock.On("RightsQuery", _a0, frame)}
+func (_e *mockPermitDenyService_Expecter) RightsQuery(context1 interface{}, frame interface{}) *mockPermitDenyService_RightsQuery_Call {
+	return &mockPermitDenyService_RightsQuery_Call{Call: _e.mock.On("RightsQuery", context1, frame)}
 }
 
-func (_c *mockPermitDenyService_RightsQuery_Call) Run(run func(_a0 context.Context, frame wire.SNACFrame)) *mockPermitDenyService_RightsQuery_Call {
+func (_c *mockPermitDenyService_RightsQuery_Call) Run(run func(context1 context.Context, frame wire.SNACFrame)) *mockPermitDenyService_RightsQuery_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(wire.SNACFrame))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 wire.SNACFrame
+		if args[1] != nil {
+			arg1 = args[1].(wire.SNACFrame)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockPermitDenyService_RightsQuery_Call) Return(_a0 wire.SNACMessage) *mockPermitDenyService_RightsQuery_Call {
-	_c.Call.Return(_a0)
+func (_c *mockPermitDenyService_RightsQuery_Call) Return(sNACMessage wire.SNACMessage) *mockPermitDenyService_RightsQuery_Call {
+	_c.Call.Return(sNACMessage)
 	return _c
 }
 
-func (_c *mockPermitDenyService_RightsQuery_Call) RunAndReturn(run func(context.Context, wire.SNACFrame) wire.SNACMessage) *mockPermitDenyService_RightsQuery_Call {
+func (_c *mockPermitDenyService_RightsQuery_Call) RunAndReturn(run func(context1 context.Context, frame wire.SNACFrame) wire.SNACMessage) *mockPermitDenyService_RightsQuery_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockPermitDenyService creates a new instance of mockPermitDenyService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockPermitDenyService(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockPermitDenyService {
-	mock := &mockPermitDenyService{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 45 - 30
server/oscar/mock_rate_limit_updater_test.go

@@ -1,17 +1,31 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package oscar
 
 import (
-	context "context"
+	"context"
+	"time"
 
-	state "github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/wire"
 	mock "github.com/stretchr/testify/mock"
+)
+
+// newMockRateLimitUpdater creates a new instance of mockRateLimitUpdater. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockRateLimitUpdater(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockRateLimitUpdater {
+	mock := &mockRateLimitUpdater{}
+	mock.Mock.Test(t)
 
-	time "time"
+	t.Cleanup(func() { mock.AssertExpectations(t) })
 
-	wire "github.com/mk6i/retro-aim-server/wire"
-)
+	return mock
+}
 
 // mockRateLimitUpdater is an autogenerated mock type for the RateLimitUpdater type
 type mockRateLimitUpdater struct {
@@ -26,23 +40,22 @@ func (_m *mockRateLimitUpdater) EXPECT() *mockRateLimitUpdater_Expecter {
 	return &mockRateLimitUpdater_Expecter{mock: &_m.Mock}
 }
 
-// RateLimitUpdates provides a mock function with given fields: ctx, sess, now
-func (_m *mockRateLimitUpdater) RateLimitUpdates(ctx context.Context, sess *state.Session, now time.Time) []wire.SNACMessage {
-	ret := _m.Called(ctx, sess, now)
+// RateLimitUpdates provides a mock function for the type mockRateLimitUpdater
+func (_mock *mockRateLimitUpdater) RateLimitUpdates(ctx context.Context, sess *state.Session, now time.Time) []wire.SNACMessage {
+	ret := _mock.Called(ctx, sess, now)
 
 	if len(ret) == 0 {
 		panic("no return value specified for RateLimitUpdates")
 	}
 
 	var r0 []wire.SNACMessage
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, time.Time) []wire.SNACMessage); ok {
-		r0 = rf(ctx, sess, now)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, time.Time) []wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, sess, now)
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).([]wire.SNACMessage)
 		}
 	}
-
 	return r0
 }
 
@@ -61,31 +74,33 @@ func (_e *mockRateLimitUpdater_Expecter) RateLimitUpdates(ctx interface{}, sess
 
 func (_c *mockRateLimitUpdater_RateLimitUpdates_Call) Run(run func(ctx context.Context, sess *state.Session, now time.Time)) *mockRateLimitUpdater_RateLimitUpdates_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(time.Time))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 time.Time
+		if args[2] != nil {
+			arg2 = args[2].(time.Time)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockRateLimitUpdater_RateLimitUpdates_Call) Return(_a0 []wire.SNACMessage) *mockRateLimitUpdater_RateLimitUpdates_Call {
-	_c.Call.Return(_a0)
+func (_c *mockRateLimitUpdater_RateLimitUpdates_Call) Return(sNACMessages []wire.SNACMessage) *mockRateLimitUpdater_RateLimitUpdates_Call {
+	_c.Call.Return(sNACMessages)
 	return _c
 }
 
-func (_c *mockRateLimitUpdater_RateLimitUpdates_Call) RunAndReturn(run func(context.Context, *state.Session, time.Time) []wire.SNACMessage) *mockRateLimitUpdater_RateLimitUpdates_Call {
+func (_c *mockRateLimitUpdater_RateLimitUpdates_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session, now time.Time) []wire.SNACMessage) *mockRateLimitUpdater_RateLimitUpdates_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockRateLimitUpdater creates a new instance of mockRateLimitUpdater. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockRateLimitUpdater(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockRateLimitUpdater {
-	mock := &mockRateLimitUpdater{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 40 - 28
server/oscar/mock_response_writer_test.go

@@ -1,12 +1,28 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package oscar
 
 import (
-	wire "github.com/mk6i/retro-aim-server/wire"
+	"github.com/mk6i/retro-aim-server/wire"
 	mock "github.com/stretchr/testify/mock"
 )
 
+// newMockResponseWriter creates a new instance of mockResponseWriter. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockResponseWriter(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockResponseWriter {
+	mock := &mockResponseWriter{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockResponseWriter is an autogenerated mock type for the ResponseWriter type
 type mockResponseWriter struct {
 	mock.Mock
@@ -20,21 +36,20 @@ func (_m *mockResponseWriter) EXPECT() *mockResponseWriter_Expecter {
 	return &mockResponseWriter_Expecter{mock: &_m.Mock}
 }
 
-// SendSNAC provides a mock function with given fields: frame, body
-func (_m *mockResponseWriter) SendSNAC(frame wire.SNACFrame, body interface{}) error {
-	ret := _m.Called(frame, body)
+// SendSNAC provides a mock function for the type mockResponseWriter
+func (_mock *mockResponseWriter) SendSNAC(frame wire.SNACFrame, body any) error {
+	ret := _mock.Called(frame, body)
 
 	if len(ret) == 0 {
 		panic("no return value specified for SendSNAC")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(wire.SNACFrame, interface{}) error); ok {
-		r0 = rf(frame, body)
+	if returnFunc, ok := ret.Get(0).(func(wire.SNACFrame, any) error); ok {
+		r0 = returnFunc(frame, body)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -45,38 +60,35 @@ type mockResponseWriter_SendSNAC_Call struct {
 
 // SendSNAC is a helper method to define mock.On call
 //   - frame wire.SNACFrame
-//   - body interface{}
+//   - body any
 func (_e *mockResponseWriter_Expecter) SendSNAC(frame interface{}, body interface{}) *mockResponseWriter_SendSNAC_Call {
 	return &mockResponseWriter_SendSNAC_Call{Call: _e.mock.On("SendSNAC", frame, body)}
 }
 
-func (_c *mockResponseWriter_SendSNAC_Call) Run(run func(frame wire.SNACFrame, body interface{})) *mockResponseWriter_SendSNAC_Call {
+func (_c *mockResponseWriter_SendSNAC_Call) Run(run func(frame wire.SNACFrame, body any)) *mockResponseWriter_SendSNAC_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(wire.SNACFrame), args[1].(interface{}))
+		var arg0 wire.SNACFrame
+		if args[0] != nil {
+			arg0 = args[0].(wire.SNACFrame)
+		}
+		var arg1 any
+		if args[1] != nil {
+			arg1 = args[1].(any)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockResponseWriter_SendSNAC_Call) Return(_a0 error) *mockResponseWriter_SendSNAC_Call {
-	_c.Call.Return(_a0)
+func (_c *mockResponseWriter_SendSNAC_Call) Return(err error) *mockResponseWriter_SendSNAC_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockResponseWriter_SendSNAC_Call) RunAndReturn(run func(wire.SNACFrame, interface{}) error) *mockResponseWriter_SendSNAC_Call {
+func (_c *mockResponseWriter_SendSNAC_Call) RunAndReturn(run func(frame wire.SNACFrame, body any) error) *mockResponseWriter_SendSNAC_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockResponseWriter creates a new instance of mockResponseWriter. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockResponseWriter(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockResponseWriter {
-	mock := &mockResponseWriter{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 44 - 27
server/oscar/mock_stats_service_test.go

@@ -1,14 +1,30 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package oscar
 
 import (
-	context "context"
+	"context"
 
-	wire "github.com/mk6i/retro-aim-server/wire"
+	"github.com/mk6i/retro-aim-server/wire"
 	mock "github.com/stretchr/testify/mock"
 )
 
+// newMockStatsService creates a new instance of mockStatsService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockStatsService(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockStatsService {
+	mock := &mockStatsService{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockStatsService is an autogenerated mock type for the StatsService type
 type mockStatsService struct {
 	mock.Mock
@@ -22,21 +38,20 @@ func (_m *mockStatsService) EXPECT() *mockStatsService_Expecter {
 	return &mockStatsService_Expecter{mock: &_m.Mock}
 }
 
-// ReportEvents provides a mock function with given fields: ctx, inFrame, inBody
-func (_m *mockStatsService) ReportEvents(ctx context.Context, inFrame wire.SNACFrame, inBody wire.SNAC_0x0B_0x03_StatsReportEvents) wire.SNACMessage {
-	ret := _m.Called(ctx, inFrame, inBody)
+// ReportEvents provides a mock function for the type mockStatsService
+func (_mock *mockStatsService) ReportEvents(ctx context.Context, inFrame wire.SNACFrame, inBody wire.SNAC_0x0B_0x03_StatsReportEvents) wire.SNACMessage {
+	ret := _mock.Called(ctx, inFrame, inBody)
 
 	if len(ret) == 0 {
 		panic("no return value specified for ReportEvents")
 	}
 
 	var r0 wire.SNACMessage
-	if rf, ok := ret.Get(0).(func(context.Context, wire.SNACFrame, wire.SNAC_0x0B_0x03_StatsReportEvents) wire.SNACMessage); ok {
-		r0 = rf(ctx, inFrame, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, wire.SNACFrame, wire.SNAC_0x0B_0x03_StatsReportEvents) wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, inFrame, inBody)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
 	return r0
 }
 
@@ -55,31 +70,33 @@ func (_e *mockStatsService_Expecter) ReportEvents(ctx interface{}, inFrame inter
 
 func (_c *mockStatsService_ReportEvents_Call) Run(run func(ctx context.Context, inFrame wire.SNACFrame, inBody wire.SNAC_0x0B_0x03_StatsReportEvents)) *mockStatsService_ReportEvents_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(wire.SNACFrame), args[2].(wire.SNAC_0x0B_0x03_StatsReportEvents))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 wire.SNACFrame
+		if args[1] != nil {
+			arg1 = args[1].(wire.SNACFrame)
+		}
+		var arg2 wire.SNAC_0x0B_0x03_StatsReportEvents
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNAC_0x0B_0x03_StatsReportEvents)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockStatsService_ReportEvents_Call) Return(_a0 wire.SNACMessage) *mockStatsService_ReportEvents_Call {
-	_c.Call.Return(_a0)
+func (_c *mockStatsService_ReportEvents_Call) Return(sNACMessage wire.SNACMessage) *mockStatsService_ReportEvents_Call {
+	_c.Call.Return(sNACMessage)
 	return _c
 }
 
-func (_c *mockStatsService_ReportEvents_Call) RunAndReturn(run func(context.Context, wire.SNACFrame, wire.SNAC_0x0B_0x03_StatsReportEvents) wire.SNACMessage) *mockStatsService_ReportEvents_Call {
+func (_c *mockStatsService_ReportEvents_Call) RunAndReturn(run func(ctx context.Context, inFrame wire.SNACFrame, inBody wire.SNAC_0x0B_0x03_StatsReportEvents) wire.SNACMessage) *mockStatsService_ReportEvents_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockStatsService creates a new instance of mockStatsService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockStatsService(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockStatsService {
-	mock := &mockStatsService{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 48 - 32
server/oscar/mock_user_lookup_service_test.go

@@ -1,14 +1,30 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package oscar
 
 import (
-	context "context"
+	"context"
 
-	wire "github.com/mk6i/retro-aim-server/wire"
+	"github.com/mk6i/retro-aim-server/wire"
 	mock "github.com/stretchr/testify/mock"
 )
 
+// newMockUserLookupService creates a new instance of mockUserLookupService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockUserLookupService(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockUserLookupService {
+	mock := &mockUserLookupService{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockUserLookupService is an autogenerated mock type for the UserLookupService type
 type mockUserLookupService struct {
 	mock.Mock
@@ -22,9 +38,9 @@ func (_m *mockUserLookupService) EXPECT() *mockUserLookupService_Expecter {
 	return &mockUserLookupService_Expecter{mock: &_m.Mock}
 }
 
-// FindByEmail provides a mock function with given fields: ctx, inFrame, inBody
-func (_m *mockUserLookupService) FindByEmail(ctx context.Context, inFrame wire.SNACFrame, inBody wire.SNAC_0x0A_0x02_UserLookupFindByEmail) (wire.SNACMessage, error) {
-	ret := _m.Called(ctx, inFrame, inBody)
+// FindByEmail provides a mock function for the type mockUserLookupService
+func (_mock *mockUserLookupService) FindByEmail(ctx context.Context, inFrame wire.SNACFrame, inBody wire.SNAC_0x0A_0x02_UserLookupFindByEmail) (wire.SNACMessage, error) {
+	ret := _mock.Called(ctx, inFrame, inBody)
 
 	if len(ret) == 0 {
 		panic("no return value specified for FindByEmail")
@@ -32,21 +48,19 @@ func (_m *mockUserLookupService) FindByEmail(ctx context.Context, inFrame wire.S
 
 	var r0 wire.SNACMessage
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, wire.SNACFrame, wire.SNAC_0x0A_0x02_UserLookupFindByEmail) (wire.SNACMessage, error)); ok {
-		return rf(ctx, inFrame, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, wire.SNACFrame, wire.SNAC_0x0A_0x02_UserLookupFindByEmail) (wire.SNACMessage, error)); ok {
+		return returnFunc(ctx, inFrame, inBody)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, wire.SNACFrame, wire.SNAC_0x0A_0x02_UserLookupFindByEmail) wire.SNACMessage); ok {
-		r0 = rf(ctx, inFrame, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, wire.SNACFrame, wire.SNAC_0x0A_0x02_UserLookupFindByEmail) wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, inFrame, inBody)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, wire.SNACFrame, wire.SNAC_0x0A_0x02_UserLookupFindByEmail) error); ok {
-		r1 = rf(ctx, inFrame, inBody)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, wire.SNACFrame, wire.SNAC_0x0A_0x02_UserLookupFindByEmail) error); ok {
+		r1 = returnFunc(ctx, inFrame, inBody)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -65,31 +79,33 @@ func (_e *mockUserLookupService_Expecter) FindByEmail(ctx interface{}, inFrame i
 
 func (_c *mockUserLookupService_FindByEmail_Call) Run(run func(ctx context.Context, inFrame wire.SNACFrame, inBody wire.SNAC_0x0A_0x02_UserLookupFindByEmail)) *mockUserLookupService_FindByEmail_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(wire.SNACFrame), args[2].(wire.SNAC_0x0A_0x02_UserLookupFindByEmail))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 wire.SNACFrame
+		if args[1] != nil {
+			arg1 = args[1].(wire.SNACFrame)
+		}
+		var arg2 wire.SNAC_0x0A_0x02_UserLookupFindByEmail
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNAC_0x0A_0x02_UserLookupFindByEmail)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockUserLookupService_FindByEmail_Call) Return(_a0 wire.SNACMessage, _a1 error) *mockUserLookupService_FindByEmail_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockUserLookupService_FindByEmail_Call) Return(sNACMessage wire.SNACMessage, err error) *mockUserLookupService_FindByEmail_Call {
+	_c.Call.Return(sNACMessage, err)
 	return _c
 }
 
-func (_c *mockUserLookupService_FindByEmail_Call) RunAndReturn(run func(context.Context, wire.SNACFrame, wire.SNAC_0x0A_0x02_UserLookupFindByEmail) (wire.SNACMessage, error)) *mockUserLookupService_FindByEmail_Call {
+func (_c *mockUserLookupService_FindByEmail_Call) RunAndReturn(run func(ctx context.Context, inFrame wire.SNACFrame, inBody wire.SNAC_0x0A_0x02_UserLookupFindByEmail) (wire.SNACMessage, error)) *mockUserLookupService_FindByEmail_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockUserLookupService creates a new instance of mockUserLookupService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockUserLookupService(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockUserLookupService {
-	mock := &mockUserLookupService{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 54 - 34
server/toc/mock_admin_service_test.go

@@ -1,16 +1,31 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package toc
 
 import (
-	context "context"
+	"context"
 
-	state "github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/wire"
 	mock "github.com/stretchr/testify/mock"
-
-	wire "github.com/mk6i/retro-aim-server/wire"
 )
 
+// newMockAdminService creates a new instance of mockAdminService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockAdminService(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockAdminService {
+	mock := &mockAdminService{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockAdminService is an autogenerated mock type for the AdminService type
 type mockAdminService struct {
 	mock.Mock
@@ -24,9 +39,9 @@ func (_m *mockAdminService) EXPECT() *mockAdminService_Expecter {
 	return &mockAdminService_Expecter{mock: &_m.Mock}
 }
 
-// InfoChangeRequest provides a mock function with given fields: ctx, sess, frame, body
-func (_m *mockAdminService) InfoChangeRequest(ctx context.Context, sess *state.Session, frame wire.SNACFrame, body wire.SNAC_0x07_0x04_AdminInfoChangeRequest) (wire.SNACMessage, error) {
-	ret := _m.Called(ctx, sess, frame, body)
+// InfoChangeRequest provides a mock function for the type mockAdminService
+func (_mock *mockAdminService) InfoChangeRequest(ctx context.Context, sess *state.Session, frame wire.SNACFrame, body wire.SNAC_0x07_0x04_AdminInfoChangeRequest) (wire.SNACMessage, error) {
+	ret := _mock.Called(ctx, sess, frame, body)
 
 	if len(ret) == 0 {
 		panic("no return value specified for InfoChangeRequest")
@@ -34,21 +49,19 @@ func (_m *mockAdminService) InfoChangeRequest(ctx context.Context, sess *state.S
 
 	var r0 wire.SNACMessage
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x07_0x04_AdminInfoChangeRequest) (wire.SNACMessage, error)); ok {
-		return rf(ctx, sess, frame, body)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x07_0x04_AdminInfoChangeRequest) (wire.SNACMessage, error)); ok {
+		return returnFunc(ctx, sess, frame, body)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x07_0x04_AdminInfoChangeRequest) wire.SNACMessage); ok {
-		r0 = rf(ctx, sess, frame, body)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x07_0x04_AdminInfoChangeRequest) wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, sess, frame, body)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x07_0x04_AdminInfoChangeRequest) error); ok {
-		r1 = rf(ctx, sess, frame, body)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x07_0x04_AdminInfoChangeRequest) error); ok {
+		r1 = returnFunc(ctx, sess, frame, body)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -68,31 +81,38 @@ func (_e *mockAdminService_Expecter) InfoChangeRequest(ctx interface{}, sess int
 
 func (_c *mockAdminService_InfoChangeRequest_Call) Run(run func(ctx context.Context, sess *state.Session, frame wire.SNACFrame, body wire.SNAC_0x07_0x04_AdminInfoChangeRequest)) *mockAdminService_InfoChangeRequest_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(wire.SNACFrame), args[3].(wire.SNAC_0x07_0x04_AdminInfoChangeRequest))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 wire.SNACFrame
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNACFrame)
+		}
+		var arg3 wire.SNAC_0x07_0x04_AdminInfoChangeRequest
+		if args[3] != nil {
+			arg3 = args[3].(wire.SNAC_0x07_0x04_AdminInfoChangeRequest)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+			arg3,
+		)
 	})
 	return _c
 }
 
-func (_c *mockAdminService_InfoChangeRequest_Call) Return(_a0 wire.SNACMessage, _a1 error) *mockAdminService_InfoChangeRequest_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockAdminService_InfoChangeRequest_Call) Return(sNACMessage wire.SNACMessage, err error) *mockAdminService_InfoChangeRequest_Call {
+	_c.Call.Return(sNACMessage, err)
 	return _c
 }
 
-func (_c *mockAdminService_InfoChangeRequest_Call) RunAndReturn(run func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x07_0x04_AdminInfoChangeRequest) (wire.SNACMessage, error)) *mockAdminService_InfoChangeRequest_Call {
+func (_c *mockAdminService_InfoChangeRequest_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session, frame wire.SNACFrame, body wire.SNAC_0x07_0x04_AdminInfoChangeRequest) (wire.SNACMessage, error)) *mockAdminService_InfoChangeRequest_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockAdminService creates a new instance of mockAdminService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockAdminService(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockAdminService {
-	mock := &mockAdminService{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 246 - 139
server/toc/mock_auth_service_test.go

@@ -1,17 +1,31 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package toc
 
 import (
-	context "context"
+	"context"
 
-	state "github.com/mk6i/retro-aim-server/state"
+	"github.com/google/uuid"
+	"github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/wire"
 	mock "github.com/stretchr/testify/mock"
+)
+
+// newMockAuthService creates a new instance of mockAuthService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockAuthService(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockAuthService {
+	mock := &mockAuthService{}
+	mock.Mock.Test(t)
 
-	uuid "github.com/google/uuid"
+	t.Cleanup(func() { mock.AssertExpectations(t) })
 
-	wire "github.com/mk6i/retro-aim-server/wire"
-)
+	return mock
+}
 
 // mockAuthService is an autogenerated mock type for the AuthService type
 type mockAuthService struct {
@@ -26,9 +40,9 @@ func (_m *mockAuthService) EXPECT() *mockAuthService_Expecter {
 	return &mockAuthService_Expecter{mock: &_m.Mock}
 }
 
-// BUCPChallenge provides a mock function with given fields: ctx, bodyIn, newUUID
-func (_m *mockAuthService) BUCPChallenge(ctx context.Context, bodyIn wire.SNAC_0x17_0x06_BUCPChallengeRequest, newUUID func() uuid.UUID) (wire.SNACMessage, error) {
-	ret := _m.Called(ctx, bodyIn, newUUID)
+// BUCPChallenge provides a mock function for the type mockAuthService
+func (_mock *mockAuthService) BUCPChallenge(ctx context.Context, bodyIn wire.SNAC_0x17_0x06_BUCPChallengeRequest, newUUID func() uuid.UUID) (wire.SNACMessage, error) {
+	ret := _mock.Called(ctx, bodyIn, newUUID)
 
 	if len(ret) == 0 {
 		panic("no return value specified for BUCPChallenge")
@@ -36,21 +50,19 @@ func (_m *mockAuthService) BUCPChallenge(ctx context.Context, bodyIn wire.SNAC_0
 
 	var r0 wire.SNACMessage
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, wire.SNAC_0x17_0x06_BUCPChallengeRequest, func() uuid.UUID) (wire.SNACMessage, error)); ok {
-		return rf(ctx, bodyIn, newUUID)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, wire.SNAC_0x17_0x06_BUCPChallengeRequest, func() uuid.UUID) (wire.SNACMessage, error)); ok {
+		return returnFunc(ctx, bodyIn, newUUID)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, wire.SNAC_0x17_0x06_BUCPChallengeRequest, func() uuid.UUID) wire.SNACMessage); ok {
-		r0 = rf(ctx, bodyIn, newUUID)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, wire.SNAC_0x17_0x06_BUCPChallengeRequest, func() uuid.UUID) wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, bodyIn, newUUID)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, wire.SNAC_0x17_0x06_BUCPChallengeRequest, func() uuid.UUID) error); ok {
-		r1 = rf(ctx, bodyIn, newUUID)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, wire.SNAC_0x17_0x06_BUCPChallengeRequest, func() uuid.UUID) error); ok {
+		r1 = returnFunc(ctx, bodyIn, newUUID)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -69,24 +81,40 @@ func (_e *mockAuthService_Expecter) BUCPChallenge(ctx interface{}, bodyIn interf
 
 func (_c *mockAuthService_BUCPChallenge_Call) Run(run func(ctx context.Context, bodyIn wire.SNAC_0x17_0x06_BUCPChallengeRequest, newUUID func() uuid.UUID)) *mockAuthService_BUCPChallenge_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(wire.SNAC_0x17_0x06_BUCPChallengeRequest), args[2].(func() uuid.UUID))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 wire.SNAC_0x17_0x06_BUCPChallengeRequest
+		if args[1] != nil {
+			arg1 = args[1].(wire.SNAC_0x17_0x06_BUCPChallengeRequest)
+		}
+		var arg2 func() uuid.UUID
+		if args[2] != nil {
+			arg2 = args[2].(func() uuid.UUID)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockAuthService_BUCPChallenge_Call) Return(_a0 wire.SNACMessage, _a1 error) *mockAuthService_BUCPChallenge_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockAuthService_BUCPChallenge_Call) Return(sNACMessage wire.SNACMessage, err error) *mockAuthService_BUCPChallenge_Call {
+	_c.Call.Return(sNACMessage, err)
 	return _c
 }
 
-func (_c *mockAuthService_BUCPChallenge_Call) RunAndReturn(run func(context.Context, wire.SNAC_0x17_0x06_BUCPChallengeRequest, func() uuid.UUID) (wire.SNACMessage, error)) *mockAuthService_BUCPChallenge_Call {
+func (_c *mockAuthService_BUCPChallenge_Call) RunAndReturn(run func(ctx context.Context, bodyIn wire.SNAC_0x17_0x06_BUCPChallengeRequest, newUUID func() uuid.UUID) (wire.SNACMessage, error)) *mockAuthService_BUCPChallenge_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// BUCPLogin provides a mock function with given fields: ctx, bodyIn, newUserFn, advertisedHost
-func (_m *mockAuthService) BUCPLogin(ctx context.Context, bodyIn wire.SNAC_0x17_0x02_BUCPLoginRequest, newUserFn func(state.DisplayScreenName) (state.User, error), advertisedHost string) (wire.SNACMessage, error) {
-	ret := _m.Called(ctx, bodyIn, newUserFn, advertisedHost)
+// BUCPLogin provides a mock function for the type mockAuthService
+func (_mock *mockAuthService) BUCPLogin(ctx context.Context, bodyIn wire.SNAC_0x17_0x02_BUCPLoginRequest, newUserFn func(screenName state.DisplayScreenName) (state.User, error), advertisedHost string) (wire.SNACMessage, error) {
+	ret := _mock.Called(ctx, bodyIn, newUserFn, advertisedHost)
 
 	if len(ret) == 0 {
 		panic("no return value specified for BUCPLogin")
@@ -94,21 +122,19 @@ func (_m *mockAuthService) BUCPLogin(ctx context.Context, bodyIn wire.SNAC_0x17_
 
 	var r0 wire.SNACMessage
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, wire.SNAC_0x17_0x02_BUCPLoginRequest, func(state.DisplayScreenName) (state.User, error), string) (wire.SNACMessage, error)); ok {
-		return rf(ctx, bodyIn, newUserFn, advertisedHost)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, wire.SNAC_0x17_0x02_BUCPLoginRequest, func(screenName state.DisplayScreenName) (state.User, error), string) (wire.SNACMessage, error)); ok {
+		return returnFunc(ctx, bodyIn, newUserFn, advertisedHost)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, wire.SNAC_0x17_0x02_BUCPLoginRequest, func(state.DisplayScreenName) (state.User, error), string) wire.SNACMessage); ok {
-		r0 = rf(ctx, bodyIn, newUserFn, advertisedHost)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, wire.SNAC_0x17_0x02_BUCPLoginRequest, func(screenName state.DisplayScreenName) (state.User, error), string) wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, bodyIn, newUserFn, advertisedHost)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, wire.SNAC_0x17_0x02_BUCPLoginRequest, func(state.DisplayScreenName) (state.User, error), string) error); ok {
-		r1 = rf(ctx, bodyIn, newUserFn, advertisedHost)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, wire.SNAC_0x17_0x02_BUCPLoginRequest, func(screenName state.DisplayScreenName) (state.User, error), string) error); ok {
+		r1 = returnFunc(ctx, bodyIn, newUserFn, advertisedHost)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -120,32 +146,53 @@ type mockAuthService_BUCPLogin_Call struct {
 // BUCPLogin is a helper method to define mock.On call
 //   - ctx context.Context
 //   - bodyIn wire.SNAC_0x17_0x02_BUCPLoginRequest
-//   - newUserFn func(state.DisplayScreenName)(state.User , error)
+//   - newUserFn func(screenName state.DisplayScreenName) (state.User, error)
 //   - advertisedHost string
 func (_e *mockAuthService_Expecter) BUCPLogin(ctx interface{}, bodyIn interface{}, newUserFn interface{}, advertisedHost interface{}) *mockAuthService_BUCPLogin_Call {
 	return &mockAuthService_BUCPLogin_Call{Call: _e.mock.On("BUCPLogin", ctx, bodyIn, newUserFn, advertisedHost)}
 }
 
-func (_c *mockAuthService_BUCPLogin_Call) Run(run func(ctx context.Context, bodyIn wire.SNAC_0x17_0x02_BUCPLoginRequest, newUserFn func(state.DisplayScreenName) (state.User, error), advertisedHost string)) *mockAuthService_BUCPLogin_Call {
+func (_c *mockAuthService_BUCPLogin_Call) Run(run func(ctx context.Context, bodyIn wire.SNAC_0x17_0x02_BUCPLoginRequest, newUserFn func(screenName state.DisplayScreenName) (state.User, error), advertisedHost string)) *mockAuthService_BUCPLogin_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(wire.SNAC_0x17_0x02_BUCPLoginRequest), args[2].(func(state.DisplayScreenName) (state.User, error)), args[3].(string))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 wire.SNAC_0x17_0x02_BUCPLoginRequest
+		if args[1] != nil {
+			arg1 = args[1].(wire.SNAC_0x17_0x02_BUCPLoginRequest)
+		}
+		var arg2 func(screenName state.DisplayScreenName) (state.User, error)
+		if args[2] != nil {
+			arg2 = args[2].(func(screenName state.DisplayScreenName) (state.User, error))
+		}
+		var arg3 string
+		if args[3] != nil {
+			arg3 = args[3].(string)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+			arg3,
+		)
 	})
 	return _c
 }
 
-func (_c *mockAuthService_BUCPLogin_Call) Return(_a0 wire.SNACMessage, _a1 error) *mockAuthService_BUCPLogin_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockAuthService_BUCPLogin_Call) Return(sNACMessage wire.SNACMessage, err error) *mockAuthService_BUCPLogin_Call {
+	_c.Call.Return(sNACMessage, err)
 	return _c
 }
 
-func (_c *mockAuthService_BUCPLogin_Call) RunAndReturn(run func(context.Context, wire.SNAC_0x17_0x02_BUCPLoginRequest, func(state.DisplayScreenName) (state.User, error), string) (wire.SNACMessage, error)) *mockAuthService_BUCPLogin_Call {
+func (_c *mockAuthService_BUCPLogin_Call) RunAndReturn(run func(ctx context.Context, bodyIn wire.SNAC_0x17_0x02_BUCPLoginRequest, newUserFn func(screenName state.DisplayScreenName) (state.User, error), advertisedHost string) (wire.SNACMessage, error)) *mockAuthService_BUCPLogin_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// CrackCookie provides a mock function with given fields: authCookie
-func (_m *mockAuthService) CrackCookie(authCookie []byte) (state.ServerCookie, error) {
-	ret := _m.Called(authCookie)
+// CrackCookie provides a mock function for the type mockAuthService
+func (_mock *mockAuthService) CrackCookie(authCookie []byte) (state.ServerCookie, error) {
+	ret := _mock.Called(authCookie)
 
 	if len(ret) == 0 {
 		panic("no return value specified for CrackCookie")
@@ -153,21 +200,19 @@ func (_m *mockAuthService) CrackCookie(authCookie []byte) (state.ServerCookie, e
 
 	var r0 state.ServerCookie
 	var r1 error
-	if rf, ok := ret.Get(0).(func([]byte) (state.ServerCookie, error)); ok {
-		return rf(authCookie)
+	if returnFunc, ok := ret.Get(0).(func([]byte) (state.ServerCookie, error)); ok {
+		return returnFunc(authCookie)
 	}
-	if rf, ok := ret.Get(0).(func([]byte) state.ServerCookie); ok {
-		r0 = rf(authCookie)
+	if returnFunc, ok := ret.Get(0).(func([]byte) state.ServerCookie); ok {
+		r0 = returnFunc(authCookie)
 	} else {
 		r0 = ret.Get(0).(state.ServerCookie)
 	}
-
-	if rf, ok := ret.Get(1).(func([]byte) error); ok {
-		r1 = rf(authCookie)
+	if returnFunc, ok := ret.Get(1).(func([]byte) error); ok {
+		r1 = returnFunc(authCookie)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -184,24 +229,30 @@ func (_e *mockAuthService_Expecter) CrackCookie(authCookie interface{}) *mockAut
 
 func (_c *mockAuthService_CrackCookie_Call) Run(run func(authCookie []byte)) *mockAuthService_CrackCookie_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].([]byte))
+		var arg0 []byte
+		if args[0] != nil {
+			arg0 = args[0].([]byte)
+		}
+		run(
+			arg0,
+		)
 	})
 	return _c
 }
 
-func (_c *mockAuthService_CrackCookie_Call) Return(_a0 state.ServerCookie, _a1 error) *mockAuthService_CrackCookie_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockAuthService_CrackCookie_Call) Return(serverCookie state.ServerCookie, err error) *mockAuthService_CrackCookie_Call {
+	_c.Call.Return(serverCookie, err)
 	return _c
 }
 
-func (_c *mockAuthService_CrackCookie_Call) RunAndReturn(run func([]byte) (state.ServerCookie, error)) *mockAuthService_CrackCookie_Call {
+func (_c *mockAuthService_CrackCookie_Call) RunAndReturn(run func(authCookie []byte) (state.ServerCookie, error)) *mockAuthService_CrackCookie_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// FLAPLogin provides a mock function with given fields: ctx, frame, newUserFn, here
-func (_m *mockAuthService) FLAPLogin(ctx context.Context, frame wire.FLAPSignonFrame, newUserFn func(state.DisplayScreenName) (state.User, error), here string) (wire.TLVRestBlock, error) {
-	ret := _m.Called(ctx, frame, newUserFn, here)
+// FLAPLogin provides a mock function for the type mockAuthService
+func (_mock *mockAuthService) FLAPLogin(ctx context.Context, frame wire.FLAPSignonFrame, newUserFn func(screenName state.DisplayScreenName) (state.User, error), here string) (wire.TLVRestBlock, error) {
+	ret := _mock.Called(ctx, frame, newUserFn, here)
 
 	if len(ret) == 0 {
 		panic("no return value specified for FLAPLogin")
@@ -209,21 +260,19 @@ func (_m *mockAuthService) FLAPLogin(ctx context.Context, frame wire.FLAPSignonF
 
 	var r0 wire.TLVRestBlock
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, wire.FLAPSignonFrame, func(state.DisplayScreenName) (state.User, error), string) (wire.TLVRestBlock, error)); ok {
-		return rf(ctx, frame, newUserFn, here)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, wire.FLAPSignonFrame, func(screenName state.DisplayScreenName) (state.User, error), string) (wire.TLVRestBlock, error)); ok {
+		return returnFunc(ctx, frame, newUserFn, here)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, wire.FLAPSignonFrame, func(state.DisplayScreenName) (state.User, error), string) wire.TLVRestBlock); ok {
-		r0 = rf(ctx, frame, newUserFn, here)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, wire.FLAPSignonFrame, func(screenName state.DisplayScreenName) (state.User, error), string) wire.TLVRestBlock); ok {
+		r0 = returnFunc(ctx, frame, newUserFn, here)
 	} else {
 		r0 = ret.Get(0).(wire.TLVRestBlock)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, wire.FLAPSignonFrame, func(state.DisplayScreenName) (state.User, error), string) error); ok {
-		r1 = rf(ctx, frame, newUserFn, here)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, wire.FLAPSignonFrame, func(screenName state.DisplayScreenName) (state.User, error), string) error); ok {
+		r1 = returnFunc(ctx, frame, newUserFn, here)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -235,32 +284,53 @@ type mockAuthService_FLAPLogin_Call struct {
 // FLAPLogin is a helper method to define mock.On call
 //   - ctx context.Context
 //   - frame wire.FLAPSignonFrame
-//   - newUserFn func(state.DisplayScreenName)(state.User , error)
+//   - newUserFn func(screenName state.DisplayScreenName) (state.User, error)
 //   - here string
 func (_e *mockAuthService_Expecter) FLAPLogin(ctx interface{}, frame interface{}, newUserFn interface{}, here interface{}) *mockAuthService_FLAPLogin_Call {
 	return &mockAuthService_FLAPLogin_Call{Call: _e.mock.On("FLAPLogin", ctx, frame, newUserFn, here)}
 }
 
-func (_c *mockAuthService_FLAPLogin_Call) Run(run func(ctx context.Context, frame wire.FLAPSignonFrame, newUserFn func(state.DisplayScreenName) (state.User, error), here string)) *mockAuthService_FLAPLogin_Call {
+func (_c *mockAuthService_FLAPLogin_Call) Run(run func(ctx context.Context, frame wire.FLAPSignonFrame, newUserFn func(screenName state.DisplayScreenName) (state.User, error), here string)) *mockAuthService_FLAPLogin_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(wire.FLAPSignonFrame), args[2].(func(state.DisplayScreenName) (state.User, error)), args[3].(string))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 wire.FLAPSignonFrame
+		if args[1] != nil {
+			arg1 = args[1].(wire.FLAPSignonFrame)
+		}
+		var arg2 func(screenName state.DisplayScreenName) (state.User, error)
+		if args[2] != nil {
+			arg2 = args[2].(func(screenName state.DisplayScreenName) (state.User, error))
+		}
+		var arg3 string
+		if args[3] != nil {
+			arg3 = args[3].(string)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+			arg3,
+		)
 	})
 	return _c
 }
 
-func (_c *mockAuthService_FLAPLogin_Call) Return(_a0 wire.TLVRestBlock, _a1 error) *mockAuthService_FLAPLogin_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockAuthService_FLAPLogin_Call) Return(tLVRestBlock wire.TLVRestBlock, err error) *mockAuthService_FLAPLogin_Call {
+	_c.Call.Return(tLVRestBlock, err)
 	return _c
 }
 
-func (_c *mockAuthService_FLAPLogin_Call) RunAndReturn(run func(context.Context, wire.FLAPSignonFrame, func(state.DisplayScreenName) (state.User, error), string) (wire.TLVRestBlock, error)) *mockAuthService_FLAPLogin_Call {
+func (_c *mockAuthService_FLAPLogin_Call) RunAndReturn(run func(ctx context.Context, frame wire.FLAPSignonFrame, newUserFn func(screenName state.DisplayScreenName) (state.User, error), here string) (wire.TLVRestBlock, error)) *mockAuthService_FLAPLogin_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// RegisterBOSSession provides a mock function with given fields: ctx, authCookie
-func (_m *mockAuthService) RegisterBOSSession(ctx context.Context, authCookie state.ServerCookie) (*state.Session, error) {
-	ret := _m.Called(ctx, authCookie)
+// RegisterBOSSession provides a mock function for the type mockAuthService
+func (_mock *mockAuthService) RegisterBOSSession(ctx context.Context, authCookie state.ServerCookie) (*state.Session, error) {
+	ret := _mock.Called(ctx, authCookie)
 
 	if len(ret) == 0 {
 		panic("no return value specified for RegisterBOSSession")
@@ -268,23 +338,21 @@ func (_m *mockAuthService) RegisterBOSSession(ctx context.Context, authCookie st
 
 	var r0 *state.Session
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.ServerCookie) (*state.Session, error)); ok {
-		return rf(ctx, authCookie)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.ServerCookie) (*state.Session, error)); ok {
+		return returnFunc(ctx, authCookie)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, state.ServerCookie) *state.Session); ok {
-		r0 = rf(ctx, authCookie)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.ServerCookie) *state.Session); ok {
+		r0 = returnFunc(ctx, authCookie)
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).(*state.Session)
 		}
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, state.ServerCookie) error); ok {
-		r1 = rf(ctx, authCookie)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, state.ServerCookie) error); ok {
+		r1 = returnFunc(ctx, authCookie)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -302,24 +370,35 @@ func (_e *mockAuthService_Expecter) RegisterBOSSession(ctx interface{}, authCook
 
 func (_c *mockAuthService_RegisterBOSSession_Call) Run(run func(ctx context.Context, authCookie state.ServerCookie)) *mockAuthService_RegisterBOSSession_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.ServerCookie))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.ServerCookie
+		if args[1] != nil {
+			arg1 = args[1].(state.ServerCookie)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockAuthService_RegisterBOSSession_Call) Return(_a0 *state.Session, _a1 error) *mockAuthService_RegisterBOSSession_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockAuthService_RegisterBOSSession_Call) Return(session *state.Session, err error) *mockAuthService_RegisterBOSSession_Call {
+	_c.Call.Return(session, err)
 	return _c
 }
 
-func (_c *mockAuthService_RegisterBOSSession_Call) RunAndReturn(run func(context.Context, state.ServerCookie) (*state.Session, error)) *mockAuthService_RegisterBOSSession_Call {
+func (_c *mockAuthService_RegisterBOSSession_Call) RunAndReturn(run func(ctx context.Context, authCookie state.ServerCookie) (*state.Session, error)) *mockAuthService_RegisterBOSSession_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// RegisterChatSession provides a mock function with given fields: ctx, authCookie
-func (_m *mockAuthService) RegisterChatSession(ctx context.Context, authCookie state.ServerCookie) (*state.Session, error) {
-	ret := _m.Called(ctx, authCookie)
+// RegisterChatSession provides a mock function for the type mockAuthService
+func (_mock *mockAuthService) RegisterChatSession(ctx context.Context, authCookie state.ServerCookie) (*state.Session, error) {
+	ret := _mock.Called(ctx, authCookie)
 
 	if len(ret) == 0 {
 		panic("no return value specified for RegisterChatSession")
@@ -327,23 +406,21 @@ func (_m *mockAuthService) RegisterChatSession(ctx context.Context, authCookie s
 
 	var r0 *state.Session
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.ServerCookie) (*state.Session, error)); ok {
-		return rf(ctx, authCookie)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.ServerCookie) (*state.Session, error)); ok {
+		return returnFunc(ctx, authCookie)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, state.ServerCookie) *state.Session); ok {
-		r0 = rf(ctx, authCookie)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.ServerCookie) *state.Session); ok {
+		r0 = returnFunc(ctx, authCookie)
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).(*state.Session)
 		}
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, state.ServerCookie) error); ok {
-		r1 = rf(ctx, authCookie)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, state.ServerCookie) error); ok {
+		r1 = returnFunc(ctx, authCookie)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -361,24 +438,35 @@ func (_e *mockAuthService_Expecter) RegisterChatSession(ctx interface{}, authCoo
 
 func (_c *mockAuthService_RegisterChatSession_Call) Run(run func(ctx context.Context, authCookie state.ServerCookie)) *mockAuthService_RegisterChatSession_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.ServerCookie))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.ServerCookie
+		if args[1] != nil {
+			arg1 = args[1].(state.ServerCookie)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockAuthService_RegisterChatSession_Call) Return(_a0 *state.Session, _a1 error) *mockAuthService_RegisterChatSession_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockAuthService_RegisterChatSession_Call) Return(session *state.Session, err error) *mockAuthService_RegisterChatSession_Call {
+	_c.Call.Return(session, err)
 	return _c
 }
 
-func (_c *mockAuthService_RegisterChatSession_Call) RunAndReturn(run func(context.Context, state.ServerCookie) (*state.Session, error)) *mockAuthService_RegisterChatSession_Call {
+func (_c *mockAuthService_RegisterChatSession_Call) RunAndReturn(run func(ctx context.Context, authCookie state.ServerCookie) (*state.Session, error)) *mockAuthService_RegisterChatSession_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// RetrieveBOSSession provides a mock function with given fields: ctx, authCookie
-func (_m *mockAuthService) RetrieveBOSSession(ctx context.Context, authCookie state.ServerCookie) (*state.Session, error) {
-	ret := _m.Called(ctx, authCookie)
+// RetrieveBOSSession provides a mock function for the type mockAuthService
+func (_mock *mockAuthService) RetrieveBOSSession(ctx context.Context, authCookie state.ServerCookie) (*state.Session, error) {
+	ret := _mock.Called(ctx, authCookie)
 
 	if len(ret) == 0 {
 		panic("no return value specified for RetrieveBOSSession")
@@ -386,23 +474,21 @@ func (_m *mockAuthService) RetrieveBOSSession(ctx context.Context, authCookie st
 
 	var r0 *state.Session
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.ServerCookie) (*state.Session, error)); ok {
-		return rf(ctx, authCookie)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.ServerCookie) (*state.Session, error)); ok {
+		return returnFunc(ctx, authCookie)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, state.ServerCookie) *state.Session); ok {
-		r0 = rf(ctx, authCookie)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.ServerCookie) *state.Session); ok {
+		r0 = returnFunc(ctx, authCookie)
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).(*state.Session)
 		}
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, state.ServerCookie) error); ok {
-		r1 = rf(ctx, authCookie)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, state.ServerCookie) error); ok {
+		r1 = returnFunc(ctx, authCookie)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -420,24 +506,36 @@ func (_e *mockAuthService_Expecter) RetrieveBOSSession(ctx interface{}, authCook
 
 func (_c *mockAuthService_RetrieveBOSSession_Call) Run(run func(ctx context.Context, authCookie state.ServerCookie)) *mockAuthService_RetrieveBOSSession_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.ServerCookie))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.ServerCookie
+		if args[1] != nil {
+			arg1 = args[1].(state.ServerCookie)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockAuthService_RetrieveBOSSession_Call) Return(_a0 *state.Session, _a1 error) *mockAuthService_RetrieveBOSSession_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockAuthService_RetrieveBOSSession_Call) Return(session *state.Session, err error) *mockAuthService_RetrieveBOSSession_Call {
+	_c.Call.Return(session, err)
 	return _c
 }
 
-func (_c *mockAuthService_RetrieveBOSSession_Call) RunAndReturn(run func(context.Context, state.ServerCookie) (*state.Session, error)) *mockAuthService_RetrieveBOSSession_Call {
+func (_c *mockAuthService_RetrieveBOSSession_Call) RunAndReturn(run func(ctx context.Context, authCookie state.ServerCookie) (*state.Session, error)) *mockAuthService_RetrieveBOSSession_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// Signout provides a mock function with given fields: ctx, sess
-func (_m *mockAuthService) Signout(ctx context.Context, sess *state.Session) {
-	_m.Called(ctx, sess)
+// Signout provides a mock function for the type mockAuthService
+func (_mock *mockAuthService) Signout(ctx context.Context, sess *state.Session) {
+	_mock.Called(ctx, sess)
+	return
 }
 
 // mockAuthService_Signout_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Signout'
@@ -454,7 +552,18 @@ func (_e *mockAuthService_Expecter) Signout(ctx interface{}, sess interface{}) *
 
 func (_c *mockAuthService_Signout_Call) Run(run func(ctx context.Context, sess *state.Session)) *mockAuthService_Signout_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
@@ -464,14 +573,15 @@ func (_c *mockAuthService_Signout_Call) Return() *mockAuthService_Signout_Call {
 	return _c
 }
 
-func (_c *mockAuthService_Signout_Call) RunAndReturn(run func(context.Context, *state.Session)) *mockAuthService_Signout_Call {
+func (_c *mockAuthService_Signout_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session)) *mockAuthService_Signout_Call {
 	_c.Run(run)
 	return _c
 }
 
-// SignoutChat provides a mock function with given fields: ctx, sess
-func (_m *mockAuthService) SignoutChat(ctx context.Context, sess *state.Session) {
-	_m.Called(ctx, sess)
+// SignoutChat provides a mock function for the type mockAuthService
+func (_mock *mockAuthService) SignoutChat(ctx context.Context, sess *state.Session) {
+	_mock.Called(ctx, sess)
+	return
 }
 
 // mockAuthService_SignoutChat_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'SignoutChat'
@@ -488,7 +598,18 @@ func (_e *mockAuthService_Expecter) SignoutChat(ctx interface{}, sess interface{
 
 func (_c *mockAuthService_SignoutChat_Call) Run(run func(ctx context.Context, sess *state.Session)) *mockAuthService_SignoutChat_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
@@ -498,21 +619,7 @@ func (_c *mockAuthService_SignoutChat_Call) Return() *mockAuthService_SignoutCha
 	return _c
 }
 
-func (_c *mockAuthService_SignoutChat_Call) RunAndReturn(run func(context.Context, *state.Session)) *mockAuthService_SignoutChat_Call {
+func (_c *mockAuthService_SignoutChat_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session)) *mockAuthService_SignoutChat_Call {
 	_c.Run(run)
 	return _c
 }
-
-// newMockAuthService creates a new instance of mockAuthService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockAuthService(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockAuthService {
-	mock := &mockAuthService{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 59 - 37
server/toc/mock_buddy_list_registry_test.go

@@ -1,14 +1,30 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package toc
 
 import (
-	context "context"
+	"context"
 
-	state "github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/state"
 	mock "github.com/stretchr/testify/mock"
 )
 
+// newMockBuddyListRegistry creates a new instance of mockBuddyListRegistry. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockBuddyListRegistry(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockBuddyListRegistry {
+	mock := &mockBuddyListRegistry{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockBuddyListRegistry is an autogenerated mock type for the BuddyListRegistry type
 type mockBuddyListRegistry struct {
 	mock.Mock
@@ -22,21 +38,20 @@ func (_m *mockBuddyListRegistry) EXPECT() *mockBuddyListRegistry_Expecter {
 	return &mockBuddyListRegistry_Expecter{mock: &_m.Mock}
 }
 
-// RegisterBuddyList provides a mock function with given fields: ctx, user
-func (_m *mockBuddyListRegistry) RegisterBuddyList(ctx context.Context, user state.IdentScreenName) error {
-	ret := _m.Called(ctx, user)
+// RegisterBuddyList provides a mock function for the type mockBuddyListRegistry
+func (_mock *mockBuddyListRegistry) RegisterBuddyList(ctx context.Context, user state.IdentScreenName) error {
+	ret := _mock.Called(ctx, user)
 
 	if len(ret) == 0 {
 		panic("no return value specified for RegisterBuddyList")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) error); ok {
-		r0 = rf(ctx, user)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) error); ok {
+		r0 = returnFunc(ctx, user)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -54,36 +69,46 @@ func (_e *mockBuddyListRegistry_Expecter) RegisterBuddyList(ctx interface{}, use
 
 func (_c *mockBuddyListRegistry_RegisterBuddyList_Call) Run(run func(ctx context.Context, user state.IdentScreenName)) *mockBuddyListRegistry_RegisterBuddyList_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockBuddyListRegistry_RegisterBuddyList_Call) Return(_a0 error) *mockBuddyListRegistry_RegisterBuddyList_Call {
-	_c.Call.Return(_a0)
+func (_c *mockBuddyListRegistry_RegisterBuddyList_Call) Return(err error) *mockBuddyListRegistry_RegisterBuddyList_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockBuddyListRegistry_RegisterBuddyList_Call) RunAndReturn(run func(context.Context, state.IdentScreenName) error) *mockBuddyListRegistry_RegisterBuddyList_Call {
+func (_c *mockBuddyListRegistry_RegisterBuddyList_Call) RunAndReturn(run func(ctx context.Context, user state.IdentScreenName) error) *mockBuddyListRegistry_RegisterBuddyList_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// UnregisterBuddyList provides a mock function with given fields: ctx, user
-func (_m *mockBuddyListRegistry) UnregisterBuddyList(ctx context.Context, user state.IdentScreenName) error {
-	ret := _m.Called(ctx, user)
+// UnregisterBuddyList provides a mock function for the type mockBuddyListRegistry
+func (_mock *mockBuddyListRegistry) UnregisterBuddyList(ctx context.Context, user state.IdentScreenName) error {
+	ret := _mock.Called(ctx, user)
 
 	if len(ret) == 0 {
 		panic("no return value specified for UnregisterBuddyList")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) error); ok {
-		r0 = rf(ctx, user)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) error); ok {
+		r0 = returnFunc(ctx, user)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -101,31 +126,28 @@ func (_e *mockBuddyListRegistry_Expecter) UnregisterBuddyList(ctx interface{}, u
 
 func (_c *mockBuddyListRegistry_UnregisterBuddyList_Call) Run(run func(ctx context.Context, user state.IdentScreenName)) *mockBuddyListRegistry_UnregisterBuddyList_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockBuddyListRegistry_UnregisterBuddyList_Call) Return(_a0 error) *mockBuddyListRegistry_UnregisterBuddyList_Call {
-	_c.Call.Return(_a0)
+func (_c *mockBuddyListRegistry_UnregisterBuddyList_Call) Return(err error) *mockBuddyListRegistry_UnregisterBuddyList_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockBuddyListRegistry_UnregisterBuddyList_Call) RunAndReturn(run func(context.Context, state.IdentScreenName) error) *mockBuddyListRegistry_UnregisterBuddyList_Call {
+func (_c *mockBuddyListRegistry_UnregisterBuddyList_Call) RunAndReturn(run func(ctx context.Context, user state.IdentScreenName) error) *mockBuddyListRegistry_UnregisterBuddyList_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockBuddyListRegistry creates a new instance of mockBuddyListRegistry. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockBuddyListRegistry(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockBuddyListRegistry {
-	mock := &mockBuddyListRegistry{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 110 - 59
server/toc/mock_buddy_service_test.go

@@ -1,16 +1,31 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package toc
 
 import (
-	context "context"
+	"context"
 
-	state "github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/wire"
 	mock "github.com/stretchr/testify/mock"
-
-	wire "github.com/mk6i/retro-aim-server/wire"
 )
 
+// newMockBuddyService creates a new instance of mockBuddyService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockBuddyService(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockBuddyService {
+	mock := &mockBuddyService{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockBuddyService is an autogenerated mock type for the BuddyService type
 type mockBuddyService struct {
 	mock.Mock
@@ -24,21 +39,20 @@ func (_m *mockBuddyService) EXPECT() *mockBuddyService_Expecter {
 	return &mockBuddyService_Expecter{mock: &_m.Mock}
 }
 
-// AddBuddies provides a mock function with given fields: ctx, sess, inBody
-func (_m *mockBuddyService) AddBuddies(ctx context.Context, sess *state.Session, inBody wire.SNAC_0x03_0x04_BuddyAddBuddies) error {
-	ret := _m.Called(ctx, sess, inBody)
+// AddBuddies provides a mock function for the type mockBuddyService
+func (_mock *mockBuddyService) AddBuddies(ctx context.Context, sess *state.Session, inBody wire.SNAC_0x03_0x04_BuddyAddBuddies) error {
+	ret := _mock.Called(ctx, sess, inBody)
 
 	if len(ret) == 0 {
 		panic("no return value specified for AddBuddies")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNAC_0x03_0x04_BuddyAddBuddies) error); ok {
-		r0 = rf(ctx, sess, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNAC_0x03_0x04_BuddyAddBuddies) error); ok {
+		r0 = returnFunc(ctx, sess, inBody)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -57,36 +71,51 @@ func (_e *mockBuddyService_Expecter) AddBuddies(ctx interface{}, sess interface{
 
 func (_c *mockBuddyService_AddBuddies_Call) Run(run func(ctx context.Context, sess *state.Session, inBody wire.SNAC_0x03_0x04_BuddyAddBuddies)) *mockBuddyService_AddBuddies_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(wire.SNAC_0x03_0x04_BuddyAddBuddies))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 wire.SNAC_0x03_0x04_BuddyAddBuddies
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNAC_0x03_0x04_BuddyAddBuddies)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockBuddyService_AddBuddies_Call) Return(_a0 error) *mockBuddyService_AddBuddies_Call {
-	_c.Call.Return(_a0)
+func (_c *mockBuddyService_AddBuddies_Call) Return(err error) *mockBuddyService_AddBuddies_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockBuddyService_AddBuddies_Call) RunAndReturn(run func(context.Context, *state.Session, wire.SNAC_0x03_0x04_BuddyAddBuddies) error) *mockBuddyService_AddBuddies_Call {
+func (_c *mockBuddyService_AddBuddies_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session, inBody wire.SNAC_0x03_0x04_BuddyAddBuddies) error) *mockBuddyService_AddBuddies_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// BroadcastBuddyDeparted provides a mock function with given fields: ctx, sess
-func (_m *mockBuddyService) BroadcastBuddyDeparted(ctx context.Context, sess *state.Session) error {
-	ret := _m.Called(ctx, sess)
+// BroadcastBuddyDeparted provides a mock function for the type mockBuddyService
+func (_mock *mockBuddyService) BroadcastBuddyDeparted(ctx context.Context, sess *state.Session) error {
+	ret := _mock.Called(ctx, sess)
 
 	if len(ret) == 0 {
 		panic("no return value specified for BroadcastBuddyDeparted")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session) error); ok {
-		r0 = rf(ctx, sess)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session) error); ok {
+		r0 = returnFunc(ctx, sess)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -104,36 +133,46 @@ func (_e *mockBuddyService_Expecter) BroadcastBuddyDeparted(ctx interface{}, ses
 
 func (_c *mockBuddyService_BroadcastBuddyDeparted_Call) Run(run func(ctx context.Context, sess *state.Session)) *mockBuddyService_BroadcastBuddyDeparted_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockBuddyService_BroadcastBuddyDeparted_Call) Return(_a0 error) *mockBuddyService_BroadcastBuddyDeparted_Call {
-	_c.Call.Return(_a0)
+func (_c *mockBuddyService_BroadcastBuddyDeparted_Call) Return(err error) *mockBuddyService_BroadcastBuddyDeparted_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockBuddyService_BroadcastBuddyDeparted_Call) RunAndReturn(run func(context.Context, *state.Session) error) *mockBuddyService_BroadcastBuddyDeparted_Call {
+func (_c *mockBuddyService_BroadcastBuddyDeparted_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session) error) *mockBuddyService_BroadcastBuddyDeparted_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// DelBuddies provides a mock function with given fields: ctx, sess, inBody
-func (_m *mockBuddyService) DelBuddies(ctx context.Context, sess *state.Session, inBody wire.SNAC_0x03_0x05_BuddyDelBuddies) error {
-	ret := _m.Called(ctx, sess, inBody)
+// DelBuddies provides a mock function for the type mockBuddyService
+func (_mock *mockBuddyService) DelBuddies(ctx context.Context, sess *state.Session, inBody wire.SNAC_0x03_0x05_BuddyDelBuddies) error {
+	ret := _mock.Called(ctx, sess, inBody)
 
 	if len(ret) == 0 {
 		panic("no return value specified for DelBuddies")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNAC_0x03_0x05_BuddyDelBuddies) error); ok {
-		r0 = rf(ctx, sess, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNAC_0x03_0x05_BuddyDelBuddies) error); ok {
+		r0 = returnFunc(ctx, sess, inBody)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -152,36 +191,51 @@ func (_e *mockBuddyService_Expecter) DelBuddies(ctx interface{}, sess interface{
 
 func (_c *mockBuddyService_DelBuddies_Call) Run(run func(ctx context.Context, sess *state.Session, inBody wire.SNAC_0x03_0x05_BuddyDelBuddies)) *mockBuddyService_DelBuddies_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(wire.SNAC_0x03_0x05_BuddyDelBuddies))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 wire.SNAC_0x03_0x05_BuddyDelBuddies
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNAC_0x03_0x05_BuddyDelBuddies)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockBuddyService_DelBuddies_Call) Return(_a0 error) *mockBuddyService_DelBuddies_Call {
-	_c.Call.Return(_a0)
+func (_c *mockBuddyService_DelBuddies_Call) Return(err error) *mockBuddyService_DelBuddies_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockBuddyService_DelBuddies_Call) RunAndReturn(run func(context.Context, *state.Session, wire.SNAC_0x03_0x05_BuddyDelBuddies) error) *mockBuddyService_DelBuddies_Call {
+func (_c *mockBuddyService_DelBuddies_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session, inBody wire.SNAC_0x03_0x05_BuddyDelBuddies) error) *mockBuddyService_DelBuddies_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// RightsQuery provides a mock function with given fields: ctx, inFrame
-func (_m *mockBuddyService) RightsQuery(ctx context.Context, inFrame wire.SNACFrame) wire.SNACMessage {
-	ret := _m.Called(ctx, inFrame)
+// RightsQuery provides a mock function for the type mockBuddyService
+func (_mock *mockBuddyService) RightsQuery(ctx context.Context, inFrame wire.SNACFrame) wire.SNACMessage {
+	ret := _mock.Called(ctx, inFrame)
 
 	if len(ret) == 0 {
 		panic("no return value specified for RightsQuery")
 	}
 
 	var r0 wire.SNACMessage
-	if rf, ok := ret.Get(0).(func(context.Context, wire.SNACFrame) wire.SNACMessage); ok {
-		r0 = rf(ctx, inFrame)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, wire.SNACFrame) wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, inFrame)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
 	return r0
 }
 
@@ -199,31 +253,28 @@ func (_e *mockBuddyService_Expecter) RightsQuery(ctx interface{}, inFrame interf
 
 func (_c *mockBuddyService_RightsQuery_Call) Run(run func(ctx context.Context, inFrame wire.SNACFrame)) *mockBuddyService_RightsQuery_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(wire.SNACFrame))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 wire.SNACFrame
+		if args[1] != nil {
+			arg1 = args[1].(wire.SNACFrame)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockBuddyService_RightsQuery_Call) Return(_a0 wire.SNACMessage) *mockBuddyService_RightsQuery_Call {
-	_c.Call.Return(_a0)
+func (_c *mockBuddyService_RightsQuery_Call) Return(sNACMessage wire.SNACMessage) *mockBuddyService_RightsQuery_Call {
+	_c.Call.Return(sNACMessage)
 	return _c
 }
 
-func (_c *mockBuddyService_RightsQuery_Call) RunAndReturn(run func(context.Context, wire.SNACFrame) wire.SNACMessage) *mockBuddyService_RightsQuery_Call {
+func (_c *mockBuddyService_RightsQuery_Call) RunAndReturn(run func(ctx context.Context, inFrame wire.SNACFrame) wire.SNACMessage) *mockBuddyService_RightsQuery_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockBuddyService creates a new instance of mockBuddyService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockBuddyService(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockBuddyService {
-	mock := &mockBuddyService{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 132 - 74
server/toc/mock_chat_nav_service_test.go

@@ -1,16 +1,31 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package toc
 
 import (
-	context "context"
+	"context"
 
-	state "github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/wire"
 	mock "github.com/stretchr/testify/mock"
-
-	wire "github.com/mk6i/retro-aim-server/wire"
 )
 
+// newMockChatNavService creates a new instance of mockChatNavService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockChatNavService(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockChatNavService {
+	mock := &mockChatNavService{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockChatNavService is an autogenerated mock type for the ChatNavService type
 type mockChatNavService struct {
 	mock.Mock
@@ -24,9 +39,9 @@ func (_m *mockChatNavService) EXPECT() *mockChatNavService_Expecter {
 	return &mockChatNavService_Expecter{mock: &_m.Mock}
 }
 
-// CreateRoom provides a mock function with given fields: ctx, sess, inFrame, inBody
-func (_m *mockChatNavService) CreateRoom(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x0E_0x02_ChatRoomInfoUpdate) (wire.SNACMessage, error) {
-	ret := _m.Called(ctx, sess, inFrame, inBody)
+// CreateRoom provides a mock function for the type mockChatNavService
+func (_mock *mockChatNavService) CreateRoom(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x0E_0x02_ChatRoomInfoUpdate) (wire.SNACMessage, error) {
+	ret := _mock.Called(ctx, sess, inFrame, inBody)
 
 	if len(ret) == 0 {
 		panic("no return value specified for CreateRoom")
@@ -34,21 +49,19 @@ func (_m *mockChatNavService) CreateRoom(ctx context.Context, sess *state.Sessio
 
 	var r0 wire.SNACMessage
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x0E_0x02_ChatRoomInfoUpdate) (wire.SNACMessage, error)); ok {
-		return rf(ctx, sess, inFrame, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x0E_0x02_ChatRoomInfoUpdate) (wire.SNACMessage, error)); ok {
+		return returnFunc(ctx, sess, inFrame, inBody)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x0E_0x02_ChatRoomInfoUpdate) wire.SNACMessage); ok {
-		r0 = rf(ctx, sess, inFrame, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x0E_0x02_ChatRoomInfoUpdate) wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, sess, inFrame, inBody)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x0E_0x02_ChatRoomInfoUpdate) error); ok {
-		r1 = rf(ctx, sess, inFrame, inBody)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x0E_0x02_ChatRoomInfoUpdate) error); ok {
+		r1 = returnFunc(ctx, sess, inFrame, inBody)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -68,24 +81,45 @@ func (_e *mockChatNavService_Expecter) CreateRoom(ctx interface{}, sess interfac
 
 func (_c *mockChatNavService_CreateRoom_Call) Run(run func(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x0E_0x02_ChatRoomInfoUpdate)) *mockChatNavService_CreateRoom_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(wire.SNACFrame), args[3].(wire.SNAC_0x0E_0x02_ChatRoomInfoUpdate))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 wire.SNACFrame
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNACFrame)
+		}
+		var arg3 wire.SNAC_0x0E_0x02_ChatRoomInfoUpdate
+		if args[3] != nil {
+			arg3 = args[3].(wire.SNAC_0x0E_0x02_ChatRoomInfoUpdate)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+			arg3,
+		)
 	})
 	return _c
 }
 
-func (_c *mockChatNavService_CreateRoom_Call) Return(_a0 wire.SNACMessage, _a1 error) *mockChatNavService_CreateRoom_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockChatNavService_CreateRoom_Call) Return(sNACMessage wire.SNACMessage, err error) *mockChatNavService_CreateRoom_Call {
+	_c.Call.Return(sNACMessage, err)
 	return _c
 }
 
-func (_c *mockChatNavService_CreateRoom_Call) RunAndReturn(run func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x0E_0x02_ChatRoomInfoUpdate) (wire.SNACMessage, error)) *mockChatNavService_CreateRoom_Call {
+func (_c *mockChatNavService_CreateRoom_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x0E_0x02_ChatRoomInfoUpdate) (wire.SNACMessage, error)) *mockChatNavService_CreateRoom_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// ExchangeInfo provides a mock function with given fields: ctx, inFrame, inBody
-func (_m *mockChatNavService) ExchangeInfo(ctx context.Context, inFrame wire.SNACFrame, inBody wire.SNAC_0x0D_0x03_ChatNavRequestExchangeInfo) (wire.SNACMessage, error) {
-	ret := _m.Called(ctx, inFrame, inBody)
+// ExchangeInfo provides a mock function for the type mockChatNavService
+func (_mock *mockChatNavService) ExchangeInfo(ctx context.Context, inFrame wire.SNACFrame, inBody wire.SNAC_0x0D_0x03_ChatNavRequestExchangeInfo) (wire.SNACMessage, error) {
+	ret := _mock.Called(ctx, inFrame, inBody)
 
 	if len(ret) == 0 {
 		panic("no return value specified for ExchangeInfo")
@@ -93,21 +127,19 @@ func (_m *mockChatNavService) ExchangeInfo(ctx context.Context, inFrame wire.SNA
 
 	var r0 wire.SNACMessage
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, wire.SNACFrame, wire.SNAC_0x0D_0x03_ChatNavRequestExchangeInfo) (wire.SNACMessage, error)); ok {
-		return rf(ctx, inFrame, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, wire.SNACFrame, wire.SNAC_0x0D_0x03_ChatNavRequestExchangeInfo) (wire.SNACMessage, error)); ok {
+		return returnFunc(ctx, inFrame, inBody)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, wire.SNACFrame, wire.SNAC_0x0D_0x03_ChatNavRequestExchangeInfo) wire.SNACMessage); ok {
-		r0 = rf(ctx, inFrame, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, wire.SNACFrame, wire.SNAC_0x0D_0x03_ChatNavRequestExchangeInfo) wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, inFrame, inBody)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, wire.SNACFrame, wire.SNAC_0x0D_0x03_ChatNavRequestExchangeInfo) error); ok {
-		r1 = rf(ctx, inFrame, inBody)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, wire.SNACFrame, wire.SNAC_0x0D_0x03_ChatNavRequestExchangeInfo) error); ok {
+		r1 = returnFunc(ctx, inFrame, inBody)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -126,36 +158,51 @@ func (_e *mockChatNavService_Expecter) ExchangeInfo(ctx interface{}, inFrame int
 
 func (_c *mockChatNavService_ExchangeInfo_Call) Run(run func(ctx context.Context, inFrame wire.SNACFrame, inBody wire.SNAC_0x0D_0x03_ChatNavRequestExchangeInfo)) *mockChatNavService_ExchangeInfo_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(wire.SNACFrame), args[2].(wire.SNAC_0x0D_0x03_ChatNavRequestExchangeInfo))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 wire.SNACFrame
+		if args[1] != nil {
+			arg1 = args[1].(wire.SNACFrame)
+		}
+		var arg2 wire.SNAC_0x0D_0x03_ChatNavRequestExchangeInfo
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNAC_0x0D_0x03_ChatNavRequestExchangeInfo)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockChatNavService_ExchangeInfo_Call) Return(_a0 wire.SNACMessage, _a1 error) *mockChatNavService_ExchangeInfo_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockChatNavService_ExchangeInfo_Call) Return(sNACMessage wire.SNACMessage, err error) *mockChatNavService_ExchangeInfo_Call {
+	_c.Call.Return(sNACMessage, err)
 	return _c
 }
 
-func (_c *mockChatNavService_ExchangeInfo_Call) RunAndReturn(run func(context.Context, wire.SNACFrame, wire.SNAC_0x0D_0x03_ChatNavRequestExchangeInfo) (wire.SNACMessage, error)) *mockChatNavService_ExchangeInfo_Call {
+func (_c *mockChatNavService_ExchangeInfo_Call) RunAndReturn(run func(ctx context.Context, inFrame wire.SNACFrame, inBody wire.SNAC_0x0D_0x03_ChatNavRequestExchangeInfo) (wire.SNACMessage, error)) *mockChatNavService_ExchangeInfo_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// RequestChatRights provides a mock function with given fields: ctx, inFrame
-func (_m *mockChatNavService) RequestChatRights(ctx context.Context, inFrame wire.SNACFrame) wire.SNACMessage {
-	ret := _m.Called(ctx, inFrame)
+// RequestChatRights provides a mock function for the type mockChatNavService
+func (_mock *mockChatNavService) RequestChatRights(ctx context.Context, inFrame wire.SNACFrame) wire.SNACMessage {
+	ret := _mock.Called(ctx, inFrame)
 
 	if len(ret) == 0 {
 		panic("no return value specified for RequestChatRights")
 	}
 
 	var r0 wire.SNACMessage
-	if rf, ok := ret.Get(0).(func(context.Context, wire.SNACFrame) wire.SNACMessage); ok {
-		r0 = rf(ctx, inFrame)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, wire.SNACFrame) wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, inFrame)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
 	return r0
 }
 
@@ -173,24 +220,35 @@ func (_e *mockChatNavService_Expecter) RequestChatRights(ctx interface{}, inFram
 
 func (_c *mockChatNavService_RequestChatRights_Call) Run(run func(ctx context.Context, inFrame wire.SNACFrame)) *mockChatNavService_RequestChatRights_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(wire.SNACFrame))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 wire.SNACFrame
+		if args[1] != nil {
+			arg1 = args[1].(wire.SNACFrame)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockChatNavService_RequestChatRights_Call) Return(_a0 wire.SNACMessage) *mockChatNavService_RequestChatRights_Call {
-	_c.Call.Return(_a0)
+func (_c *mockChatNavService_RequestChatRights_Call) Return(sNACMessage wire.SNACMessage) *mockChatNavService_RequestChatRights_Call {
+	_c.Call.Return(sNACMessage)
 	return _c
 }
 
-func (_c *mockChatNavService_RequestChatRights_Call) RunAndReturn(run func(context.Context, wire.SNACFrame) wire.SNACMessage) *mockChatNavService_RequestChatRights_Call {
+func (_c *mockChatNavService_RequestChatRights_Call) RunAndReturn(run func(ctx context.Context, inFrame wire.SNACFrame) wire.SNACMessage) *mockChatNavService_RequestChatRights_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// RequestRoomInfo provides a mock function with given fields: ctx, inFrame, inBody
-func (_m *mockChatNavService) RequestRoomInfo(ctx context.Context, inFrame wire.SNACFrame, inBody wire.SNAC_0x0D_0x04_ChatNavRequestRoomInfo) (wire.SNACMessage, error) {
-	ret := _m.Called(ctx, inFrame, inBody)
+// RequestRoomInfo provides a mock function for the type mockChatNavService
+func (_mock *mockChatNavService) RequestRoomInfo(ctx context.Context, inFrame wire.SNACFrame, inBody wire.SNAC_0x0D_0x04_ChatNavRequestRoomInfo) (wire.SNACMessage, error) {
+	ret := _mock.Called(ctx, inFrame, inBody)
 
 	if len(ret) == 0 {
 		panic("no return value specified for RequestRoomInfo")
@@ -198,21 +256,19 @@ func (_m *mockChatNavService) RequestRoomInfo(ctx context.Context, inFrame wire.
 
 	var r0 wire.SNACMessage
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, wire.SNACFrame, wire.SNAC_0x0D_0x04_ChatNavRequestRoomInfo) (wire.SNACMessage, error)); ok {
-		return rf(ctx, inFrame, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, wire.SNACFrame, wire.SNAC_0x0D_0x04_ChatNavRequestRoomInfo) (wire.SNACMessage, error)); ok {
+		return returnFunc(ctx, inFrame, inBody)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, wire.SNACFrame, wire.SNAC_0x0D_0x04_ChatNavRequestRoomInfo) wire.SNACMessage); ok {
-		r0 = rf(ctx, inFrame, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, wire.SNACFrame, wire.SNAC_0x0D_0x04_ChatNavRequestRoomInfo) wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, inFrame, inBody)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, wire.SNACFrame, wire.SNAC_0x0D_0x04_ChatNavRequestRoomInfo) error); ok {
-		r1 = rf(ctx, inFrame, inBody)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, wire.SNACFrame, wire.SNAC_0x0D_0x04_ChatNavRequestRoomInfo) error); ok {
+		r1 = returnFunc(ctx, inFrame, inBody)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -231,31 +287,33 @@ func (_e *mockChatNavService_Expecter) RequestRoomInfo(ctx interface{}, inFrame
 
 func (_c *mockChatNavService_RequestRoomInfo_Call) Run(run func(ctx context.Context, inFrame wire.SNACFrame, inBody wire.SNAC_0x0D_0x04_ChatNavRequestRoomInfo)) *mockChatNavService_RequestRoomInfo_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(wire.SNACFrame), args[2].(wire.SNAC_0x0D_0x04_ChatNavRequestRoomInfo))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 wire.SNACFrame
+		if args[1] != nil {
+			arg1 = args[1].(wire.SNACFrame)
+		}
+		var arg2 wire.SNAC_0x0D_0x04_ChatNavRequestRoomInfo
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNAC_0x0D_0x04_ChatNavRequestRoomInfo)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockChatNavService_RequestRoomInfo_Call) Return(_a0 wire.SNACMessage, _a1 error) *mockChatNavService_RequestRoomInfo_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockChatNavService_RequestRoomInfo_Call) Return(sNACMessage wire.SNACMessage, err error) *mockChatNavService_RequestRoomInfo_Call {
+	_c.Call.Return(sNACMessage, err)
 	return _c
 }
 
-func (_c *mockChatNavService_RequestRoomInfo_Call) RunAndReturn(run func(context.Context, wire.SNACFrame, wire.SNAC_0x0D_0x04_ChatNavRequestRoomInfo) (wire.SNACMessage, error)) *mockChatNavService_RequestRoomInfo_Call {
+func (_c *mockChatNavService_RequestRoomInfo_Call) RunAndReturn(run func(ctx context.Context, inFrame wire.SNACFrame, inBody wire.SNAC_0x0D_0x04_ChatNavRequestRoomInfo) (wire.SNACMessage, error)) *mockChatNavService_RequestRoomInfo_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockChatNavService creates a new instance of mockChatNavService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockChatNavService(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockChatNavService {
-	mock := &mockChatNavService{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 54 - 34
server/toc/mock_chat_service_test.go

@@ -1,16 +1,31 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package toc
 
 import (
-	context "context"
+	"context"
 
-	state "github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/wire"
 	mock "github.com/stretchr/testify/mock"
-
-	wire "github.com/mk6i/retro-aim-server/wire"
 )
 
+// newMockChatService creates a new instance of mockChatService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockChatService(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockChatService {
+	mock := &mockChatService{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockChatService is an autogenerated mock type for the ChatService type
 type mockChatService struct {
 	mock.Mock
@@ -24,9 +39,9 @@ func (_m *mockChatService) EXPECT() *mockChatService_Expecter {
 	return &mockChatService_Expecter{mock: &_m.Mock}
 }
 
-// ChannelMsgToHost provides a mock function with given fields: ctx, sess, inFrame, inBody
-func (_m *mockChatService) ChannelMsgToHost(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x0E_0x05_ChatChannelMsgToHost) (*wire.SNACMessage, error) {
-	ret := _m.Called(ctx, sess, inFrame, inBody)
+// ChannelMsgToHost provides a mock function for the type mockChatService
+func (_mock *mockChatService) ChannelMsgToHost(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x0E_0x05_ChatChannelMsgToHost) (*wire.SNACMessage, error) {
+	ret := _mock.Called(ctx, sess, inFrame, inBody)
 
 	if len(ret) == 0 {
 		panic("no return value specified for ChannelMsgToHost")
@@ -34,23 +49,21 @@ func (_m *mockChatService) ChannelMsgToHost(ctx context.Context, sess *state.Ses
 
 	var r0 *wire.SNACMessage
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x0E_0x05_ChatChannelMsgToHost) (*wire.SNACMessage, error)); ok {
-		return rf(ctx, sess, inFrame, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x0E_0x05_ChatChannelMsgToHost) (*wire.SNACMessage, error)); ok {
+		return returnFunc(ctx, sess, inFrame, inBody)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x0E_0x05_ChatChannelMsgToHost) *wire.SNACMessage); ok {
-		r0 = rf(ctx, sess, inFrame, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x0E_0x05_ChatChannelMsgToHost) *wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, sess, inFrame, inBody)
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).(*wire.SNACMessage)
 		}
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x0E_0x05_ChatChannelMsgToHost) error); ok {
-		r1 = rf(ctx, sess, inFrame, inBody)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x0E_0x05_ChatChannelMsgToHost) error); ok {
+		r1 = returnFunc(ctx, sess, inFrame, inBody)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -70,31 +83,38 @@ func (_e *mockChatService_Expecter) ChannelMsgToHost(ctx interface{}, sess inter
 
 func (_c *mockChatService_ChannelMsgToHost_Call) Run(run func(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x0E_0x05_ChatChannelMsgToHost)) *mockChatService_ChannelMsgToHost_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(wire.SNACFrame), args[3].(wire.SNAC_0x0E_0x05_ChatChannelMsgToHost))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 wire.SNACFrame
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNACFrame)
+		}
+		var arg3 wire.SNAC_0x0E_0x05_ChatChannelMsgToHost
+		if args[3] != nil {
+			arg3 = args[3].(wire.SNAC_0x0E_0x05_ChatChannelMsgToHost)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+			arg3,
+		)
 	})
 	return _c
 }
 
-func (_c *mockChatService_ChannelMsgToHost_Call) Return(_a0 *wire.SNACMessage, _a1 error) *mockChatService_ChannelMsgToHost_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockChatService_ChannelMsgToHost_Call) Return(sNACMessage *wire.SNACMessage, err error) *mockChatService_ChannelMsgToHost_Call {
+	_c.Call.Return(sNACMessage, err)
 	return _c
 }
 
-func (_c *mockChatService_ChannelMsgToHost_Call) RunAndReturn(run func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x0E_0x05_ChatChannelMsgToHost) (*wire.SNACMessage, error)) *mockChatService_ChannelMsgToHost_Call {
+func (_c *mockChatService_ChannelMsgToHost_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x0E_0x05_ChatChannelMsgToHost) (*wire.SNACMessage, error)) *mockChatService_ChannelMsgToHost_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockChatService creates a new instance of mockChatService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockChatService(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockChatService {
-	mock := &mockChatService{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 58 - 46
server/toc/mock_cookie_baker_test.go

@@ -1,8 +1,26 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package toc
 
-import mock "github.com/stretchr/testify/mock"
+import (
+	mock "github.com/stretchr/testify/mock"
+)
+
+// newMockCookieBaker creates a new instance of mockCookieBaker. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockCookieBaker(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockCookieBaker {
+	mock := &mockCookieBaker{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
 
 // mockCookieBaker is an autogenerated mock type for the CookieBaker type
 type mockCookieBaker struct {
@@ -17,9 +35,9 @@ func (_m *mockCookieBaker) EXPECT() *mockCookieBaker_Expecter {
 	return &mockCookieBaker_Expecter{mock: &_m.Mock}
 }
 
-// Crack provides a mock function with given fields: data
-func (_m *mockCookieBaker) Crack(data []byte) ([]byte, error) {
-	ret := _m.Called(data)
+// Crack provides a mock function for the type mockCookieBaker
+func (_mock *mockCookieBaker) Crack(data []byte) ([]byte, error) {
+	ret := _mock.Called(data)
 
 	if len(ret) == 0 {
 		panic("no return value specified for Crack")
@@ -27,23 +45,21 @@ func (_m *mockCookieBaker) Crack(data []byte) ([]byte, error) {
 
 	var r0 []byte
 	var r1 error
-	if rf, ok := ret.Get(0).(func([]byte) ([]byte, error)); ok {
-		return rf(data)
+	if returnFunc, ok := ret.Get(0).(func([]byte) ([]byte, error)); ok {
+		return returnFunc(data)
 	}
-	if rf, ok := ret.Get(0).(func([]byte) []byte); ok {
-		r0 = rf(data)
+	if returnFunc, ok := ret.Get(0).(func([]byte) []byte); ok {
+		r0 = returnFunc(data)
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).([]byte)
 		}
 	}
-
-	if rf, ok := ret.Get(1).(func([]byte) error); ok {
-		r1 = rf(data)
+	if returnFunc, ok := ret.Get(1).(func([]byte) error); ok {
+		r1 = returnFunc(data)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -60,24 +76,30 @@ func (_e *mockCookieBaker_Expecter) Crack(data interface{}) *mockCookieBaker_Cra
 
 func (_c *mockCookieBaker_Crack_Call) Run(run func(data []byte)) *mockCookieBaker_Crack_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].([]byte))
+		var arg0 []byte
+		if args[0] != nil {
+			arg0 = args[0].([]byte)
+		}
+		run(
+			arg0,
+		)
 	})
 	return _c
 }
 
-func (_c *mockCookieBaker_Crack_Call) Return(_a0 []byte, _a1 error) *mockCookieBaker_Crack_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockCookieBaker_Crack_Call) Return(bytes []byte, err error) *mockCookieBaker_Crack_Call {
+	_c.Call.Return(bytes, err)
 	return _c
 }
 
-func (_c *mockCookieBaker_Crack_Call) RunAndReturn(run func([]byte) ([]byte, error)) *mockCookieBaker_Crack_Call {
+func (_c *mockCookieBaker_Crack_Call) RunAndReturn(run func(data []byte) ([]byte, error)) *mockCookieBaker_Crack_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// Issue provides a mock function with given fields: data
-func (_m *mockCookieBaker) Issue(data []byte) ([]byte, error) {
-	ret := _m.Called(data)
+// Issue provides a mock function for the type mockCookieBaker
+func (_mock *mockCookieBaker) Issue(data []byte) ([]byte, error) {
+	ret := _mock.Called(data)
 
 	if len(ret) == 0 {
 		panic("no return value specified for Issue")
@@ -85,23 +107,21 @@ func (_m *mockCookieBaker) Issue(data []byte) ([]byte, error) {
 
 	var r0 []byte
 	var r1 error
-	if rf, ok := ret.Get(0).(func([]byte) ([]byte, error)); ok {
-		return rf(data)
+	if returnFunc, ok := ret.Get(0).(func([]byte) ([]byte, error)); ok {
+		return returnFunc(data)
 	}
-	if rf, ok := ret.Get(0).(func([]byte) []byte); ok {
-		r0 = rf(data)
+	if returnFunc, ok := ret.Get(0).(func([]byte) []byte); ok {
+		r0 = returnFunc(data)
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).([]byte)
 		}
 	}
-
-	if rf, ok := ret.Get(1).(func([]byte) error); ok {
-		r1 = rf(data)
+	if returnFunc, ok := ret.Get(1).(func([]byte) error); ok {
+		r1 = returnFunc(data)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -118,31 +138,23 @@ func (_e *mockCookieBaker_Expecter) Issue(data interface{}) *mockCookieBaker_Iss
 
 func (_c *mockCookieBaker_Issue_Call) Run(run func(data []byte)) *mockCookieBaker_Issue_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].([]byte))
+		var arg0 []byte
+		if args[0] != nil {
+			arg0 = args[0].([]byte)
+		}
+		run(
+			arg0,
+		)
 	})
 	return _c
 }
 
-func (_c *mockCookieBaker_Issue_Call) Return(_a0 []byte, _a1 error) *mockCookieBaker_Issue_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockCookieBaker_Issue_Call) Return(bytes []byte, err error) *mockCookieBaker_Issue_Call {
+	_c.Call.Return(bytes, err)
 	return _c
 }
 
-func (_c *mockCookieBaker_Issue_Call) RunAndReturn(run func([]byte) ([]byte, error)) *mockCookieBaker_Issue_Call {
+func (_c *mockCookieBaker_Issue_Call) RunAndReturn(run func(data []byte) ([]byte, error)) *mockCookieBaker_Issue_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockCookieBaker creates a new instance of mockCookieBaker. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockCookieBaker(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockCookieBaker {
-	mock := &mockCookieBaker{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 52 - 36
server/toc/mock_dir_search_service_test.go

@@ -1,14 +1,30 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package toc
 
 import (
-	context "context"
+	"context"
 
-	wire "github.com/mk6i/retro-aim-server/wire"
+	"github.com/mk6i/retro-aim-server/wire"
 	mock "github.com/stretchr/testify/mock"
 )
 
+// newMockDirSearchService creates a new instance of mockDirSearchService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockDirSearchService(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockDirSearchService {
+	mock := &mockDirSearchService{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockDirSearchService is an autogenerated mock type for the DirSearchService type
 type mockDirSearchService struct {
 	mock.Mock
@@ -22,9 +38,9 @@ func (_m *mockDirSearchService) EXPECT() *mockDirSearchService_Expecter {
 	return &mockDirSearchService_Expecter{mock: &_m.Mock}
 }
 
-// InfoQuery provides a mock function with given fields: _a0, inFrame, inBody
-func (_m *mockDirSearchService) InfoQuery(_a0 context.Context, inFrame wire.SNACFrame, inBody wire.SNAC_0x0F_0x02_InfoQuery) (wire.SNACMessage, error) {
-	ret := _m.Called(_a0, inFrame, inBody)
+// InfoQuery provides a mock function for the type mockDirSearchService
+func (_mock *mockDirSearchService) InfoQuery(context1 context.Context, inFrame wire.SNACFrame, inBody wire.SNAC_0x0F_0x02_InfoQuery) (wire.SNACMessage, error) {
+	ret := _mock.Called(context1, inFrame, inBody)
 
 	if len(ret) == 0 {
 		panic("no return value specified for InfoQuery")
@@ -32,21 +48,19 @@ func (_m *mockDirSearchService) InfoQuery(_a0 context.Context, inFrame wire.SNAC
 
 	var r0 wire.SNACMessage
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, wire.SNACFrame, wire.SNAC_0x0F_0x02_InfoQuery) (wire.SNACMessage, error)); ok {
-		return rf(_a0, inFrame, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, wire.SNACFrame, wire.SNAC_0x0F_0x02_InfoQuery) (wire.SNACMessage, error)); ok {
+		return returnFunc(context1, inFrame, inBody)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, wire.SNACFrame, wire.SNAC_0x0F_0x02_InfoQuery) wire.SNACMessage); ok {
-		r0 = rf(_a0, inFrame, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, wire.SNACFrame, wire.SNAC_0x0F_0x02_InfoQuery) wire.SNACMessage); ok {
+		r0 = returnFunc(context1, inFrame, inBody)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, wire.SNACFrame, wire.SNAC_0x0F_0x02_InfoQuery) error); ok {
-		r1 = rf(_a0, inFrame, inBody)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, wire.SNACFrame, wire.SNAC_0x0F_0x02_InfoQuery) error); ok {
+		r1 = returnFunc(context1, inFrame, inBody)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -56,40 +70,42 @@ type mockDirSearchService_InfoQuery_Call struct {
 }
 
 // InfoQuery is a helper method to define mock.On call
-//   - _a0 context.Context
+//   - context1 context.Context
 //   - inFrame wire.SNACFrame
 //   - inBody wire.SNAC_0x0F_0x02_InfoQuery
-func (_e *mockDirSearchService_Expecter) InfoQuery(_a0 interface{}, inFrame interface{}, inBody interface{}) *mockDirSearchService_InfoQuery_Call {
-	return &mockDirSearchService_InfoQuery_Call{Call: _e.mock.On("InfoQuery", _a0, inFrame, inBody)}
+func (_e *mockDirSearchService_Expecter) InfoQuery(context1 interface{}, inFrame interface{}, inBody interface{}) *mockDirSearchService_InfoQuery_Call {
+	return &mockDirSearchService_InfoQuery_Call{Call: _e.mock.On("InfoQuery", context1, inFrame, inBody)}
 }
 
-func (_c *mockDirSearchService_InfoQuery_Call) Run(run func(_a0 context.Context, inFrame wire.SNACFrame, inBody wire.SNAC_0x0F_0x02_InfoQuery)) *mockDirSearchService_InfoQuery_Call {
+func (_c *mockDirSearchService_InfoQuery_Call) Run(run func(context1 context.Context, inFrame wire.SNACFrame, inBody wire.SNAC_0x0F_0x02_InfoQuery)) *mockDirSearchService_InfoQuery_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(wire.SNACFrame), args[2].(wire.SNAC_0x0F_0x02_InfoQuery))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 wire.SNACFrame
+		if args[1] != nil {
+			arg1 = args[1].(wire.SNACFrame)
+		}
+		var arg2 wire.SNAC_0x0F_0x02_InfoQuery
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNAC_0x0F_0x02_InfoQuery)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockDirSearchService_InfoQuery_Call) Return(_a0 wire.SNACMessage, _a1 error) *mockDirSearchService_InfoQuery_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockDirSearchService_InfoQuery_Call) Return(sNACMessage wire.SNACMessage, err error) *mockDirSearchService_InfoQuery_Call {
+	_c.Call.Return(sNACMessage, err)
 	return _c
 }
 
-func (_c *mockDirSearchService_InfoQuery_Call) RunAndReturn(run func(context.Context, wire.SNACFrame, wire.SNAC_0x0F_0x02_InfoQuery) (wire.SNACMessage, error)) *mockDirSearchService_InfoQuery_Call {
+func (_c *mockDirSearchService_InfoQuery_Call) RunAndReturn(run func(context1 context.Context, inFrame wire.SNACFrame, inBody wire.SNAC_0x0F_0x02_InfoQuery) (wire.SNACMessage, error)) *mockDirSearchService_InfoQuery_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockDirSearchService creates a new instance of mockDirSearchService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockDirSearchService(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockDirSearchService {
-	mock := &mockDirSearchService{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 168 - 79
server/toc/mock_icbm_service_test.go

@@ -1,16 +1,31 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package toc
 
 import (
-	context "context"
+	"context"
 
-	state "github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/wire"
 	mock "github.com/stretchr/testify/mock"
-
-	wire "github.com/mk6i/retro-aim-server/wire"
 )
 
+// newMockICBMService creates a new instance of mockICBMService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockICBMService(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockICBMService {
+	mock := &mockICBMService{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockICBMService is an autogenerated mock type for the ICBMService type
 type mockICBMService struct {
 	mock.Mock
@@ -24,9 +39,9 @@ func (_m *mockICBMService) EXPECT() *mockICBMService_Expecter {
 	return &mockICBMService_Expecter{mock: &_m.Mock}
 }
 
-// ChannelMsgToHost provides a mock function with given fields: ctx, sess, inFrame, inBody
-func (_m *mockICBMService) ChannelMsgToHost(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x04_0x06_ICBMChannelMsgToHost) (*wire.SNACMessage, error) {
-	ret := _m.Called(ctx, sess, inFrame, inBody)
+// ChannelMsgToHost provides a mock function for the type mockICBMService
+func (_mock *mockICBMService) ChannelMsgToHost(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x04_0x06_ICBMChannelMsgToHost) (*wire.SNACMessage, error) {
+	ret := _mock.Called(ctx, sess, inFrame, inBody)
 
 	if len(ret) == 0 {
 		panic("no return value specified for ChannelMsgToHost")
@@ -34,23 +49,21 @@ func (_m *mockICBMService) ChannelMsgToHost(ctx context.Context, sess *state.Ses
 
 	var r0 *wire.SNACMessage
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x04_0x06_ICBMChannelMsgToHost) (*wire.SNACMessage, error)); ok {
-		return rf(ctx, sess, inFrame, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x04_0x06_ICBMChannelMsgToHost) (*wire.SNACMessage, error)); ok {
+		return returnFunc(ctx, sess, inFrame, inBody)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x04_0x06_ICBMChannelMsgToHost) *wire.SNACMessage); ok {
-		r0 = rf(ctx, sess, inFrame, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x04_0x06_ICBMChannelMsgToHost) *wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, sess, inFrame, inBody)
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).(*wire.SNACMessage)
 		}
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x04_0x06_ICBMChannelMsgToHost) error); ok {
-		r1 = rf(ctx, sess, inFrame, inBody)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x04_0x06_ICBMChannelMsgToHost) error); ok {
+		r1 = returnFunc(ctx, sess, inFrame, inBody)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -70,36 +83,56 @@ func (_e *mockICBMService_Expecter) ChannelMsgToHost(ctx interface{}, sess inter
 
 func (_c *mockICBMService_ChannelMsgToHost_Call) Run(run func(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x04_0x06_ICBMChannelMsgToHost)) *mockICBMService_ChannelMsgToHost_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(wire.SNACFrame), args[3].(wire.SNAC_0x04_0x06_ICBMChannelMsgToHost))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 wire.SNACFrame
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNACFrame)
+		}
+		var arg3 wire.SNAC_0x04_0x06_ICBMChannelMsgToHost
+		if args[3] != nil {
+			arg3 = args[3].(wire.SNAC_0x04_0x06_ICBMChannelMsgToHost)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+			arg3,
+		)
 	})
 	return _c
 }
 
-func (_c *mockICBMService_ChannelMsgToHost_Call) Return(_a0 *wire.SNACMessage, _a1 error) *mockICBMService_ChannelMsgToHost_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockICBMService_ChannelMsgToHost_Call) Return(sNACMessage *wire.SNACMessage, err error) *mockICBMService_ChannelMsgToHost_Call {
+	_c.Call.Return(sNACMessage, err)
 	return _c
 }
 
-func (_c *mockICBMService_ChannelMsgToHost_Call) RunAndReturn(run func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x04_0x06_ICBMChannelMsgToHost) (*wire.SNACMessage, error)) *mockICBMService_ChannelMsgToHost_Call {
+func (_c *mockICBMService_ChannelMsgToHost_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x04_0x06_ICBMChannelMsgToHost) (*wire.SNACMessage, error)) *mockICBMService_ChannelMsgToHost_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// ClientErr provides a mock function with given fields: ctx, sess, frame, body
-func (_m *mockICBMService) ClientErr(ctx context.Context, sess *state.Session, frame wire.SNACFrame, body wire.SNAC_0x04_0x0B_ICBMClientErr) error {
-	ret := _m.Called(ctx, sess, frame, body)
+// ClientErr provides a mock function for the type mockICBMService
+func (_mock *mockICBMService) ClientErr(ctx context.Context, sess *state.Session, frame wire.SNACFrame, body wire.SNAC_0x04_0x0B_ICBMClientErr) error {
+	ret := _mock.Called(ctx, sess, frame, body)
 
 	if len(ret) == 0 {
 		panic("no return value specified for ClientErr")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x04_0x0B_ICBMClientErr) error); ok {
-		r0 = rf(ctx, sess, frame, body)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x04_0x0B_ICBMClientErr) error); ok {
+		r0 = returnFunc(ctx, sess, frame, body)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -119,36 +152,56 @@ func (_e *mockICBMService_Expecter) ClientErr(ctx interface{}, sess interface{},
 
 func (_c *mockICBMService_ClientErr_Call) Run(run func(ctx context.Context, sess *state.Session, frame wire.SNACFrame, body wire.SNAC_0x04_0x0B_ICBMClientErr)) *mockICBMService_ClientErr_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(wire.SNACFrame), args[3].(wire.SNAC_0x04_0x0B_ICBMClientErr))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 wire.SNACFrame
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNACFrame)
+		}
+		var arg3 wire.SNAC_0x04_0x0B_ICBMClientErr
+		if args[3] != nil {
+			arg3 = args[3].(wire.SNAC_0x04_0x0B_ICBMClientErr)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+			arg3,
+		)
 	})
 	return _c
 }
 
-func (_c *mockICBMService_ClientErr_Call) Return(_a0 error) *mockICBMService_ClientErr_Call {
-	_c.Call.Return(_a0)
+func (_c *mockICBMService_ClientErr_Call) Return(err error) *mockICBMService_ClientErr_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockICBMService_ClientErr_Call) RunAndReturn(run func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x04_0x0B_ICBMClientErr) error) *mockICBMService_ClientErr_Call {
+func (_c *mockICBMService_ClientErr_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session, frame wire.SNACFrame, body wire.SNAC_0x04_0x0B_ICBMClientErr) error) *mockICBMService_ClientErr_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// ClientEvent provides a mock function with given fields: ctx, sess, inFrame, inBody
-func (_m *mockICBMService) ClientEvent(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x04_0x14_ICBMClientEvent) error {
-	ret := _m.Called(ctx, sess, inFrame, inBody)
+// ClientEvent provides a mock function for the type mockICBMService
+func (_mock *mockICBMService) ClientEvent(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x04_0x14_ICBMClientEvent) error {
+	ret := _mock.Called(ctx, sess, inFrame, inBody)
 
 	if len(ret) == 0 {
 		panic("no return value specified for ClientEvent")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x04_0x14_ICBMClientEvent) error); ok {
-		r0 = rf(ctx, sess, inFrame, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x04_0x14_ICBMClientEvent) error); ok {
+		r0 = returnFunc(ctx, sess, inFrame, inBody)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -168,24 +221,45 @@ func (_e *mockICBMService_Expecter) ClientEvent(ctx interface{}, sess interface{
 
 func (_c *mockICBMService_ClientEvent_Call) Run(run func(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x04_0x14_ICBMClientEvent)) *mockICBMService_ClientEvent_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(wire.SNACFrame), args[3].(wire.SNAC_0x04_0x14_ICBMClientEvent))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 wire.SNACFrame
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNACFrame)
+		}
+		var arg3 wire.SNAC_0x04_0x14_ICBMClientEvent
+		if args[3] != nil {
+			arg3 = args[3].(wire.SNAC_0x04_0x14_ICBMClientEvent)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+			arg3,
+		)
 	})
 	return _c
 }
 
-func (_c *mockICBMService_ClientEvent_Call) Return(_a0 error) *mockICBMService_ClientEvent_Call {
-	_c.Call.Return(_a0)
+func (_c *mockICBMService_ClientEvent_Call) Return(err error) *mockICBMService_ClientEvent_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockICBMService_ClientEvent_Call) RunAndReturn(run func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x04_0x14_ICBMClientEvent) error) *mockICBMService_ClientEvent_Call {
+func (_c *mockICBMService_ClientEvent_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x04_0x14_ICBMClientEvent) error) *mockICBMService_ClientEvent_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// EvilRequest provides a mock function with given fields: ctx, sess, inFrame, inBody
-func (_m *mockICBMService) EvilRequest(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x04_0x08_ICBMEvilRequest) (wire.SNACMessage, error) {
-	ret := _m.Called(ctx, sess, inFrame, inBody)
+// EvilRequest provides a mock function for the type mockICBMService
+func (_mock *mockICBMService) EvilRequest(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x04_0x08_ICBMEvilRequest) (wire.SNACMessage, error) {
+	ret := _mock.Called(ctx, sess, inFrame, inBody)
 
 	if len(ret) == 0 {
 		panic("no return value specified for EvilRequest")
@@ -193,21 +267,19 @@ func (_m *mockICBMService) EvilRequest(ctx context.Context, sess *state.Session,
 
 	var r0 wire.SNACMessage
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x04_0x08_ICBMEvilRequest) (wire.SNACMessage, error)); ok {
-		return rf(ctx, sess, inFrame, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x04_0x08_ICBMEvilRequest) (wire.SNACMessage, error)); ok {
+		return returnFunc(ctx, sess, inFrame, inBody)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x04_0x08_ICBMEvilRequest) wire.SNACMessage); ok {
-		r0 = rf(ctx, sess, inFrame, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x04_0x08_ICBMEvilRequest) wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, sess, inFrame, inBody)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x04_0x08_ICBMEvilRequest) error); ok {
-		r1 = rf(ctx, sess, inFrame, inBody)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x04_0x08_ICBMEvilRequest) error); ok {
+		r1 = returnFunc(ctx, sess, inFrame, inBody)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -227,36 +299,56 @@ func (_e *mockICBMService_Expecter) EvilRequest(ctx interface{}, sess interface{
 
 func (_c *mockICBMService_EvilRequest_Call) Run(run func(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x04_0x08_ICBMEvilRequest)) *mockICBMService_EvilRequest_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(wire.SNACFrame), args[3].(wire.SNAC_0x04_0x08_ICBMEvilRequest))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 wire.SNACFrame
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNACFrame)
+		}
+		var arg3 wire.SNAC_0x04_0x08_ICBMEvilRequest
+		if args[3] != nil {
+			arg3 = args[3].(wire.SNAC_0x04_0x08_ICBMEvilRequest)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+			arg3,
+		)
 	})
 	return _c
 }
 
-func (_c *mockICBMService_EvilRequest_Call) Return(_a0 wire.SNACMessage, _a1 error) *mockICBMService_EvilRequest_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockICBMService_EvilRequest_Call) Return(sNACMessage wire.SNACMessage, err error) *mockICBMService_EvilRequest_Call {
+	_c.Call.Return(sNACMessage, err)
 	return _c
 }
 
-func (_c *mockICBMService_EvilRequest_Call) RunAndReturn(run func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x04_0x08_ICBMEvilRequest) (wire.SNACMessage, error)) *mockICBMService_EvilRequest_Call {
+func (_c *mockICBMService_EvilRequest_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x04_0x08_ICBMEvilRequest) (wire.SNACMessage, error)) *mockICBMService_EvilRequest_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// ParameterQuery provides a mock function with given fields: ctx, inFrame
-func (_m *mockICBMService) ParameterQuery(ctx context.Context, inFrame wire.SNACFrame) wire.SNACMessage {
-	ret := _m.Called(ctx, inFrame)
+// ParameterQuery provides a mock function for the type mockICBMService
+func (_mock *mockICBMService) ParameterQuery(ctx context.Context, inFrame wire.SNACFrame) wire.SNACMessage {
+	ret := _mock.Called(ctx, inFrame)
 
 	if len(ret) == 0 {
 		panic("no return value specified for ParameterQuery")
 	}
 
 	var r0 wire.SNACMessage
-	if rf, ok := ret.Get(0).(func(context.Context, wire.SNACFrame) wire.SNACMessage); ok {
-		r0 = rf(ctx, inFrame)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, wire.SNACFrame) wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, inFrame)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
 	return r0
 }
 
@@ -274,31 +366,28 @@ func (_e *mockICBMService_Expecter) ParameterQuery(ctx interface{}, inFrame inte
 
 func (_c *mockICBMService_ParameterQuery_Call) Run(run func(ctx context.Context, inFrame wire.SNACFrame)) *mockICBMService_ParameterQuery_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(wire.SNACFrame))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 wire.SNACFrame
+		if args[1] != nil {
+			arg1 = args[1].(wire.SNACFrame)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockICBMService_ParameterQuery_Call) Return(_a0 wire.SNACMessage) *mockICBMService_ParameterQuery_Call {
-	_c.Call.Return(_a0)
+func (_c *mockICBMService_ParameterQuery_Call) Return(sNACMessage wire.SNACMessage) *mockICBMService_ParameterQuery_Call {
+	_c.Call.Return(sNACMessage)
 	return _c
 }
 
-func (_c *mockICBMService_ParameterQuery_Call) RunAndReturn(run func(context.Context, wire.SNACFrame) wire.SNACMessage) *mockICBMService_ParameterQuery_Call {
+func (_c *mockICBMService_ParameterQuery_Call) RunAndReturn(run func(ctx context.Context, inFrame wire.SNACFrame) wire.SNACMessage) *mockICBMService_ParameterQuery_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockICBMService creates a new instance of mockICBMService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockICBMService(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockICBMService {
-	mock := &mockICBMService{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 142 - 74
server/toc/mock_locate_service_test.go

@@ -1,16 +1,31 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package toc
 
 import (
-	context "context"
+	"context"
 
-	state "github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/wire"
 	mock "github.com/stretchr/testify/mock"
-
-	wire "github.com/mk6i/retro-aim-server/wire"
 )
 
+// newMockLocateService creates a new instance of mockLocateService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockLocateService(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockLocateService {
+	mock := &mockLocateService{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockLocateService is an autogenerated mock type for the LocateService type
 type mockLocateService struct {
 	mock.Mock
@@ -24,9 +39,9 @@ func (_m *mockLocateService) EXPECT() *mockLocateService_Expecter {
 	return &mockLocateService_Expecter{mock: &_m.Mock}
 }
 
-// DirInfo provides a mock function with given fields: ctx, inFrame, body
-func (_m *mockLocateService) DirInfo(ctx context.Context, inFrame wire.SNACFrame, body wire.SNAC_0x02_0x0B_LocateGetDirInfo) (wire.SNACMessage, error) {
-	ret := _m.Called(ctx, inFrame, body)
+// DirInfo provides a mock function for the type mockLocateService
+func (_mock *mockLocateService) DirInfo(ctx context.Context, inFrame wire.SNACFrame, body wire.SNAC_0x02_0x0B_LocateGetDirInfo) (wire.SNACMessage, error) {
+	ret := _mock.Called(ctx, inFrame, body)
 
 	if len(ret) == 0 {
 		panic("no return value specified for DirInfo")
@@ -34,21 +49,19 @@ func (_m *mockLocateService) DirInfo(ctx context.Context, inFrame wire.SNACFrame
 
 	var r0 wire.SNACMessage
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, wire.SNACFrame, wire.SNAC_0x02_0x0B_LocateGetDirInfo) (wire.SNACMessage, error)); ok {
-		return rf(ctx, inFrame, body)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, wire.SNACFrame, wire.SNAC_0x02_0x0B_LocateGetDirInfo) (wire.SNACMessage, error)); ok {
+		return returnFunc(ctx, inFrame, body)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, wire.SNACFrame, wire.SNAC_0x02_0x0B_LocateGetDirInfo) wire.SNACMessage); ok {
-		r0 = rf(ctx, inFrame, body)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, wire.SNACFrame, wire.SNAC_0x02_0x0B_LocateGetDirInfo) wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, inFrame, body)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, wire.SNACFrame, wire.SNAC_0x02_0x0B_LocateGetDirInfo) error); ok {
-		r1 = rf(ctx, inFrame, body)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, wire.SNACFrame, wire.SNAC_0x02_0x0B_LocateGetDirInfo) error); ok {
+		r1 = returnFunc(ctx, inFrame, body)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -67,24 +80,40 @@ func (_e *mockLocateService_Expecter) DirInfo(ctx interface{}, inFrame interface
 
 func (_c *mockLocateService_DirInfo_Call) Run(run func(ctx context.Context, inFrame wire.SNACFrame, body wire.SNAC_0x02_0x0B_LocateGetDirInfo)) *mockLocateService_DirInfo_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(wire.SNACFrame), args[2].(wire.SNAC_0x02_0x0B_LocateGetDirInfo))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 wire.SNACFrame
+		if args[1] != nil {
+			arg1 = args[1].(wire.SNACFrame)
+		}
+		var arg2 wire.SNAC_0x02_0x0B_LocateGetDirInfo
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNAC_0x02_0x0B_LocateGetDirInfo)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockLocateService_DirInfo_Call) Return(_a0 wire.SNACMessage, _a1 error) *mockLocateService_DirInfo_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockLocateService_DirInfo_Call) Return(sNACMessage wire.SNACMessage, err error) *mockLocateService_DirInfo_Call {
+	_c.Call.Return(sNACMessage, err)
 	return _c
 }
 
-func (_c *mockLocateService_DirInfo_Call) RunAndReturn(run func(context.Context, wire.SNACFrame, wire.SNAC_0x02_0x0B_LocateGetDirInfo) (wire.SNACMessage, error)) *mockLocateService_DirInfo_Call {
+func (_c *mockLocateService_DirInfo_Call) RunAndReturn(run func(ctx context.Context, inFrame wire.SNACFrame, body wire.SNAC_0x02_0x0B_LocateGetDirInfo) (wire.SNACMessage, error)) *mockLocateService_DirInfo_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// SetDirInfo provides a mock function with given fields: ctx, sess, inFrame, inBody
-func (_m *mockLocateService) SetDirInfo(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x02_0x09_LocateSetDirInfo) (wire.SNACMessage, error) {
-	ret := _m.Called(ctx, sess, inFrame, inBody)
+// SetDirInfo provides a mock function for the type mockLocateService
+func (_mock *mockLocateService) SetDirInfo(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x02_0x09_LocateSetDirInfo) (wire.SNACMessage, error) {
+	ret := _mock.Called(ctx, sess, inFrame, inBody)
 
 	if len(ret) == 0 {
 		panic("no return value specified for SetDirInfo")
@@ -92,21 +121,19 @@ func (_m *mockLocateService) SetDirInfo(ctx context.Context, sess *state.Session
 
 	var r0 wire.SNACMessage
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x02_0x09_LocateSetDirInfo) (wire.SNACMessage, error)); ok {
-		return rf(ctx, sess, inFrame, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x02_0x09_LocateSetDirInfo) (wire.SNACMessage, error)); ok {
+		return returnFunc(ctx, sess, inFrame, inBody)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x02_0x09_LocateSetDirInfo) wire.SNACMessage); ok {
-		r0 = rf(ctx, sess, inFrame, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x02_0x09_LocateSetDirInfo) wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, sess, inFrame, inBody)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x02_0x09_LocateSetDirInfo) error); ok {
-		r1 = rf(ctx, sess, inFrame, inBody)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x02_0x09_LocateSetDirInfo) error); ok {
+		r1 = returnFunc(ctx, sess, inFrame, inBody)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -126,36 +153,56 @@ func (_e *mockLocateService_Expecter) SetDirInfo(ctx interface{}, sess interface
 
 func (_c *mockLocateService_SetDirInfo_Call) Run(run func(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x02_0x09_LocateSetDirInfo)) *mockLocateService_SetDirInfo_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(wire.SNACFrame), args[3].(wire.SNAC_0x02_0x09_LocateSetDirInfo))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 wire.SNACFrame
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNACFrame)
+		}
+		var arg3 wire.SNAC_0x02_0x09_LocateSetDirInfo
+		if args[3] != nil {
+			arg3 = args[3].(wire.SNAC_0x02_0x09_LocateSetDirInfo)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+			arg3,
+		)
 	})
 	return _c
 }
 
-func (_c *mockLocateService_SetDirInfo_Call) Return(_a0 wire.SNACMessage, _a1 error) *mockLocateService_SetDirInfo_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockLocateService_SetDirInfo_Call) Return(sNACMessage wire.SNACMessage, err error) *mockLocateService_SetDirInfo_Call {
+	_c.Call.Return(sNACMessage, err)
 	return _c
 }
 
-func (_c *mockLocateService_SetDirInfo_Call) RunAndReturn(run func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x02_0x09_LocateSetDirInfo) (wire.SNACMessage, error)) *mockLocateService_SetDirInfo_Call {
+func (_c *mockLocateService_SetDirInfo_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x02_0x09_LocateSetDirInfo) (wire.SNACMessage, error)) *mockLocateService_SetDirInfo_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// SetInfo provides a mock function with given fields: ctx, sess, inBody
-func (_m *mockLocateService) SetInfo(ctx context.Context, sess *state.Session, inBody wire.SNAC_0x02_0x04_LocateSetInfo) error {
-	ret := _m.Called(ctx, sess, inBody)
+// SetInfo provides a mock function for the type mockLocateService
+func (_mock *mockLocateService) SetInfo(ctx context.Context, sess *state.Session, inBody wire.SNAC_0x02_0x04_LocateSetInfo) error {
+	ret := _mock.Called(ctx, sess, inBody)
 
 	if len(ret) == 0 {
 		panic("no return value specified for SetInfo")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNAC_0x02_0x04_LocateSetInfo) error); ok {
-		r0 = rf(ctx, sess, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNAC_0x02_0x04_LocateSetInfo) error); ok {
+		r0 = returnFunc(ctx, sess, inBody)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -174,24 +221,40 @@ func (_e *mockLocateService_Expecter) SetInfo(ctx interface{}, sess interface{},
 
 func (_c *mockLocateService_SetInfo_Call) Run(run func(ctx context.Context, sess *state.Session, inBody wire.SNAC_0x02_0x04_LocateSetInfo)) *mockLocateService_SetInfo_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(wire.SNAC_0x02_0x04_LocateSetInfo))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 wire.SNAC_0x02_0x04_LocateSetInfo
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNAC_0x02_0x04_LocateSetInfo)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockLocateService_SetInfo_Call) Return(_a0 error) *mockLocateService_SetInfo_Call {
-	_c.Call.Return(_a0)
+func (_c *mockLocateService_SetInfo_Call) Return(err error) *mockLocateService_SetInfo_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockLocateService_SetInfo_Call) RunAndReturn(run func(context.Context, *state.Session, wire.SNAC_0x02_0x04_LocateSetInfo) error) *mockLocateService_SetInfo_Call {
+func (_c *mockLocateService_SetInfo_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session, inBody wire.SNAC_0x02_0x04_LocateSetInfo) error) *mockLocateService_SetInfo_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// UserInfoQuery provides a mock function with given fields: ctx, sess, inFrame, inBody
-func (_m *mockLocateService) UserInfoQuery(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x02_0x05_LocateUserInfoQuery) (wire.SNACMessage, error) {
-	ret := _m.Called(ctx, sess, inFrame, inBody)
+// UserInfoQuery provides a mock function for the type mockLocateService
+func (_mock *mockLocateService) UserInfoQuery(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x02_0x05_LocateUserInfoQuery) (wire.SNACMessage, error) {
+	ret := _mock.Called(ctx, sess, inFrame, inBody)
 
 	if len(ret) == 0 {
 		panic("no return value specified for UserInfoQuery")
@@ -199,21 +262,19 @@ func (_m *mockLocateService) UserInfoQuery(ctx context.Context, sess *state.Sess
 
 	var r0 wire.SNACMessage
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x02_0x05_LocateUserInfoQuery) (wire.SNACMessage, error)); ok {
-		return rf(ctx, sess, inFrame, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x02_0x05_LocateUserInfoQuery) (wire.SNACMessage, error)); ok {
+		return returnFunc(ctx, sess, inFrame, inBody)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x02_0x05_LocateUserInfoQuery) wire.SNACMessage); ok {
-		r0 = rf(ctx, sess, inFrame, inBody)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x02_0x05_LocateUserInfoQuery) wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, sess, inFrame, inBody)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x02_0x05_LocateUserInfoQuery) error); ok {
-		r1 = rf(ctx, sess, inFrame, inBody)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x02_0x05_LocateUserInfoQuery) error); ok {
+		r1 = returnFunc(ctx, sess, inFrame, inBody)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -233,31 +294,38 @@ func (_e *mockLocateService_Expecter) UserInfoQuery(ctx interface{}, sess interf
 
 func (_c *mockLocateService_UserInfoQuery_Call) Run(run func(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x02_0x05_LocateUserInfoQuery)) *mockLocateService_UserInfoQuery_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(wire.SNACFrame), args[3].(wire.SNAC_0x02_0x05_LocateUserInfoQuery))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 wire.SNACFrame
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNACFrame)
+		}
+		var arg3 wire.SNAC_0x02_0x05_LocateUserInfoQuery
+		if args[3] != nil {
+			arg3 = args[3].(wire.SNAC_0x02_0x05_LocateUserInfoQuery)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+			arg3,
+		)
 	})
 	return _c
 }
 
-func (_c *mockLocateService_UserInfoQuery_Call) Return(_a0 wire.SNACMessage, _a1 error) *mockLocateService_UserInfoQuery_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockLocateService_UserInfoQuery_Call) Return(sNACMessage wire.SNACMessage, err error) *mockLocateService_UserInfoQuery_Call {
+	_c.Call.Return(sNACMessage, err)
 	return _c
 }
 
-func (_c *mockLocateService_UserInfoQuery_Call) RunAndReturn(run func(context.Context, *state.Session, wire.SNACFrame, wire.SNAC_0x02_0x05_LocateUserInfoQuery) (wire.SNACMessage, error)) *mockLocateService_UserInfoQuery_Call {
+func (_c *mockLocateService_UserInfoQuery_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x02_0x05_LocateUserInfoQuery) (wire.SNACMessage, error)) *mockLocateService_UserInfoQuery_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockLocateService creates a new instance of mockLocateService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockLocateService(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockLocateService {
-	mock := &mockLocateService{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 119 - 56
server/toc/mock_oservice_service_test.go

@@ -1,18 +1,31 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package toc
 
 import (
-	context "context"
-
-	config "github.com/mk6i/retro-aim-server/config"
+	"context"
 
+	"github.com/mk6i/retro-aim-server/config"
+	"github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/wire"
 	mock "github.com/stretchr/testify/mock"
+)
 
-	state "github.com/mk6i/retro-aim-server/state"
+// newMockOServiceService creates a new instance of mockOServiceService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockOServiceService(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockOServiceService {
+	mock := &mockOServiceService{}
+	mock.Mock.Test(t)
 
-	wire "github.com/mk6i/retro-aim-server/wire"
-)
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
 
 // mockOServiceService is an autogenerated mock type for the OServiceService type
 type mockOServiceService struct {
@@ -27,21 +40,20 @@ func (_m *mockOServiceService) EXPECT() *mockOServiceService_Expecter {
 	return &mockOServiceService_Expecter{mock: &_m.Mock}
 }
 
-// ClientOnline provides a mock function with given fields: ctx, service, bodyIn, sess
-func (_m *mockOServiceService) ClientOnline(ctx context.Context, service uint16, bodyIn wire.SNAC_0x01_0x02_OServiceClientOnline, sess *state.Session) error {
-	ret := _m.Called(ctx, service, bodyIn, sess)
+// ClientOnline provides a mock function for the type mockOServiceService
+func (_mock *mockOServiceService) ClientOnline(ctx context.Context, service uint16, bodyIn wire.SNAC_0x01_0x02_OServiceClientOnline, sess *state.Session) error {
+	ret := _mock.Called(ctx, service, bodyIn, sess)
 
 	if len(ret) == 0 {
 		panic("no return value specified for ClientOnline")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, uint16, wire.SNAC_0x01_0x02_OServiceClientOnline, *state.Session) error); ok {
-		r0 = rf(ctx, service, bodyIn, sess)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, uint16, wire.SNAC_0x01_0x02_OServiceClientOnline, *state.Session) error); ok {
+		r0 = returnFunc(ctx, service, bodyIn, sess)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -61,36 +73,56 @@ func (_e *mockOServiceService_Expecter) ClientOnline(ctx interface{}, service in
 
 func (_c *mockOServiceService_ClientOnline_Call) Run(run func(ctx context.Context, service uint16, bodyIn wire.SNAC_0x01_0x02_OServiceClientOnline, sess *state.Session)) *mockOServiceService_ClientOnline_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(uint16), args[2].(wire.SNAC_0x01_0x02_OServiceClientOnline), args[3].(*state.Session))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 uint16
+		if args[1] != nil {
+			arg1 = args[1].(uint16)
+		}
+		var arg2 wire.SNAC_0x01_0x02_OServiceClientOnline
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNAC_0x01_0x02_OServiceClientOnline)
+		}
+		var arg3 *state.Session
+		if args[3] != nil {
+			arg3 = args[3].(*state.Session)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+			arg3,
+		)
 	})
 	return _c
 }
 
-func (_c *mockOServiceService_ClientOnline_Call) Return(_a0 error) *mockOServiceService_ClientOnline_Call {
-	_c.Call.Return(_a0)
+func (_c *mockOServiceService_ClientOnline_Call) Return(err error) *mockOServiceService_ClientOnline_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockOServiceService_ClientOnline_Call) RunAndReturn(run func(context.Context, uint16, wire.SNAC_0x01_0x02_OServiceClientOnline, *state.Session) error) *mockOServiceService_ClientOnline_Call {
+func (_c *mockOServiceService_ClientOnline_Call) RunAndReturn(run func(ctx context.Context, service uint16, bodyIn wire.SNAC_0x01_0x02_OServiceClientOnline, sess *state.Session) error) *mockOServiceService_ClientOnline_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// IdleNotification provides a mock function with given fields: ctx, sess, bodyIn
-func (_m *mockOServiceService) IdleNotification(ctx context.Context, sess *state.Session, bodyIn wire.SNAC_0x01_0x11_OServiceIdleNotification) error {
-	ret := _m.Called(ctx, sess, bodyIn)
+// IdleNotification provides a mock function for the type mockOServiceService
+func (_mock *mockOServiceService) IdleNotification(ctx context.Context, sess *state.Session, bodyIn wire.SNAC_0x01_0x11_OServiceIdleNotification) error {
+	ret := _mock.Called(ctx, sess, bodyIn)
 
 	if len(ret) == 0 {
 		panic("no return value specified for IdleNotification")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNAC_0x01_0x11_OServiceIdleNotification) error); ok {
-		r0 = rf(ctx, sess, bodyIn)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNAC_0x01_0x11_OServiceIdleNotification) error); ok {
+		r0 = returnFunc(ctx, sess, bodyIn)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -109,24 +141,40 @@ func (_e *mockOServiceService_Expecter) IdleNotification(ctx interface{}, sess i
 
 func (_c *mockOServiceService_IdleNotification_Call) Run(run func(ctx context.Context, sess *state.Session, bodyIn wire.SNAC_0x01_0x11_OServiceIdleNotification)) *mockOServiceService_IdleNotification_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(wire.SNAC_0x01_0x11_OServiceIdleNotification))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 wire.SNAC_0x01_0x11_OServiceIdleNotification
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNAC_0x01_0x11_OServiceIdleNotification)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockOServiceService_IdleNotification_Call) Return(_a0 error) *mockOServiceService_IdleNotification_Call {
-	_c.Call.Return(_a0)
+func (_c *mockOServiceService_IdleNotification_Call) Return(err error) *mockOServiceService_IdleNotification_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockOServiceService_IdleNotification_Call) RunAndReturn(run func(context.Context, *state.Session, wire.SNAC_0x01_0x11_OServiceIdleNotification) error) *mockOServiceService_IdleNotification_Call {
+func (_c *mockOServiceService_IdleNotification_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session, bodyIn wire.SNAC_0x01_0x11_OServiceIdleNotification) error) *mockOServiceService_IdleNotification_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// ServiceRequest provides a mock function with given fields: ctx, service, sess, frame, bodyIn, listener
-func (_m *mockOServiceService) ServiceRequest(ctx context.Context, service uint16, sess *state.Session, frame wire.SNACFrame, bodyIn wire.SNAC_0x01_0x04_OServiceServiceRequest, listener config.Listener) (wire.SNACMessage, error) {
-	ret := _m.Called(ctx, service, sess, frame, bodyIn, listener)
+// ServiceRequest provides a mock function for the type mockOServiceService
+func (_mock *mockOServiceService) ServiceRequest(ctx context.Context, service uint16, sess *state.Session, frame wire.SNACFrame, bodyIn wire.SNAC_0x01_0x04_OServiceServiceRequest, listener config.Listener) (wire.SNACMessage, error) {
+	ret := _mock.Called(ctx, service, sess, frame, bodyIn, listener)
 
 	if len(ret) == 0 {
 		panic("no return value specified for ServiceRequest")
@@ -134,21 +182,19 @@ func (_m *mockOServiceService) ServiceRequest(ctx context.Context, service uint1
 
 	var r0 wire.SNACMessage
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, uint16, *state.Session, wire.SNACFrame, wire.SNAC_0x01_0x04_OServiceServiceRequest, config.Listener) (wire.SNACMessage, error)); ok {
-		return rf(ctx, service, sess, frame, bodyIn, listener)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, uint16, *state.Session, wire.SNACFrame, wire.SNAC_0x01_0x04_OServiceServiceRequest, config.Listener) (wire.SNACMessage, error)); ok {
+		return returnFunc(ctx, service, sess, frame, bodyIn, listener)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, uint16, *state.Session, wire.SNACFrame, wire.SNAC_0x01_0x04_OServiceServiceRequest, config.Listener) wire.SNACMessage); ok {
-		r0 = rf(ctx, service, sess, frame, bodyIn, listener)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, uint16, *state.Session, wire.SNACFrame, wire.SNAC_0x01_0x04_OServiceServiceRequest, config.Listener) wire.SNACMessage); ok {
+		r0 = returnFunc(ctx, service, sess, frame, bodyIn, listener)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, uint16, *state.Session, wire.SNACFrame, wire.SNAC_0x01_0x04_OServiceServiceRequest, config.Listener) error); ok {
-		r1 = rf(ctx, service, sess, frame, bodyIn, listener)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, uint16, *state.Session, wire.SNACFrame, wire.SNAC_0x01_0x04_OServiceServiceRequest, config.Listener) error); ok {
+		r1 = returnFunc(ctx, service, sess, frame, bodyIn, listener)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -170,31 +216,48 @@ func (_e *mockOServiceService_Expecter) ServiceRequest(ctx interface{}, service
 
 func (_c *mockOServiceService_ServiceRequest_Call) Run(run func(ctx context.Context, service uint16, sess *state.Session, frame wire.SNACFrame, bodyIn wire.SNAC_0x01_0x04_OServiceServiceRequest, listener config.Listener)) *mockOServiceService_ServiceRequest_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(uint16), args[2].(*state.Session), args[3].(wire.SNACFrame), args[4].(wire.SNAC_0x01_0x04_OServiceServiceRequest), args[5].(config.Listener))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 uint16
+		if args[1] != nil {
+			arg1 = args[1].(uint16)
+		}
+		var arg2 *state.Session
+		if args[2] != nil {
+			arg2 = args[2].(*state.Session)
+		}
+		var arg3 wire.SNACFrame
+		if args[3] != nil {
+			arg3 = args[3].(wire.SNACFrame)
+		}
+		var arg4 wire.SNAC_0x01_0x04_OServiceServiceRequest
+		if args[4] != nil {
+			arg4 = args[4].(wire.SNAC_0x01_0x04_OServiceServiceRequest)
+		}
+		var arg5 config.Listener
+		if args[5] != nil {
+			arg5 = args[5].(config.Listener)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+			arg3,
+			arg4,
+			arg5,
+		)
 	})
 	return _c
 }
 
-func (_c *mockOServiceService_ServiceRequest_Call) Return(_a0 wire.SNACMessage, _a1 error) *mockOServiceService_ServiceRequest_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockOServiceService_ServiceRequest_Call) Return(sNACMessage wire.SNACMessage, err error) *mockOServiceService_ServiceRequest_Call {
+	_c.Call.Return(sNACMessage, err)
 	return _c
 }
 
-func (_c *mockOServiceService_ServiceRequest_Call) RunAndReturn(run func(context.Context, uint16, *state.Session, wire.SNACFrame, wire.SNAC_0x01_0x04_OServiceServiceRequest, config.Listener) (wire.SNACMessage, error)) *mockOServiceService_ServiceRequest_Call {
+func (_c *mockOServiceService_ServiceRequest_Call) RunAndReturn(run func(ctx context.Context, service uint16, sess *state.Session, frame wire.SNACFrame, bodyIn wire.SNAC_0x01_0x04_OServiceServiceRequest, listener config.Listener) (wire.SNACMessage, error)) *mockOServiceService_ServiceRequest_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockOServiceService creates a new instance of mockOServiceService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockOServiceService(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockOServiceService {
-	mock := &mockOServiceService{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 144 - 73
server/toc/mock_permit_deny_service_test.go

@@ -1,16 +1,31 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package toc
 
 import (
-	context "context"
+	"context"
 
-	state "github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/wire"
 	mock "github.com/stretchr/testify/mock"
-
-	wire "github.com/mk6i/retro-aim-server/wire"
 )
 
+// newMockPermitDenyService creates a new instance of mockPermitDenyService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockPermitDenyService(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockPermitDenyService {
+	mock := &mockPermitDenyService{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockPermitDenyService is an autogenerated mock type for the PermitDenyService type
 type mockPermitDenyService struct {
 	mock.Mock
@@ -24,21 +39,20 @@ func (_m *mockPermitDenyService) EXPECT() *mockPermitDenyService_Expecter {
 	return &mockPermitDenyService_Expecter{mock: &_m.Mock}
 }
 
-// AddDenyListEntries provides a mock function with given fields: ctx, sess, body
-func (_m *mockPermitDenyService) AddDenyListEntries(ctx context.Context, sess *state.Session, body wire.SNAC_0x09_0x07_PermitDenyAddDenyListEntries) error {
-	ret := _m.Called(ctx, sess, body)
+// AddDenyListEntries provides a mock function for the type mockPermitDenyService
+func (_mock *mockPermitDenyService) AddDenyListEntries(ctx context.Context, sess *state.Session, body wire.SNAC_0x09_0x07_PermitDenyAddDenyListEntries) error {
+	ret := _mock.Called(ctx, sess, body)
 
 	if len(ret) == 0 {
 		panic("no return value specified for AddDenyListEntries")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNAC_0x09_0x07_PermitDenyAddDenyListEntries) error); ok {
-		r0 = rf(ctx, sess, body)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNAC_0x09_0x07_PermitDenyAddDenyListEntries) error); ok {
+		r0 = returnFunc(ctx, sess, body)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -57,36 +71,51 @@ func (_e *mockPermitDenyService_Expecter) AddDenyListEntries(ctx interface{}, se
 
 func (_c *mockPermitDenyService_AddDenyListEntries_Call) Run(run func(ctx context.Context, sess *state.Session, body wire.SNAC_0x09_0x07_PermitDenyAddDenyListEntries)) *mockPermitDenyService_AddDenyListEntries_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(wire.SNAC_0x09_0x07_PermitDenyAddDenyListEntries))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 wire.SNAC_0x09_0x07_PermitDenyAddDenyListEntries
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNAC_0x09_0x07_PermitDenyAddDenyListEntries)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockPermitDenyService_AddDenyListEntries_Call) Return(_a0 error) *mockPermitDenyService_AddDenyListEntries_Call {
-	_c.Call.Return(_a0)
+func (_c *mockPermitDenyService_AddDenyListEntries_Call) Return(err error) *mockPermitDenyService_AddDenyListEntries_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockPermitDenyService_AddDenyListEntries_Call) RunAndReturn(run func(context.Context, *state.Session, wire.SNAC_0x09_0x07_PermitDenyAddDenyListEntries) error) *mockPermitDenyService_AddDenyListEntries_Call {
+func (_c *mockPermitDenyService_AddDenyListEntries_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session, body wire.SNAC_0x09_0x07_PermitDenyAddDenyListEntries) error) *mockPermitDenyService_AddDenyListEntries_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// AddPermListEntries provides a mock function with given fields: ctx, sess, body
-func (_m *mockPermitDenyService) AddPermListEntries(ctx context.Context, sess *state.Session, body wire.SNAC_0x09_0x05_PermitDenyAddPermListEntries) error {
-	ret := _m.Called(ctx, sess, body)
+// AddPermListEntries provides a mock function for the type mockPermitDenyService
+func (_mock *mockPermitDenyService) AddPermListEntries(ctx context.Context, sess *state.Session, body wire.SNAC_0x09_0x05_PermitDenyAddPermListEntries) error {
+	ret := _mock.Called(ctx, sess, body)
 
 	if len(ret) == 0 {
 		panic("no return value specified for AddPermListEntries")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNAC_0x09_0x05_PermitDenyAddPermListEntries) error); ok {
-		r0 = rf(ctx, sess, body)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNAC_0x09_0x05_PermitDenyAddPermListEntries) error); ok {
+		r0 = returnFunc(ctx, sess, body)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -105,36 +134,51 @@ func (_e *mockPermitDenyService_Expecter) AddPermListEntries(ctx interface{}, se
 
 func (_c *mockPermitDenyService_AddPermListEntries_Call) Run(run func(ctx context.Context, sess *state.Session, body wire.SNAC_0x09_0x05_PermitDenyAddPermListEntries)) *mockPermitDenyService_AddPermListEntries_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(wire.SNAC_0x09_0x05_PermitDenyAddPermListEntries))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 wire.SNAC_0x09_0x05_PermitDenyAddPermListEntries
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNAC_0x09_0x05_PermitDenyAddPermListEntries)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockPermitDenyService_AddPermListEntries_Call) Return(_a0 error) *mockPermitDenyService_AddPermListEntries_Call {
-	_c.Call.Return(_a0)
+func (_c *mockPermitDenyService_AddPermListEntries_Call) Return(err error) *mockPermitDenyService_AddPermListEntries_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockPermitDenyService_AddPermListEntries_Call) RunAndReturn(run func(context.Context, *state.Session, wire.SNAC_0x09_0x05_PermitDenyAddPermListEntries) error) *mockPermitDenyService_AddPermListEntries_Call {
+func (_c *mockPermitDenyService_AddPermListEntries_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session, body wire.SNAC_0x09_0x05_PermitDenyAddPermListEntries) error) *mockPermitDenyService_AddPermListEntries_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// DelDenyListEntries provides a mock function with given fields: ctx, sess, body
-func (_m *mockPermitDenyService) DelDenyListEntries(ctx context.Context, sess *state.Session, body wire.SNAC_0x09_0x08_PermitDenyDelDenyListEntries) error {
-	ret := _m.Called(ctx, sess, body)
+// DelDenyListEntries provides a mock function for the type mockPermitDenyService
+func (_mock *mockPermitDenyService) DelDenyListEntries(ctx context.Context, sess *state.Session, body wire.SNAC_0x09_0x08_PermitDenyDelDenyListEntries) error {
+	ret := _mock.Called(ctx, sess, body)
 
 	if len(ret) == 0 {
 		panic("no return value specified for DelDenyListEntries")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNAC_0x09_0x08_PermitDenyDelDenyListEntries) error); ok {
-		r0 = rf(ctx, sess, body)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNAC_0x09_0x08_PermitDenyDelDenyListEntries) error); ok {
+		r0 = returnFunc(ctx, sess, body)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -153,36 +197,51 @@ func (_e *mockPermitDenyService_Expecter) DelDenyListEntries(ctx interface{}, se
 
 func (_c *mockPermitDenyService_DelDenyListEntries_Call) Run(run func(ctx context.Context, sess *state.Session, body wire.SNAC_0x09_0x08_PermitDenyDelDenyListEntries)) *mockPermitDenyService_DelDenyListEntries_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(wire.SNAC_0x09_0x08_PermitDenyDelDenyListEntries))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 wire.SNAC_0x09_0x08_PermitDenyDelDenyListEntries
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNAC_0x09_0x08_PermitDenyDelDenyListEntries)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockPermitDenyService_DelDenyListEntries_Call) Return(_a0 error) *mockPermitDenyService_DelDenyListEntries_Call {
-	_c.Call.Return(_a0)
+func (_c *mockPermitDenyService_DelDenyListEntries_Call) Return(err error) *mockPermitDenyService_DelDenyListEntries_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockPermitDenyService_DelDenyListEntries_Call) RunAndReturn(run func(context.Context, *state.Session, wire.SNAC_0x09_0x08_PermitDenyDelDenyListEntries) error) *mockPermitDenyService_DelDenyListEntries_Call {
+func (_c *mockPermitDenyService_DelDenyListEntries_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session, body wire.SNAC_0x09_0x08_PermitDenyDelDenyListEntries) error) *mockPermitDenyService_DelDenyListEntries_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// DelPermListEntries provides a mock function with given fields: ctx, sess, body
-func (_m *mockPermitDenyService) DelPermListEntries(ctx context.Context, sess *state.Session, body wire.SNAC_0x09_0x06_PermitDenyDelPermListEntries) error {
-	ret := _m.Called(ctx, sess, body)
+// DelPermListEntries provides a mock function for the type mockPermitDenyService
+func (_mock *mockPermitDenyService) DelPermListEntries(ctx context.Context, sess *state.Session, body wire.SNAC_0x09_0x06_PermitDenyDelPermListEntries) error {
+	ret := _mock.Called(ctx, sess, body)
 
 	if len(ret) == 0 {
 		panic("no return value specified for DelPermListEntries")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNAC_0x09_0x06_PermitDenyDelPermListEntries) error); ok {
-		r0 = rf(ctx, sess, body)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, *state.Session, wire.SNAC_0x09_0x06_PermitDenyDelPermListEntries) error); ok {
+		r0 = returnFunc(ctx, sess, body)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -201,36 +260,51 @@ func (_e *mockPermitDenyService_Expecter) DelPermListEntries(ctx interface{}, se
 
 func (_c *mockPermitDenyService_DelPermListEntries_Call) Run(run func(ctx context.Context, sess *state.Session, body wire.SNAC_0x09_0x06_PermitDenyDelPermListEntries)) *mockPermitDenyService_DelPermListEntries_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(*state.Session), args[2].(wire.SNAC_0x09_0x06_PermitDenyDelPermListEntries))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 *state.Session
+		if args[1] != nil {
+			arg1 = args[1].(*state.Session)
+		}
+		var arg2 wire.SNAC_0x09_0x06_PermitDenyDelPermListEntries
+		if args[2] != nil {
+			arg2 = args[2].(wire.SNAC_0x09_0x06_PermitDenyDelPermListEntries)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockPermitDenyService_DelPermListEntries_Call) Return(_a0 error) *mockPermitDenyService_DelPermListEntries_Call {
-	_c.Call.Return(_a0)
+func (_c *mockPermitDenyService_DelPermListEntries_Call) Return(err error) *mockPermitDenyService_DelPermListEntries_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockPermitDenyService_DelPermListEntries_Call) RunAndReturn(run func(context.Context, *state.Session, wire.SNAC_0x09_0x06_PermitDenyDelPermListEntries) error) *mockPermitDenyService_DelPermListEntries_Call {
+func (_c *mockPermitDenyService_DelPermListEntries_Call) RunAndReturn(run func(ctx context.Context, sess *state.Session, body wire.SNAC_0x09_0x06_PermitDenyDelPermListEntries) error) *mockPermitDenyService_DelPermListEntries_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// RightsQuery provides a mock function with given fields: _a0, frame
-func (_m *mockPermitDenyService) RightsQuery(_a0 context.Context, frame wire.SNACFrame) wire.SNACMessage {
-	ret := _m.Called(_a0, frame)
+// RightsQuery provides a mock function for the type mockPermitDenyService
+func (_mock *mockPermitDenyService) RightsQuery(context1 context.Context, frame wire.SNACFrame) wire.SNACMessage {
+	ret := _mock.Called(context1, frame)
 
 	if len(ret) == 0 {
 		panic("no return value specified for RightsQuery")
 	}
 
 	var r0 wire.SNACMessage
-	if rf, ok := ret.Get(0).(func(context.Context, wire.SNACFrame) wire.SNACMessage); ok {
-		r0 = rf(_a0, frame)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, wire.SNACFrame) wire.SNACMessage); ok {
+		r0 = returnFunc(context1, frame)
 	} else {
 		r0 = ret.Get(0).(wire.SNACMessage)
 	}
-
 	return r0
 }
 
@@ -240,39 +314,36 @@ type mockPermitDenyService_RightsQuery_Call struct {
 }
 
 // RightsQuery is a helper method to define mock.On call
-//   - _a0 context.Context
+//   - context1 context.Context
 //   - frame wire.SNACFrame
-func (_e *mockPermitDenyService_Expecter) RightsQuery(_a0 interface{}, frame interface{}) *mockPermitDenyService_RightsQuery_Call {
-	return &mockPermitDenyService_RightsQuery_Call{Call: _e.mock.On("RightsQuery", _a0, frame)}
+func (_e *mockPermitDenyService_Expecter) RightsQuery(context1 interface{}, frame interface{}) *mockPermitDenyService_RightsQuery_Call {
+	return &mockPermitDenyService_RightsQuery_Call{Call: _e.mock.On("RightsQuery", context1, frame)}
 }
 
-func (_c *mockPermitDenyService_RightsQuery_Call) Run(run func(_a0 context.Context, frame wire.SNACFrame)) *mockPermitDenyService_RightsQuery_Call {
+func (_c *mockPermitDenyService_RightsQuery_Call) Run(run func(context1 context.Context, frame wire.SNACFrame)) *mockPermitDenyService_RightsQuery_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(wire.SNACFrame))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 wire.SNACFrame
+		if args[1] != nil {
+			arg1 = args[1].(wire.SNACFrame)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockPermitDenyService_RightsQuery_Call) Return(_a0 wire.SNACMessage) *mockPermitDenyService_RightsQuery_Call {
-	_c.Call.Return(_a0)
+func (_c *mockPermitDenyService_RightsQuery_Call) Return(sNACMessage wire.SNACMessage) *mockPermitDenyService_RightsQuery_Call {
+	_c.Call.Return(sNACMessage)
 	return _c
 }
 
-func (_c *mockPermitDenyService_RightsQuery_Call) RunAndReturn(run func(context.Context, wire.SNACFrame) wire.SNACMessage) *mockPermitDenyService_RightsQuery_Call {
+func (_c *mockPermitDenyService_RightsQuery_Call) RunAndReturn(run func(context1 context.Context, frame wire.SNACFrame) wire.SNACMessage) *mockPermitDenyService_RightsQuery_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockPermitDenyService creates a new instance of mockPermitDenyService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockPermitDenyService(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockPermitDenyService {
-	mock := &mockPermitDenyService{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

+ 68 - 42
server/toc/mock_toc_config_store_test.go

@@ -1,14 +1,30 @@
-// Code generated by mockery v2.53.3. DO NOT EDIT.
+// Code generated by mockery; DO NOT EDIT.
+// github.com/vektra/mockery
+// template: testify
 
 package toc
 
 import (
-	context "context"
+	"context"
 
-	state "github.com/mk6i/retro-aim-server/state"
+	"github.com/mk6i/retro-aim-server/state"
 	mock "github.com/stretchr/testify/mock"
 )
 
+// newMockTOCConfigStore creates a new instance of mockTOCConfigStore. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func newMockTOCConfigStore(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *mockTOCConfigStore {
+	mock := &mockTOCConfigStore{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
+
 // mockTOCConfigStore is an autogenerated mock type for the TOCConfigStore type
 type mockTOCConfigStore struct {
 	mock.Mock
@@ -22,21 +38,20 @@ func (_m *mockTOCConfigStore) EXPECT() *mockTOCConfigStore_Expecter {
 	return &mockTOCConfigStore_Expecter{mock: &_m.Mock}
 }
 
-// SetTOCConfig provides a mock function with given fields: ctx, user, config
-func (_m *mockTOCConfigStore) SetTOCConfig(ctx context.Context, user state.IdentScreenName, config string) error {
-	ret := _m.Called(ctx, user, config)
+// SetTOCConfig provides a mock function for the type mockTOCConfigStore
+func (_mock *mockTOCConfigStore) SetTOCConfig(ctx context.Context, user state.IdentScreenName, config string) error {
+	ret := _mock.Called(ctx, user, config)
 
 	if len(ret) == 0 {
 		panic("no return value specified for SetTOCConfig")
 	}
 
 	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, string) error); ok {
-		r0 = rf(ctx, user, config)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName, string) error); ok {
+		r0 = returnFunc(ctx, user, config)
 	} else {
 		r0 = ret.Error(0)
 	}
-
 	return r0
 }
 
@@ -55,24 +70,40 @@ func (_e *mockTOCConfigStore_Expecter) SetTOCConfig(ctx interface{}, user interf
 
 func (_c *mockTOCConfigStore_SetTOCConfig_Call) Run(run func(ctx context.Context, user state.IdentScreenName, config string)) *mockTOCConfigStore_SetTOCConfig_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName), args[2].(string))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		var arg2 string
+		if args[2] != nil {
+			arg2 = args[2].(string)
+		}
+		run(
+			arg0,
+			arg1,
+			arg2,
+		)
 	})
 	return _c
 }
 
-func (_c *mockTOCConfigStore_SetTOCConfig_Call) Return(_a0 error) *mockTOCConfigStore_SetTOCConfig_Call {
-	_c.Call.Return(_a0)
+func (_c *mockTOCConfigStore_SetTOCConfig_Call) Return(err error) *mockTOCConfigStore_SetTOCConfig_Call {
+	_c.Call.Return(err)
 	return _c
 }
 
-func (_c *mockTOCConfigStore_SetTOCConfig_Call) RunAndReturn(run func(context.Context, state.IdentScreenName, string) error) *mockTOCConfigStore_SetTOCConfig_Call {
+func (_c *mockTOCConfigStore_SetTOCConfig_Call) RunAndReturn(run func(ctx context.Context, user state.IdentScreenName, config string) error) *mockTOCConfigStore_SetTOCConfig_Call {
 	_c.Call.Return(run)
 	return _c
 }
 
-// User provides a mock function with given fields: ctx, screenName
-func (_m *mockTOCConfigStore) User(ctx context.Context, screenName state.IdentScreenName) (*state.User, error) {
-	ret := _m.Called(ctx, screenName)
+// User provides a mock function for the type mockTOCConfigStore
+func (_mock *mockTOCConfigStore) User(ctx context.Context, screenName state.IdentScreenName) (*state.User, error) {
+	ret := _mock.Called(ctx, screenName)
 
 	if len(ret) == 0 {
 		panic("no return value specified for User")
@@ -80,23 +111,21 @@ func (_m *mockTOCConfigStore) User(ctx context.Context, screenName state.IdentSc
 
 	var r0 *state.User
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) (*state.User, error)); ok {
-		return rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) (*state.User, error)); ok {
+		return returnFunc(ctx, screenName)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) *state.User); ok {
-		r0 = rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(0).(func(context.Context, state.IdentScreenName) *state.User); ok {
+		r0 = returnFunc(ctx, screenName)
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).(*state.User)
 		}
 	}
-
-	if rf, ok := ret.Get(1).(func(context.Context, state.IdentScreenName) error); ok {
-		r1 = rf(ctx, screenName)
+	if returnFunc, ok := ret.Get(1).(func(context.Context, state.IdentScreenName) error); ok {
+		r1 = returnFunc(ctx, screenName)
 	} else {
 		r1 = ret.Error(1)
 	}
-
 	return r0, r1
 }
 
@@ -114,31 +143,28 @@ func (_e *mockTOCConfigStore_Expecter) User(ctx interface{}, screenName interfac
 
 func (_c *mockTOCConfigStore_User_Call) Run(run func(ctx context.Context, screenName state.IdentScreenName)) *mockTOCConfigStore_User_Call {
 	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(state.IdentScreenName))
+		var arg0 context.Context
+		if args[0] != nil {
+			arg0 = args[0].(context.Context)
+		}
+		var arg1 state.IdentScreenName
+		if args[1] != nil {
+			arg1 = args[1].(state.IdentScreenName)
+		}
+		run(
+			arg0,
+			arg1,
+		)
 	})
 	return _c
 }
 
-func (_c *mockTOCConfigStore_User_Call) Return(_a0 *state.User, _a1 error) *mockTOCConfigStore_User_Call {
-	_c.Call.Return(_a0, _a1)
+func (_c *mockTOCConfigStore_User_Call) Return(user *state.User, err error) *mockTOCConfigStore_User_Call {
+	_c.Call.Return(user, err)
 	return _c
 }
 
-func (_c *mockTOCConfigStore_User_Call) RunAndReturn(run func(context.Context, state.IdentScreenName) (*state.User, error)) *mockTOCConfigStore_User_Call {
+func (_c *mockTOCConfigStore_User_Call) RunAndReturn(run func(ctx context.Context, screenName state.IdentScreenName) (*state.User, error)) *mockTOCConfigStore_User_Call {
 	_c.Call.Return(run)
 	return _c
 }
-
-// newMockTOCConfigStore creates a new instance of mockTOCConfigStore. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func newMockTOCConfigStore(t interface {
-	mock.TestingT
-	Cleanup(func())
-}) *mockTOCConfigStore {
-	mock := &mockTOCConfigStore{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}

Некоторые файлы не были показаны из-за большого количества измененных файлов