feat: implement Remote WinBox worker, API, frontend integration, OpenBao persistence, and supporting docs
This commit is contained in:
107
winbox-worker/internal/session/manager_test.go
Normal file
107
winbox-worker/internal/session/manager_test.go
Normal file
@@ -0,0 +1,107 @@
|
||||
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))
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user