UNPKG

4.23 kBJavaScriptView Raw
1'use strict'
2/* eslint-env mocha */
3
4const { expect } = require('chai')
5
6const { cleanup, clientConnect,
7 parallel, startService } = require('./testutils')
8
9const { cleanupTimeout, user1, user2,
10 roomName1, roomName2 } = require('./config')
11
12module.exports = function () {
13 let chatService, socket1, socket2, socket3
14
15 afterEach(function (cb) {
16 this.timeout(cleanupTimeout)
17 cleanup(chatService, [socket1, socket2, socket3], cb)
18 chatService = socket1 = socket2 = socket3 = null
19 })
20
21 it('should allow to create and delete rooms', function (done) {
22 chatService = startService({ enableRoomsManagement: true })
23 socket1 = clientConnect(user1)
24 socket1.on('loginConfirmed', u => {
25 socket1.emit('roomCreate', roomName1, false, () => {
26 socket1.emit('roomJoin', roomName1, (error, data) => {
27 expect(error).not.ok
28 expect(data).equal(1)
29 socket1.emit('roomCreate', roomName1, false, (error, data) => {
30 expect(error).ok
31 expect(data).null
32 socket1.emit('roomDelete', roomName1)
33 socket1.on('roomAccessRemoved', r => {
34 expect(r).equal(roomName1)
35 socket1.emit('roomJoin', roomName1, (error, data) => {
36 expect(error).ok
37 expect(data).null
38 done()
39 })
40 })
41 })
42 })
43 })
44 })
45 })
46
47 it('should be able to delete empty rooms', function (done) {
48 chatService = startService({ enableRoomsManagement: true })
49 socket1 = clientConnect(user1)
50 socket1.on('loginConfirmed', u => {
51 socket1.emit('roomCreate', roomName1, false, () => {
52 socket1.emit('roomDelete', roomName1, (error, data) => {
53 expect(error).not.ok
54 expect(data).null
55 done()
56 })
57 })
58 })
59 })
60
61 it('should reject to delete a room for a non-owner', function (done) {
62 chatService = startService({ enableRoomsManagement: true })
63 socket1 = clientConnect(user1)
64 socket1.on('loginConfirmed', u => {
65 socket1.emit('roomCreate', roomName1, false, () => {
66 socket2 = clientConnect(user2)
67 socket2.on('loginConfirmed', () => {
68 socket2.emit('roomDelete', roomName1, (error, data) => {
69 expect(error).ok
70 expect(data).null
71 done()
72 })
73 })
74 })
75 })
76 })
77
78 it('should check for an invalid room names', function (done) {
79 chatService = startService({ enableRoomsManagement: true })
80 socket1 = clientConnect(user1)
81 socket1.on('loginConfirmed', u => {
82 socket1.emit('roomCreate', 'room}1', false, (error, data) => {
83 expect(error).ok
84 expect(data).null
85 done()
86 })
87 })
88 })
89
90 it('should reject room management when the option is off', function (done) {
91 chatService = startService()
92 chatService.addRoom(roomName2, null, () => {
93 socket1 = clientConnect(user1)
94 socket1.on('loginConfirmed', u => {
95 socket1.emit('roomCreate', roomName1, false, (error, data) => {
96 expect(error).ok
97 expect(data).null
98 socket1.emit('roomDelete', roomName2, (error, data) => {
99 expect(error).ok
100 expect(data).null
101 done()
102 })
103 })
104 })
105 })
106 })
107
108 it('should send access removed on a room deletion', function (done) {
109 chatService = startService({ enableRoomsManagement: true })
110 chatService.addRoom(roomName1, { owner: user1 }, () => parallel([
111 cb => {
112 socket1 = clientConnect(user1)
113 socket1.on('loginConfirmed',
114 () => socket1.emit('roomJoin', roomName1, cb))
115 },
116 cb => {
117 socket2 = clientConnect(user2)
118 socket2.on('loginConfirmed',
119 () => socket2.emit('roomJoin', roomName1, cb))
120 }
121 ], error => {
122 expect(error).not.ok
123 parallel([
124 cb => socket1.emit('roomDelete', roomName1, cb),
125 cb => socket1.on('roomAccessRemoved', r => {
126 expect(r).equal(roomName1)
127 cb()
128 }),
129 cb => socket2.on('roomAccessRemoved', r => {
130 expect(r).equal(roomName1)
131 cb()
132 })
133 ], done)
134 }))
135 })
136}