numerous fixes due to tests

This commit is contained in:
zefie
2025-06-20 05:08:07 -04:00
parent bd43b5248b
commit 40db8dee96
3 changed files with 255 additions and 137 deletions

View File

@@ -0,0 +1,101 @@
'use strict';
const path = require('path');
var classPath = path.resolve(__dirname + path.sep + "includes" + path.sep + "classes" + path.sep) + path.sep;
require(classPath + "Prototypes.js");
const WTVIRC = require(classPath + "WTVIRC.js");
const { WTVShared, clientShowAlert } = require(classPath + "WTVShared.js");
const wtvshared = new WTVShared(); // creates minisrv_config
const net = require('net');
var minisrv_config = wtvshared.readMiniSrvConfig(true, false, true);
if (!minisrv_config.config.irc || !minisrv_config.config.irc.enabled) {
console.error('IRC is not enabled in the configuration.');
process.exit(1);
}
const HOST = 'localhost';
const PORT = minisrv_config.config.irc.port; // Example IRC port
const client = new net.Socket();
var lastLine = '';
client.connect(PORT, HOST, () => {
console.log(`Connected to ${HOST}:${PORT}`);
// You can send data here, e.g.:
// client.write('NICK testuser\r\n');
// client.write('USER testuser 0 * :Test User\r\n');
});
client.on('data', (data) => {
console.log('Received:', data.toString());
lastLine = data.toString();
});
client.on('close', () => {
console.log('Connection closed');
});
client.on('error', (err) => {
console.error('Connection error:', err);
});
testCase4();
function testCase1() {
// Try to auth as a server when we are not allowed to
client.write('SERVER testserver 0 * :Test Server\r\n');
client.write('PASS \b\b\b\b\b\b\b\b\b\b\r\n');
client.write('SERVER testserver 0 * :Test Server\r\n');
client.write(`SVINFO 6 6 0 :-1\r\n`);
client.write('PASS \b\b\b\b\b\b\b\b\b\b\r\n');
// we should be disconnected here
}
function testCase2() {
// Malformed user authentication
client.write('NICK invaliduser\r\n');
client.write('USER invaliduser\r\n');
client.write('NICK invaliduser2\r\n');
client.write('NICK invaliduser\r\n');
client.write('USER invaliduser\r\n');
client.write('USER invaliduser\r\n');
client.write('USER invaliduser\r\n');
client.write('USER invaliduser\r\n');
// we should be disconnected here
}
async function waitFor(expectedResponse) {
while (!lastLine.includes(expectedResponse)) {
await new Promise(resolve => setTimeout(resolve, 10)); // wait for 10ms
}
}
async function testCase3() {
// join, msg, quit
client.write('NICK testuser\r\n');
client.write('USER testuser 0 * :Test User\r\n');
await waitFor("005");
client.write('JOIN #testchannel\r\n');
await new Promise(resolve => setTimeout(resolve, 10)); // wait for 10ms
client.write('PRIVMSG #testchannel :Hello, world!\r\n');
await new Promise(resolve => setTimeout(resolve, 10)); // wait for 10ms
client.write('PART #testchannel\r\n');
await new Promise(resolve => setTimeout(resolve, 10)); // wait for 10ms
client.write('QUIT :Goodbye\r\n');
// we should be disconnected here
}
function testCase4() {
// Arbitrary commands
client.write('NICK testuser\r\n');
client.write('MODE testuser +i\r\n');
client.write('TOPIC #testchannel :New topic\r\n');
client.write('KICK #testchannel testuser :You have been kicked\r\n');
client.write('NOTICE testuser :This is a notice\r\n');
client.write('INVITE testuser #testchannel\r\n');
client.write('WHO #testchannel\r\n');
client.write('LIST\r\n');
}