Files
task-manager/scripts/test_gamification_draft.ts
2025-12-12 08:35:48 +01:00

47 lines
1.7 KiB
TypeScript

import { storage } from "../server/storage";
import { insertUserSchema } from "../shared/schema";
async function runTest() {
console.log("Starting Gamification Logic Test...");
// 1. Setup Test User
const timestamp = Date.now();
const username = `gamer_${timestamp}`;
const password = "password123";
const email = `gamer_${timestamp}@example.com`;
console.log(`Creating user: ${username}`);
const user = await storage.createUser({
username,
email,
password, // Note: In real app this wants hashed, but we are bypassing auth middleware for direct storage tests?
// API tests need real auth.
// Let's rely on Direct Storage + Logic Verification since pure API test is complex with auth cookies in a simple script.
role: 'user',
isActive: true
});
// We need to simulate the API logic because the logic resides in the Route handler (routes.ts), not just storage.
// This is tricky without a full HTTP client.
// ALTERNATIVE: We can define a helper to mock Request/Response and call the route handler?
// Too complex.
// Let's use fetch against the running server.
const baseUrl = "http://localhost:5001";
// Login to get cookie
console.log("Logging in via API...");
const loginRes = await fetch(`${baseUrl}/api/login`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ username, password })
});
// Wait, storage.createUser doesn't hash password! API login will fail if I stored plain text?
// Yes. Routes.ts: setupAuth uses comparePassword(password, user.password).
// So I must hash the password if I insert via storage.
// OR I can register via API.
}