UNPKG

5.98 kBJavaScriptView Raw
1'use strict'
2/* eslint-env mocha */
3
4const { expect } = require('chai')
5
6const { cleanup, clientConnect, startService } = require('./testutils')
7
8const { cleanupTimeout, user1, user2, user3 } = require('./config')
9
10module.exports = function () {
11 let chatService, socket1, socket2, socket3
12
13 afterEach(function (cb) {
14 this.timeout(cleanupTimeout)
15 cleanup(chatService, [socket1, socket2, socket3], cb)
16 chatService = socket1 = socket2 = socket3 = null
17 })
18
19 it('should check user permissions', function (done) {
20 let txt = 'Test message.'
21 let message = { textMessage: txt }
22 chatService = startService({ enableDirectMessages: true })
23 socket1 = clientConnect(user1)
24 socket1.on('loginConfirmed', () => {
25 socket2 = clientConnect(user2)
26 socket2.on('loginConfirmed', () => {
27 socket2.emit('directAddToList', 'blacklist', [user1], (error, data) => {
28 expect(error).not.ok
29 expect(data).null
30 socket1.emit('directMessage', user2, message, (error, data) => {
31 expect(error).ok
32 expect(data).null
33 done()
34 })
35 })
36 })
37 })
38 })
39
40 it('should check user permissions in whitelist mode', function (done) {
41 let txt = 'Test message.'
42 let message = { textMessage: txt }
43 chatService = startService({ enableDirectMessages: true })
44 socket1 = clientConnect(user1)
45 socket1.on('loginConfirmed', () => {
46 socket2 = clientConnect(user2)
47 socket2.on('loginConfirmed', () => {
48 socket2.emit('directAddToList', 'whitelist', [user1], (error, data) => {
49 expect(error).not.ok
50 expect(data).null
51 socket2.emit('directSetWhitelistMode', true, (error, data) => {
52 expect(error).not.ok
53 expect(data).null
54 socket1.emit('directMessage', user2, message, (error, data) => {
55 expect(error).not.ok
56 expect(data.textMessage).equal(txt)
57 socket2.emit(
58 'directRemoveFromList', 'whitelist', [user1], (error, data) => {
59 expect(error).not.ok
60 expect(data).null
61 socket1.emit(
62 'directMessage', user2, message, (error, data) => {
63 expect(error).ok
64 expect(data).null
65 done()
66 })
67 })
68 })
69 })
70 })
71 })
72 })
73 })
74
75 it('should allow an user to modify own lists', function (done) {
76 chatService = startService({ enableDirectMessages: true })
77 socket1 = clientConnect(user1)
78 socket1.on('loginConfirmed', () => {
79 socket1.emit('directAddToList', 'blacklist', [user2], (error, data) => {
80 expect(error).not.ok
81 expect(data).null
82 socket1.emit('directGetAccessList', 'blacklist', (error, data) => {
83 expect(error).not.ok
84 expect(data).include(user2)
85 socket1.emit(
86 'directRemoveFromList', 'blacklist', [user2], (error, data) => {
87 expect(error).not.ok
88 expect(data).null
89 socket1.emit(
90 'directGetAccessList', 'blacklist', (error, data) => {
91 expect(error).not.ok
92 expect(data).not.include(user2)
93 done()
94 })
95 })
96 })
97 })
98 })
99 })
100
101 it('should reject to add self to lists', function (done) {
102 chatService = startService({ enableDirectMessages: true })
103 socket1 = clientConnect(user1)
104 socket1.on('loginConfirmed', () => {
105 socket1.emit('directAddToList', 'blacklist', [user1], (error, data) => {
106 expect(error).ok
107 expect(data).null
108 done()
109 })
110 })
111 })
112
113 it('should check user list names', function (done) {
114 chatService = startService({ enableDirectMessages: true })
115 socket1 = clientConnect(user1)
116 socket1.on('loginConfirmed', () => {
117 socket1.emit('directAddToList', 'nolist', [user2], (error, data) => {
118 expect(error).ok
119 expect(data).null
120 done()
121 })
122 })
123 })
124
125 it('should allow duplicate adding to lists', function (done) {
126 chatService = startService({ enableDirectMessages: true })
127 socket1 = clientConnect(user1)
128 socket1.on('loginConfirmed', () => {
129 socket1.emit('directAddToList', 'blacklist', [user2], (error, data) => {
130 expect(error).not.ok
131 expect(data).null
132 socket1.emit('directAddToList', 'blacklist', [user2], (error, data) => {
133 expect(error).not.ok
134 expect(data).null
135 done()
136 })
137 })
138 })
139 })
140
141 it('should allow deleting non-existing items from lists', function (done) {
142 chatService = startService({ enableDirectMessages: true })
143 socket1 = clientConnect(user1)
144 socket1.on('loginConfirmed', () => {
145 socket1.emit(
146 'directRemoveFromList', 'blacklist', [user2], (error, data) => {
147 expect(error).not.ok
148 expect(data).null
149 done()
150 })
151 })
152 })
153
154 it('should allow an user to modify own mode', function (done) {
155 chatService = startService({ enableDirectMessages: true })
156 socket1 = clientConnect(user1)
157 socket1.on('loginConfirmed', () => {
158 socket1.emit('directSetWhitelistMode', true, (error, data) => {
159 expect(error).not.ok
160 expect(data).null
161 socket1.emit('directGetWhitelistMode', (error, data) => {
162 expect(error).not.ok
163 expect(data).true
164 done()
165 })
166 })
167 })
168 })
169
170 it('should honour direct list size limit', function (done) {
171 chatService = startService({ enableDirectMessages: true,
172 directListSizeLimit: 1 })
173 socket1 = clientConnect(user1)
174 socket1.on('loginConfirmed', () => {
175 socket1.emit(
176 'directAddToList', 'blacklist', [user2, user3], (error, data) => {
177 expect(error).ok
178 done()
179 })
180 })
181 })
182}