numerous fixes due to tests
This commit is contained in:
101
zefie_wtvp_minisrv/testirc_tests.js
Normal file
101
zefie_wtvp_minisrv/testirc_tests.js
Normal 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');
|
||||
}
|
||||
Reference in New Issue
Block a user