roommanager tests

This commit is contained in:
David Zhao committed 2020-12-25 22:54:58 -08:00
1 parent 28690b6b08
commit 9897412473
4 files changed
+95 -4

No files matched your search

+1 -1
View File
@@ -29,7 +29,7 @@ var (
rtcHostFlag,
&cli.StringFlag{
Name: "token",
Usage: "room token, not required in dev mode",
Usage: "access token, not required in dev mode",
},
&cli.StringFlag{
Name: "name",
+1
View File
@@ -4,6 +4,7 @@ import "errors"
var (
ErrRoomIdMissing = errors.New("room is not passed in")
ErrInvalidRoomName = errors.New("room must have a unique name")
ErrRoomNotFound = errors.New("requested room does not exist")
ErrPermissionDenied = errors.New("no permissions to access the room")
)
+11 -3
View File
@@ -65,13 +65,21 @@ func (m *RoomManager) GetRoomWithConstraint(idOrName string, onlyName string) (*
return rm, nil
}
func (m *RoomManager) CreateRoom(req *livekit.CreateRoomRequest) (r *Room, err error) {
r = NewRoomForRequest(req, &m.config)
func (m *RoomManager) CreateRoom(req *livekit.CreateRoomRequest) (*Room, error) {
if req.Name == "" {
return nil, ErrInvalidRoomName
}
r := NewRoomForRequest(req, &m.config)
m.roomLock.Lock()
defer m.roomLock.Unlock()
if m.roomsByName[req.Name] != nil {
return nil, ErrInvalidRoomName
}
m.rooms[r.Sid] = r
m.roomsByName[r.Name] = r
return
return r, nil
}
func (m *RoomManager) DeleteRoom(idOrName string) error {
+82
View File
@@ -1 +1,83 @@
package rtc_test
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/livekit/livekit-server/pkg/config"
"github.com/livekit/livekit-server/pkg/rtc"
"github.com/livekit/livekit-server/proto/livekit"
)
func TestRoomManager_CreateRoom(t *testing.T) {
man := newRoomManager(t)
t.Run("creation and duplicates", func(t *testing.T) {
r := &livekit.CreateRoomRequest{Name: "basic"}
rm, err := man.CreateRoom(r)
assert.NoError(t, err)
assert.NotNil(t, rm)
rm, err = man.CreateRoom(r)
assert.Equal(t, rtc.ErrInvalidRoomName, err)
assert.Nil(t, rm)
})
t.Run("name is required", func(t *testing.T) {
_, err := man.CreateRoom(&livekit.CreateRoomRequest{})
assert.Equal(t, rtc.ErrInvalidRoomName, err)
})
}
func TestRoomManager_GetRoomByName(t *testing.T) {
man := newRoomManager(t)
_, err := man.CreateRoom(&livekit.CreateRoomRequest{
Name: "hello",
})
assert.NoError(t, err)
rm := man.GetRoom("hello")
assert.Equal(t, "hello", rm.Name)
}
func TestRoomManager_GetRoomWithConstraint(t *testing.T) {
man := newRoomManager(t)
rm, _ := man.CreateRoom(&livekit.CreateRoomRequest{
Name: "hello",
})
t.Run("no constraint, get by id", func(t *testing.T) {
r, err := man.GetRoomWithConstraint(rm.Sid, "")
assert.NoError(t, err)
assert.Equal(t, r, rm)
})
t.Run("no constraint, get by name", func(t *testing.T) {
r, err := man.GetRoomWithConstraint(rm.Name, "")
assert.NoError(t, err)
assert.Equal(t, r, rm)
})
t.Run("no constraint, room doesn't exist", func(t *testing.T) {
_, err := man.GetRoomWithConstraint("wtf", "")
assert.Equal(t, rtc.ErrRoomNotFound, err)
})
t.Run("constraint, no name", func(t *testing.T) {
r, err := man.GetRoomWithConstraint("", rm.Name)
assert.NoError(t, err)
assert.Equal(t, r, rm)
})
t.Run("constraint does not match name", func(t *testing.T) {
_, err := man.GetRoomWithConstraint(rm.Name, "anotherroom")
assert.Equal(t, rtc.ErrPermissionDenied, err)
})
}
func newRoomManager(t *testing.T) *rtc.RoomManager {
man, err := rtc.NewRoomManager(config.RTCConfig{}, "1.2.3.4")
assert.NoError(t, err)
return man
}