Skip to content

Commit

Permalink
Merge pull request #294 from apeiron/tests-for-286
Browse files Browse the repository at this point in the history
Write a test for setting the hostmask when nick is in use
  • Loading branch information
Chris Nehren committed Jan 12, 2015
2 parents 9360f5e + 7a04c41 commit 9a73532
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 1 deletion.
3 changes: 2 additions & 1 deletion lib/irc.js
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,8 @@ function Client(server, nick, opt) {
// include it in messages and will truncate what we send if
// the string is too long. Therefore, we need to be considerate
// neighbors and truncate our messages accordingly.
self.hostMask = message.args[message.args.length - 1];
var welcomeStringWords = message.args[1].split(/\s+/);
self.hostMask = welcomeStringWords[welcomeStringWords.length - 1];
self._updateMaxLineLength();
self.emit('registered', message);
break;
Expand Down
56 changes: 56 additions & 0 deletions test/test-433-before-001.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
var irc = require('../lib/irc');
var test = require('tape');

var MockIrcd = require('./mockircd');

test('connect and sets hostmask when nick in use', function(t) {
var client, mock, expected;

mock = MockIrcd();
client = new irc.Client('localhost', 'testbot', {debug: true});

expected = {
sent: [
['NICK testbot', 'Client sent NICK message'],
['USER nodebot 8 * :nodeJS IRC client', 'Client sent USER message'],
['NICK testbot1', 'Client sent proper response to 433 nickname in use message'],
['QUIT :node-irc says goodbye', 'Client sent QUIT message']
],

received: [
[':localhost 433 * testbot :Nickname is already in use.\r\n', 'Received nick in use error'],
[':localhost 001 testbot1 :Welcome to the Internet Relay Chat Network testbot\r\n', 'Received welcome message']
],
clientInfo: [
['hostmask is as expected after 433'],
['nick is as expected after 433'],
['maxLineLength is as expected after 433']
]
};

t.plan(expected.sent.length + expected.received.length + expected.clientInfo.length);

mock.server.on('connection', function() {
mock.send(':localhost 433 * testbot :Nickname is already in use.\r\n')
mock.send(':localhost 001 testbot1 :Welcome to the Internet Relay Chat Network testbot\r\n');
});

client.on('registered', function() {
t.equal(mock.outgoing[0], expected.received[0][0], expected.received[0][1]);
t.equal(mock.outgoing[1], expected.received[1][0], expected.received[1][1]);
client.disconnect(function() {
t.equal(client.hostMask, 'testbot', 'hostmask is as expected after 433');
t.equal(client.nick, 'testbot1', 'nick is as expected after 433');
t.equal(client.maxLineLength, 482, 'maxLineLength is as expected after 433');
});
});

mock.on('end', function() {
var msgs = mock.getIncomingMsgs();

for (var i = 0; i < msgs.length; i++) {
t.equal(msgs[i], expected.sent[i][0], expected.sent[i][1]);
}
mock.close();
});
});

0 comments on commit 9a73532

Please sign in to comment.