oficina / meet Public

Clone
git clone https://amadan.net/oficina/meet

Plain git — no account needed to clone.

Download

Download this file

1package hub
2
3import (
4 "context"
5 "fmt"
6 "testing"
7 "time"
8)
9
10func TestDirectAdmissionKeepsGuestsAndEnforcesCapacity(t *testing.T) {
11 now := time.Now()
12 h := testHub(&now)
13 h.cfg.WaitingRoom = func(context.Context, string) (bool, error) { return false, nil }
14 for i := 0; i < MaxAdmitted; i++ {
15 session := fmt.Sprintf("guest-%d", i)
16 o, err := h.Open("r", session, int64(100+i), "Guest", KindGuest)
17 if err != nil {
18 t.Fatal(err)
19 }
20 if err := h.Join(testCtx, "r", session, o.Peer); err != nil {
21 t.Fatal(err)
22 }
23 p, _ := h.Find("r", session, o.Peer)
24 if !p.Admitted || p.Kind != KindGuest {
25 t.Fatal("direct admission changed authority", p)
26 }
27 }
28 extra, _ := h.Open("r", "extra", 200, "Extra", KindGuest)
29 if err := h.Join(testCtx, "r", "extra", extra.Peer); err != ErrMeshFull {
30 t.Fatal("capacity bypassed", err)
31 }
32 p, _ := h.Find("r", "extra", extra.Peer)
33 if p.Admitted {
34 t.Fatal("overflow admitted")
35 }
36}
37
38func TestDisablingWaitingRoomAdmitsQueuedGuests(t *testing.T) {
39 now := time.Now()
40 h := testHub(&now)
41 waiting := true
42 h.cfg.WaitingRoom = func(context.Context, string) (bool, error) { return waiting, nil }
43 o, _ := h.Open("r", "guest", 100, "Guest", KindGuest)
44 if err := h.Join(testCtx, "r", "guest", o.Peer); err != nil {
45 t.Fatal(err)
46 }
47 p, _ := h.Find("r", "guest", o.Peer)
48 if p.Admitted || !p.Joined {
49 t.Fatal("did not wait")
50 }
51 waiting = false
52 if err := h.RefreshWaiting(testCtx, "r"); err != nil {
53 t.Fatal(err)
54 }
55 p, _ = h.Find("r", "guest", o.Peer)
56 if !p.Admitted || p.Kind != KindGuest {
57 t.Fatal("retry not admitted as guest")
58 }
59}
60