backend: implement basic functionality in app class. testing: organize and improve javascript test swuite

This commit is contained in:
Shivering Ocelot committed 2025-05-09 09:18:42 -05:00
1 parent 44f0b3589c
commit cbd8452ee5
5 files changed
+294 -482

No files matched your search

+95
View File
@@ -0,0 +1,95 @@
const WebSocket = require('ws');
const ws = new WebSocket('ws://localhost:5000/ws');
var nonceCounter = 1;
var nonceCallbacks = {};
// Setup
ws.on('open', function open() {
const packet = JSON.stringify({ username: "test-user", password: "123456" });
ws.send(packet);
runTest();
});
ws.on('message', function incoming(rawMessage) {
const parsed = JSON.parse(rawMessage);
const callback = nonceCallbacks[parsed.nonce];
if (callback) {
callback(parsed);
} else {
if (messageResolverQueue.length > 0) {
const resolver = messageResolverQueue.shift();
resolver(parsed);
} else {
messageQueue.push(parsed);
}
console.log(parsed);
}
});
async function send (action, message) {
const nonce = nonceCounter++;
let promise = new Promise((resolve, reject) => {
nonceCallbacks[nonce] = res => {
if (res.error) reject(Error(res.error));
else resolve(res);
};;
});
const packet = JSON.stringify({ nonce, action, ...message });
ws.send(packet);
return promise;
}
function waitMessage() {
return new Promise((resolve) => {
if (messageQueue.length > 0) {
resolve(messageQueue.shift());
} else {
messageResolverQueue.push(resolve);
}
});
}
// Testing
async function runTest() {
console.log("Initial Chats",
await send('get-chats')
);
console.log("Create Agent",
await send('create-agent', {body: {
name: 'First Agent',
description: 'First agent does nothing',
kind: 'simple',
data: {}
}})
);
console.log("Get Agents",
await send('get-agents')
);
await testChats();
process.exit();
}
async function testChats () {
let response = await send('get-chats')
let chat = response.chats[0];
let msgRes = await send('chat-send-message', {
chatId: chat.id,
content: "Hello World!",
});
console.log('message sent', msgRes);
let nextMessage = await waitMessage();
console.log('next incoming message', nextMessage);
}