From 2d4c4d3de3463dd11a44eccbe8ec9c63431f2e78 Mon Sep 17 00:00:00 2001 From: Sheogorath Date: Tue, 16 Jul 2019 22:36:39 +0200 Subject: [PATCH 1/3] Revert "added command_nick test" This reverts commit 6e363bc651f87d8e9e29a5af0867a77bc64f115e. --- test/command_nick.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/test/command_nick.js b/test/command_nick.js index 5fb8733..19b0fd1 100644 --- a/test/command_nick.js +++ b/test/command_nick.js @@ -56,8 +56,6 @@ describe("NICK no NICK given", function () { done("Destroyed socket without answering") } - console.log(server.getUserObjectFromNickName("some_nick")) - server.emit("connection", mockedSock) mockedSock.emit('data', Buffer.from("NICK \r\n", "ascii")) }) From 8d7959355998406eaebd6b2e513486e685c1aeb6 Mon Sep 17 00:00:00 2001 From: Sheogorath Date: Tue, 16 Jul 2019 22:38:08 +0200 Subject: [PATCH 2/3] Revert "added realname variable + setter method" This reverts commit d70ba0584fb32f7c36e01a28eb2b3df571898f34. --- test/command_quit.js | 28 ---------------------------- 1 file changed, 28 deletions(-) delete mode 100644 test/command_quit.js diff --git a/test/command_quit.js b/test/command_quit.js deleted file mode 100644 index 21dbdb7..0000000 --- a/test/command_quit.js +++ /dev/null @@ -1,28 +0,0 @@ -const assert = require('assert'); -const EventEmitter = require('events'); -const IRCServer = require("../src/server.js"); - -describe("QUIT OK", function () { - it("should handle a QUIT command -> QUIT quitmessage", function (done) { - const server = IRCServer.create() - - for (var i = 0; i < 3; i++) { - - let mockedSock = new EventEmitter() - - mockedSock.write = function (data) { - } - - server.emit('connection', mockedSock) - mockedSock.emit('data', Buffer.from("NICK nick" + i + "\r\n", "ascii")) - } - - mockedSock.quit("gone to have lunch") - - - mockedSock.destroy = function () { - done("Destroyed socket without answering") - } - - }) -}) \ No newline at end of file From c249bda7e03ee5a50122a705b6b7a25e53b68256 Mon Sep 17 00:00:00 2001 From: Sheogorath Date: Tue, 16 Jul 2019 22:57:51 +0200 Subject: [PATCH 3/3] Feature: Add PRIVMSG command --- src/server.js | 8 +++++++- src/user.js | 4 ++++ test/command_privmsg.js | 28 ++++++++++++++++++++++++++++ 3 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 test/command_privmsg.js diff --git a/src/server.js b/src/server.js index fa6572d..afdf396 100644 --- a/src/server.js +++ b/src/server.js @@ -26,7 +26,7 @@ server.create = function create() { tokenized[lastParam] = tokenized[lastParam] + " " + splitted[i] } else if (splitted[i].charAt(0) == ":" && i > 0) { lastParam = i - tokenized[lastParam] = splitted[i] + tokenized[lastParam] = splitted[i].slice(1) } else { tokenized[i] = splitted[i] } @@ -62,6 +62,12 @@ server.create = function create() { let address = user.getAddress() socket.write(`001 ${user.nickname} :Welcome to the example IRC Project ${user.nickname}!~${user.username}@${address}`) break; + case "PRIVMSG": + let target = userlist[tokenized[1]] + let message = tokenized[2] + + target.sendMsg(user, message) + break; default: console.error(`Unknown command: ${command}`); } diff --git a/src/user.js b/src/user.js index a71219f..7fe1562 100644 --- a/src/user.js +++ b/src/user.js @@ -22,6 +22,10 @@ function User(socket) { this.getAddress = function() { return this.connection.address().address } + + this.sendMsg = function(from, message) { + this.connection.write(`:${from.nickname} PRIVMSG ${this.nickname} :${message}`) + } } module.exports = User diff --git a/test/command_privmsg.js b/test/command_privmsg.js new file mode 100644 index 0000000..093ab56 --- /dev/null +++ b/test/command_privmsg.js @@ -0,0 +1,28 @@ +const assert = require('assert'); +const EventEmitter = require('events'); +const IRCServer = require("../src/server.js"); + +describe("PRIVMSG OK", function () { + it("should handle a PRIVMSG command -> PRIVMSG some_nick :I'm a message", function (done) { + const server = IRCServer.create() + let mockedSock = new EventEmitter() + mockedSock.address = function() { + return { port: 12346, family: 'IPv4', address: '127.0.0.1' } + } + mockedSock.write = function (data) { + let answer = data.toString("ascii") + if (answer.indexOf("PRIVMSG") >= 0) { + assert.equal(answer, ":some_nick PRIVMSG some_nick :I'm a message") + done() + } + } + mockedSock.destroy = function () { + done("Destroyed socket without answering") + } + + server.emit("connection", mockedSock) + mockedSock.emit('data', Buffer.from("NICK some_nick\r\n", "ascii")) + mockedSock.emit('data', Buffer.from("USER guest tolmoon tolsun :Ronnie Reagan\r\n", "ascii")) + mockedSock.emit('data', Buffer.from("PRIVMSG some_nick :I'm a message\r\n", "ascii")) + }) +})