UNPKG

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