108 lines
2.4 KiB
Go
108 lines
2.4 KiB
Go
package session
|
|
|
|
import "testing"
|
|
|
|
func TestManagerCapacityCheck(t *testing.T) {
|
|
m := NewManager(Config{
|
|
MaxSessions: 2,
|
|
DisplayMin: 100,
|
|
DisplayMax: 105,
|
|
WSPortMin: 10100,
|
|
WSPortMax: 10105,
|
|
IdleTimeout: 600,
|
|
MaxLifetime: 7200,
|
|
WinBoxPath: "/usr/bin/winbox4",
|
|
BindAddr: "0.0.0.0",
|
|
})
|
|
if m.SessionCount() != 0 {
|
|
t.Fatal("expected 0 sessions")
|
|
}
|
|
if !m.HasCapacity() {
|
|
t.Fatal("expected capacity")
|
|
}
|
|
}
|
|
|
|
func TestManagerListEmpty(t *testing.T) {
|
|
m := NewManager(Config{
|
|
MaxSessions: 5,
|
|
DisplayMin: 100,
|
|
DisplayMax: 105,
|
|
WSPortMin: 10100,
|
|
WSPortMax: 10105,
|
|
IdleTimeout: 600,
|
|
MaxLifetime: 7200,
|
|
WinBoxPath: "/usr/bin/winbox4",
|
|
BindAddr: "0.0.0.0",
|
|
})
|
|
sessions := m.ListSessions()
|
|
if len(sessions) != 0 {
|
|
t.Fatalf("expected 0 sessions, got %d", len(sessions))
|
|
}
|
|
}
|
|
|
|
func TestTerminateNonExistentIsIdempotent(t *testing.T) {
|
|
m := NewManager(Config{
|
|
MaxSessions: 2,
|
|
DisplayMin: 100,
|
|
DisplayMax: 105,
|
|
WSPortMin: 10100,
|
|
WSPortMax: 10105,
|
|
IdleTimeout: 600,
|
|
MaxLifetime: 7200,
|
|
WinBoxPath: "/usr/bin/winbox4",
|
|
BindAddr: "0.0.0.0",
|
|
})
|
|
// Terminating a non-existent session should return nil (no error)
|
|
err := m.TerminateSession("does-not-exist")
|
|
if err != nil {
|
|
t.Fatalf("expected nil error for non-existent session, got: %v", err)
|
|
}
|
|
}
|
|
|
|
func TestGetNonExistentSessionReturnsError(t *testing.T) {
|
|
m := NewManager(Config{
|
|
MaxSessions: 2,
|
|
DisplayMin: 100,
|
|
DisplayMax: 105,
|
|
WSPortMin: 10100,
|
|
WSPortMax: 10105,
|
|
IdleTimeout: 600,
|
|
MaxLifetime: 7200,
|
|
WinBoxPath: "/usr/bin/winbox4",
|
|
BindAddr: "0.0.0.0",
|
|
})
|
|
_, err := m.GetSession("does-not-exist")
|
|
if err == nil {
|
|
t.Fatal("expected error for non-existent session, got nil")
|
|
}
|
|
}
|
|
|
|
func TestCleanupOrphansRunsWithoutError(t *testing.T) {
|
|
m := NewManager(Config{
|
|
MaxSessions: 2,
|
|
DisplayMin: 100,
|
|
DisplayMax: 105,
|
|
WSPortMin: 10100,
|
|
WSPortMax: 10105,
|
|
IdleTimeout: 600,
|
|
MaxLifetime: 7200,
|
|
WinBoxPath: "/usr/bin/winbox4",
|
|
BindAddr: "0.0.0.0",
|
|
})
|
|
|
|
// CleanupOrphans should not panic on a fresh manager with no sessions
|
|
m.CleanupOrphans()
|
|
|
|
// After cleanup, manager should still be functional
|
|
if !m.HasCapacity() {
|
|
t.Fatal("expected capacity after cleanup")
|
|
}
|
|
if m.SessionCount() != 0 {
|
|
t.Fatal("expected 0 sessions after cleanup")
|
|
}
|
|
sessions := m.ListSessions()
|
|
if len(sessions) != 0 {
|
|
t.Fatalf("expected empty session list after cleanup, got %d", len(sessions))
|
|
}
|
|
}
|