backend: implement basic functionality in app class. testing: organize and improve javascript test swuite
This commit is contained in:
1 parent
44f0b3589c
commit
cbd8452ee5
5 files changed
+294
-482
No files matched your search
@@ -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);
|
||||
}
|
||||
Reference in new issue
Block a user