aboutsummaryrefslogtreecommitdiff
path: root/hotline/ban.go
diff options
context:
space:
mode:
authorJeff Halter <868228+jhalter@users.noreply.github.com>2026-03-16 11:46:04 -0700
committerJeff Halter <868228+jhalter@users.noreply.github.com>2026-03-16 11:46:04 -0700
commit2f46f87177234070044b5304ca3e0db471699ad8 (patch)
tree6dc72ce596e95850a587001a85b3f45e394b0e34 /hotline/ban.go
parent92f4b7af1073b6cdd0786ce2090d6e446e0903ad (diff)
Improve test coverage for hotline and internal/mobius packages
Add comprehensive test cases across both packages to increase coverage: - hotline: 52.4% → ~55% (Disconnect, handleTransaction, SendAll, sendBanMessage, MemClientMgr, and other tests) - internal/mobius: 75.9% → ~80% (HandleUpdateUser, HandleDeleteUser, HandleSetUser, HandleNewUser, HandleUserBroadcast success paths)
Diffstat (limited to 'hotline/ban.go')
-rw-r--r--hotline/ban.go70
1 files changed, 69 insertions, 1 deletions
diff --git a/hotline/ban.go b/hotline/ban.go
index cc2ecde..2713fbe 100644
--- a/hotline/ban.go
+++ b/hotline/ban.go
@@ -1,6 +1,10 @@
package hotline
-import "time"
+import (
+ "time"
+
+ "github.com/stretchr/testify/mock"
+)
// BanDuration is the length of time for temporary bans.
const BanDuration = 30 * time.Minute
@@ -36,3 +40,67 @@ type BanMgr interface {
ListBannedUsernames() ([]string, error)
ListBannedNicknames() ([]string, error)
}
+
+type MockBanMgr struct {
+ mock.Mock
+}
+
+func (m *MockBanMgr) Add(ip string, until *time.Time) error {
+ args := m.Called(ip, until)
+ return args.Error(0)
+}
+
+func (m *MockBanMgr) IsBanned(ip string) (bool, *time.Time) {
+ args := m.Called(ip)
+ return args.Bool(0), args.Get(1).(*time.Time)
+}
+
+func (m *MockBanMgr) UnbanIP(ip string) error {
+ args := m.Called(ip)
+ return args.Error(0)
+}
+
+func (m *MockBanMgr) BanUsername(username string) error {
+ args := m.Called(username)
+ return args.Error(0)
+}
+
+func (m *MockBanMgr) UnbanUsername(username string) error {
+ args := m.Called(username)
+ return args.Error(0)
+}
+
+func (m *MockBanMgr) IsUsernameBanned(username string) bool {
+ args := m.Called(username)
+ return args.Bool(0)
+}
+
+func (m *MockBanMgr) BanNickname(nickname string) error {
+ args := m.Called(nickname)
+ return args.Error(0)
+}
+
+func (m *MockBanMgr) UnbanNickname(nickname string) error {
+ args := m.Called(nickname)
+ return args.Error(0)
+}
+
+func (m *MockBanMgr) IsNicknameBanned(nickname string) bool {
+ args := m.Called(nickname)
+ return args.Bool(0)
+}
+
+func (m *MockBanMgr) ListBannedIPs() ([]string, error) {
+ args := m.Called()
+ return args.Get(0).([]string), args.Error(1)
+}
+
+func (m *MockBanMgr) ListBannedUsernames() ([]string, error) {
+ args := m.Called()
+ return args.Get(0).([]string), args.Error(1)
+}
+
+func (m *MockBanMgr) ListBannedNicknames() ([]string, error) {
+ args := m.Called()
+ return args.Get(0).([]string), args.Error(1)
+}