Fix bugs in waiting room.

This commit is contained in:
Storm Dragon
2026-08-30 21:27:21 -04:00
parent 7f4ecbc0d3
commit d0f78b1295
7 changed files with 61 additions and 2 deletions
+30
View File
@@ -296,6 +296,36 @@ func TestScheduledUnlockCompletesWhileIssuerIsOperator(t *testing.T) {
}
}
func TestScheduledUnlockTimerCompletesWhileIssuerIsOperator(t *testing.T) {
g, hallName := newWaitingTestHall(t, 0)
operator := addTestWebClient(t, hallName, "Operator", "op")
g.SetLocked(true, "")
waiter := joinWaitingTestClient(t, hallName, "Alice")
if err := updateWaitingPreference(waiter, true); err != nil {
t.Fatalf("enable automatic waiting-room admission: %v", err)
}
now := time.Now()
if err := scheduleHallUnlock(g, operator, now.Add(20*time.Millisecond), now); err != nil {
t.Fatalf("scheduleHallUnlock: %v", err)
}
deadline := time.Now().Add(time.Second)
for {
locked, _ := g.Locked()
if !locked && waitingClientHall(waiter) == nil {
break
}
if time.Now().After(deadline) {
t.Fatal("scheduled timer left hall locked while issuing operator was present")
}
time.Sleep(time.Millisecond)
}
drainActions(t, waiter)
if waiter.hall != g || waiter.waiting != nil {
t.Fatalf("waiting user was not admitted after scheduled unlock: hall=%v waiting=%v", waiter.hall, waiter.waiting)
}
}
func TestScheduledUnlockRequiresOperatorPermissionAtDeadline(t *testing.T) {
hallName := newChalkboardTestHall(t)
operator := addTestWebClient(t, hallName, "Operator", "op")