Skip to content

Commit

Permalink
Add tests for new chanmodes
Browse files Browse the repository at this point in the history
  • Loading branch information
Timer committed Apr 16, 2015
1 parent 9d9817e commit 54a043d
Showing 1 changed file with 68 additions and 0 deletions.
68 changes: 68 additions & 0 deletions test/test-mode.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
var irc = require('../lib/irc');
var test = require('tape');

var testHelpers = require('./helpers');

test('various origins and types of chanmodes get handled correctly', function(t) {
var mock = testHelpers.MockIrcd();
var client = new irc.Client('localhost', 'testbot', { debug: true });

var count = 0;
client.on('+mode', function() {
//console.log(client.chans['#channel']);
t.deepEqual(client.chans['#channel'], expected[count++]);
});
client.on('-mode', function() {
//console.log(client.chans['#channel']);
t.deepEqual(client.chans['#channel'], expected[count++]);
});

var expected = [
{ key: '#channel', serverName: '#channel', users: {}, modeParams: { n: [] }, mode: 'n' },
{ key: '#channel', serverName: '#channel', users: {}, modeParams: { n: [], t: [] }, mode: 'nt' },
{ key: '#channel', serverName: '#channel', users: { testbot: '@' }, mode: '+ntb', modeParams: { b: ['*!*@AN.IP.1'], n: [], t: [] } },
{ key: '#channel', serverName: '#channel', users: { testbot: '@' }, mode: '+ntb', modeParams: { b: ['*!*@AN.IP.1', '*!*@AN.IP.2'], n: [], t: [] } },
{ key: '#channel', serverName: '#channel', users: { testbot: '@' }, mode: '+ntb', modeParams: { b: ['*!*@AN.IP.1', '*!*@AN.IP.2', '*!*@AN.IP.3'], n: [], t: [] } },
{ key: '#channel', serverName: '#channel', users: { testbot: '@' }, mode: '+ntb', modeParams: { b: ['*!*@AN.IP.1', '*!*@AN.IP.3'], n: [], t: [] } },
{ key: '#channel', serverName: '#channel', users: { testbot: '@' }, mode: '+ntbf', modeParams: { f: ['[10j]:15'], b: ['*!*@AN.IP.1', '*!*@AN.IP.3'], n: [], t: [] } },
{ key: '#channel', serverName: '#channel', users: { testbot: '@' }, mode: '+ntbf', modeParams: { f: ['[8j]:15'], b: ['*!*@AN.IP.1', '*!*@AN.IP.3'], n: [], t: [] } },
{ key: '#channel', serverName: '#channel', users: { testbot: '@' }, mode: '+ntb', modeParams: { b: ['*!*@AN.IP.1', '*!*@AN.IP.3'], n: [], t: [] } },
{ key: '#channel', serverName: '#channel', users: { testbot: '@' }, mode: '+ntbj', modeParams: { j: ['3:5'], b: ['*!*@AN.IP.1', '*!*@AN.IP.3'], n: [], t: [] } },
{ key: '#channel', serverName: '#channel', users: { testbot: '@' }, mode: '+ntbj', modeParams: { j: ['2:5'], b: ['*!*@AN.IP.1', '*!*@AN.IP.3'], n: [], t: [] } },
{ key: '#channel', serverName: '#channel', users: { testbot: '@' }, mode: '+ntb', modeParams: { b: ['*!*@AN.IP.1', '*!*@AN.IP.3'], n: [], t: [] } },
{ key: '#channel', serverName: '#channel', users: { testbot: '@' }, mode: '+ntbp', modeParams: { p: [], b: ['*!*@AN.IP.1', '*!*@AN.IP.3'], n: [], t: [] } },
{ key: '#channel', serverName: '#channel', users: { testbot: '@' }, mode: '+ntbps', modeParams: { s: [], p: [], b: ['*!*@AN.IP.1', '*!*@AN.IP.3'], n: [], t: [] } },
{ key: '#channel', serverName: '#channel', users: { testbot: '@' }, mode: '+ntbpsK', modeParams: { K: [], s: [], p: [], b: ['*!*@AN.IP.1', '*!*@AN.IP.3'], n: [], t: [] } },
{ key: '#channel', serverName: '#channel', users: { testbot: '@' }, mode: '+ntbsK', modeParams: { K: [], s: [], b: ['*!*@AN.IP.1', '*!*@AN.IP.3'], n: [], t: [] } },
{ key: '#channel', serverName: '#channel', users: { testbot: '@' }, mode: '+ntbK', modeParams: { K: [], b: ['*!*@AN.IP.1', '*!*@AN.IP.3'], n: [], t: [] } },
{ key: '#channel', serverName: '#channel', users: { testbot: '@' }, mode: '+ntbKF', modeParams: { F: [], K: [], b: ['*!*@AN.IP.1', '*!*@AN.IP.3'], n: [], t: [] } }
];

mock.server.on('connection', function() {
mock.send(':localhost 001 testbot :Welcome!\r\n');
mock.send(':localhost 005 testbot MODES=12 CHANTYPES=# PREFIX=(ohv)@%+ CHANMODES=beIqa,kfL,lj,psmntirRcOAQKVCuzNSMTGHFEB\r\n');
mock.send(':testbot MODE testbot :+ix\r\n');
mock.send(':testbot JOIN :#channel\r\n');
mock.send(':localhost MODE #channel +nt\r\n');
mock.send(':localhost 353 testbot = #channel :@testbot\r\n');
mock.send(':localhost 366 testbot #channel :End of /NAMES list.\r\n');
mock.send(':localhost 324 testbot #channel +nt\r\n');
mock.send(':localhost MODE #channel +b *!*@AN.IP.1\r\n');
mock.send(':localhost MODE #channel +bb *!*@AN.IP.2 *!*@AN.IP.3\r\n');
mock.send(':localhost MODE #channel -b *!*@AN.IP.2\r\n');
mock.send(':localhost MODE #channel +f [10j]:15\r\n');
mock.send(':localhost MODE #channel +f [8j]:15\r\n');
mock.send(':localhost MODE #channel -f+j [10j]:15 3:5\r\n');
mock.send(':localhost MODE #channel +j 2:5\r\n');
mock.send(':localhost MODE #channel -j\r\n');
mock.send(':localhost MODE #channel +ps\r\n');
mock.send(':localhost MODE #channel +K-p-s+F\r\n');

client.disconnect();
});

mock.on('end', function() {
mock.close();
t.end();
});
});

0 comments on commit 54a043d

Please sign in to comment.