1 | 'use strict'
|
2 |
|
3 |
|
4 | const { expect } = require('chai')
|
5 |
|
6 | const { cleanup, clientConnect,
|
7 | parallel, startService } = require('./testutils')
|
8 |
|
9 | const { cleanupTimeout, user1, user2,
|
10 | roomName1, roomName2 } = require('./config')
|
11 |
|
12 | module.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 | }
|