1
- import clientmanager from "../../clientmanager" ;
1
+ import clientmanager , { parseWebsocketConnectionUrl } from "../../clientmanager" ;
2
2
import {
3
3
BalancerConnection ,
4
4
BalancerConnectionEventHandlers ,
@@ -13,6 +13,8 @@ import { buildClients } from "../../redisclient";
13
13
import { Result , ok } from "../../../common/result" ;
14
14
import roommanager from "../../roommanager" ;
15
15
import { loadModels } from "../../models" ;
16
+ import type { Request } from "express" ;
17
+ import { loadConfigFile , conf } from "../../ott-config" ;
16
18
17
19
class TestClient extends Client {
18
20
sendRawMock = jest . fn ( ) ;
@@ -50,6 +52,7 @@ class BalancerConnectionMock extends BalancerConnection {
50
52
51
53
describe ( "ClientManager" , ( ) => {
52
54
beforeAll ( async ( ) => {
55
+ loadConfigFile ( ) ;
53
56
loadModels ( ) ;
54
57
await buildClients ( ) ;
55
58
await clientmanager . setup ( ) ;
@@ -66,6 +69,32 @@ describe("ClientManager", () => {
66
69
await roommanager . unloadRoom ( "foo" ) ;
67
70
} ) ;
68
71
72
+ it . each ( [
73
+ [ "/api/room/foo" , "foo" ] ,
74
+ [ "/api/room/foo/" , "foo" ] ,
75
+ [ "/api/room/foo/bar" , "foo" ] ,
76
+ [ "/api/room/foo?reconnect=true" , "foo" ] ,
77
+ ] ) ( `should parse room name from %s` , ( path , roomName ) => {
78
+ const got = parseWebsocketConnectionUrl ( { url : path , headers : { } } as Request ) ;
79
+ expect ( got ) . toEqual ( roomName ) ;
80
+ } ) ;
81
+
82
+ it . each ( [
83
+ [ "/base" , "/api/room/foo" , "foo" ] ,
84
+ [ "/base" , "/api/room/foo/" , "foo" ] ,
85
+ [ "/base" , "/api/room/foo/bar" , "foo" ] ,
86
+ [ "/base" , "/api/room/foo?reconnect=true" , "foo" ] ,
87
+ [ "/base/base2" , "/api/room/foo" , "foo" ] ,
88
+ [ "/base/base2" , "/api/room/foo/" , "foo" ] ,
89
+ [ "/base/base2" , "/api/room/foo/bar" , "foo" ] ,
90
+ [ "/base/base2" , "/api/room/foo?reconnect=true" , "foo" ] ,
91
+ ] ) ( `should parse room name when base url is %s from %s` , ( baseurl , path , roomName ) => {
92
+ conf . set ( "base_url" , baseurl ) ;
93
+ const got = parseWebsocketConnectionUrl ( { url : baseurl + path , headers : { } } as Request ) ;
94
+ expect ( got ) . toEqual ( roomName ) ;
95
+ conf . set ( "base_url" , "/" ) ;
96
+ } ) ;
97
+
69
98
it ( "should add clients" , ( ) => {
70
99
const client = new TestClient ( "foo" ) ;
71
100
clientmanager . addClient ( client ) ;
0 commit comments