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. }