UNPKG

eyearesee-client

Version:
110 lines (91 loc) 2.25 kB
'use strict' const net = require('net') const test = require('tap').test const Socket = require('../').Socket const Split = require('../lib/irc-split') let netServer let port test('setup', (t) => { netServer = net.createServer().on('error', t.fail) netServer.listen(0, () => { port = netServer.address().port t.end() }) }) test('Socket', (t) => { t.plan(21) const s1 = new Socket({ secure: true }) t.type(s1, Socket) t.equal(s1.opts.secure, true, 'secure') t.equal(s1.opts.port, 6697, 'port') t.equal(s1.connected, false, 'connected === false') const s2 = new Socket({ secure: false }) t.type(s2, Socket) t.equal(s2.opts.secure, false, 'secure') t.equal(s2.opts.port, 6667, 'port') t.equal(s2.connected, false, 'connected === false') const s = new Socket({ secure: false , port: port , password: 'abcd' , nickname: 'evan' , username: 'evan' , realname: 'Evan Lucas' , altNick: 'evao' , timeout: 250 , pingTimeout: 750 }) const m = ':wolfe.freenode.net NOTICE * :*** Looking up your hostname...\r\n' netServer.on('connection', (conn) => { const ar = [ 'PASS abcd' , 'NICK evan' , 'USER evan 0 * :Evan Lucas' , 'NICK evao' , 'NICK evap' ] let count = 0 s.on('NOTICE', (msg) => { t.equal(msg.command, 'NOTICE', 'command') if (count === 4) { conn.write('ERR_NICKNAMEINUSE * evao\r\n') } else { conn.write('ERR_NICKNAMEINUSE * evan\r\n') } }) s.once('timeout', (msg) => { t.pass('got timeout event') }) s.once('hostname', (h) => { t.pass('got hostname event') t.equal(h, 'chat.freenode.net', 'hostname') }) conn.pipe(Split()).on('data', (chunk) => { t.equal(chunk.toString(), ar[count++], `chunk ${count}`) if (count === 3) { conn.write(m) } else if (count === 4) { t.pass('got 4th') conn.write(m) } else if (count === 5) { t.pass('got 5th') } }) }) s.once('connect', () => { t.pass('got connect event') s.emit('RPL_MOTDSTART', { prefix: 'chat.freenode.net' }) }) s.connect() }) test('cleanup', (t) => { netServer.close(() => { t.end() }) })