UNPKG

4.01 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 } = 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 send direct messages', 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 socket1.emit('directMessage', user2, message)
28 socket2.on('directMessage', msg => {
29 expect(msg).include.keys('textMessage', 'author', 'timestamp')
30 expect(msg.textMessage).equal(txt)
31 expect(msg.author).equal(user1)
32 expect(msg.timestamp).a('Number')
33 done()
34 })
35 })
36 })
37 })
38
39 it('should not send direct messages when the option is off', function (done) {
40 let txt = 'Test message.'
41 let message = { textMessage: txt }
42 chatService = startService()
43 socket1 = clientConnect(user1)
44 socket1.on('loginConfirmed', () => {
45 socket2 = clientConnect(user2)
46 socket2.on('loginConfirmed', () => {
47 socket1.emit('directMessage', user2, message, (error, data) => {
48 expect(error).ok
49 expect(data).null
50 done()
51 })
52 })
53 })
54 })
55
56 it('should not send self-direct messages', function (done) {
57 let txt = 'Test message.'
58 let message = { textMessage: txt }
59 chatService = startService({ enableDirectMessages: true })
60 socket1 = clientConnect(user1)
61 socket1.on('loginConfirmed', () => {
62 socket1.emit('directMessage', user1, message, (error, data) => {
63 expect(error).ok
64 expect(data).null
65 done()
66 })
67 })
68 })
69
70 it('should not send direct messages to offline users', function (done) {
71 let txt = 'Test message.'
72 let message = { textMessage: txt }
73 chatService = startService({ enableDirectMessages: true })
74 socket2 = clientConnect(user2)
75 socket2.on('loginConfirmed', () => {
76 socket2.disconnect()
77 socket1 = clientConnect(user1)
78 socket1.on('loginConfirmed', () => {
79 socket1.emit('directMessage', user2, message, (error, data) => {
80 expect(error).ok
81 expect(data).null
82 done()
83 })
84 })
85 })
86 })
87
88 it('should echo direct messages to all user\'s sockets', function (done) {
89 let txt = 'Test message.'
90 let message = { textMessage: txt }
91 chatService = startService({ enableDirectMessages: true })
92 socket1 = clientConnect(user1)
93 socket1.on('loginConfirmed', () => {
94 socket3 = clientConnect(user1)
95 socket3.on('loginConfirmed', () => {
96 socket2 = clientConnect(user2)
97 socket2.on('loginConfirmed', () => {
98 socket1.emit('directMessage', user2, message)
99 socket3.on('directMessageEcho', (u, msg) => {
100 expect(u).equal(user2)
101 expect(msg).include.keys('textMessage', 'author', 'timestamp')
102 expect(msg.textMessage).equal(txt)
103 expect(msg.author).equal(user1)
104 expect(msg.timestamp).a('Number')
105 done()
106 })
107 })
108 })
109 })
110 })
111
112 it('should echo system messages to all user\'s sockets', function (done) {
113 let data = 'some data.'
114 chatService = startService()
115 socket1 = clientConnect(user1)
116 socket1.on('loginConfirmed', () => {
117 socket2 = clientConnect(user1)
118 socket2.on('loginConfirmed', () => {
119 socket1.emit('systemMessage', data)
120 socket2.on('systemMessage', d => {
121 expect(d).equal(data)
122 done()
123 })
124 })
125 })
126 })
127}