feat: Implement comments, notifications, and custom emojis with new API routes, UI components, and database migrations.
This commit is contained in:
106
debug/verify_comments.mjs
Normal file
106
debug/verify_comments.mjs
Normal file
@@ -0,0 +1,106 @@
|
||||
import db from "../src/inc/sql.mjs";
|
||||
import http from "http";
|
||||
import crypto from "crypto";
|
||||
|
||||
const HOST = "localhost";
|
||||
const PORT = 3000;
|
||||
import { readFile } from "fs/promises";
|
||||
const cfg = JSON.parse(await readFile("../config.json", "utf8"));
|
||||
const serverPort = cfg.websrv.port;
|
||||
|
||||
const runTest = async () => {
|
||||
// 1. Setup Data
|
||||
console.log("Setting up test data...");
|
||||
const user = await db`SELECT id FROM "user" LIMIT 1`;
|
||||
const item = await db`SELECT id FROM "items" LIMIT 1`;
|
||||
|
||||
if (!user.length || !item.length) {
|
||||
console.error("No user or item found.");
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const userId = user[0].id;
|
||||
const itemId = item[0].id;
|
||||
|
||||
// Create session
|
||||
const sessionKey = "testsession_" + Date.now();
|
||||
const sessionHash = crypto.createHash('md5').update(sessionKey).digest("hex");
|
||||
|
||||
await db`DELETE FROM user_sessions WHERE user_id = ${userId}`; // Clear old sessions for clean test
|
||||
await db`INSERT INTO user_sessions (user_id, session, browser, created_at, last_used, last_action)
|
||||
VALUES (${userId}, ${sessionHash}, 'test-bot', ${Math.floor(Date.now() / 1000)}, ${Math.floor(Date.now() / 1000)}, 'test')`;
|
||||
|
||||
console.log(`User: ${userId}, Item: ${itemId}, Session: ${sessionKey}`);
|
||||
|
||||
// Helper for requests
|
||||
const request = (method, path, body = null, cookie = null) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
const options = {
|
||||
hostname: HOST,
|
||||
port: serverPort,
|
||||
path: path,
|
||||
method: method,
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
'Cookie': cookie ? `session=${cookie}` : ''
|
||||
}
|
||||
};
|
||||
|
||||
const req = http.request(options, (res) => {
|
||||
let data = '';
|
||||
res.on('data', chunk => data += chunk);
|
||||
res.on('end', () => resolve({ statusCode: res.statusCode, body: data }));
|
||||
});
|
||||
|
||||
req.on('error', reject);
|
||||
if (body) req.write(JSON.stringify(body));
|
||||
req.end();
|
||||
});
|
||||
};
|
||||
|
||||
// 2. Test GET (Empty)
|
||||
console.log("Testing GET /api/comments/" + itemId);
|
||||
let res = await request('GET', `/api/comments/${itemId}`);
|
||||
console.log("GET Response:", res.body);
|
||||
let json = JSON.parse(res.body);
|
||||
if (!json.success) throw new Error("GET failed");
|
||||
|
||||
// 3. Test POST
|
||||
console.log("Testing POST /api/comments");
|
||||
res = await request('POST', '/api/comments', {
|
||||
item_id: itemId,
|
||||
content: "Hello World from Test Bot"
|
||||
}, sessionKey);
|
||||
console.log("POST Response:", res.body);
|
||||
json = JSON.parse(res.body);
|
||||
if (!json.success) throw new Error("POST failed");
|
||||
const commentId = json.comment.id;
|
||||
|
||||
// 4. Test GET (With comment)
|
||||
console.log("Testing GET /api/comments/" + itemId);
|
||||
res = await request('GET', `/api/comments/${itemId}`);
|
||||
json = JSON.parse(res.body);
|
||||
if (json.comments.length === 0) throw new Error("Comment not found");
|
||||
console.log("Found comments:", json.comments.length);
|
||||
|
||||
// 5. Test Subscribe
|
||||
console.log("Testing POST /api/subscribe/" + itemId);
|
||||
res = await request('POST', `/api/subscribe/${itemId}`, {}, sessionKey);
|
||||
console.log("Subscribe Response:", res.body);
|
||||
json = JSON.parse(res.body);
|
||||
if (!json.success) throw new Error("Subscribe failed");
|
||||
if (!json.subscribed) throw new Error("Expected subscribed=true");
|
||||
|
||||
console.log("Testing Unsubscribe...");
|
||||
res = await request('POST', `/api/subscribe/${itemId}`, {}, sessionKey);
|
||||
json = JSON.parse(res.body);
|
||||
if (json.subscribed) throw new Error("Expected subscribed=false");
|
||||
|
||||
console.log("ALL TESTS PASSED");
|
||||
process.exit(0);
|
||||
};
|
||||
|
||||
runTest().catch(e => {
|
||||
console.error(e);
|
||||
process.exit(1);
|
||||
});
|
||||
Reference in New Issue
Block a user