import { prisma } from '../services/prisma'; import { getOrganizationByPhoneNumberId } from '../services/organization'; /** * Tenant Isolation Test Suite * * Verifies that the multi-tenant routing logic correctly identifies organizations * based on the WhatsApp Phone Number ID. */ async function testTenantIsolation() { console.log("đŸ§Ē Starting Tenant Isolation Tests..."); // 1. Setup Mock Organizations const orgA = await prisma.organization.create({ data: { name: "Test Org A", mode: "EDTECH", phoneNumbers: { create: { id: "phone-id-a", displayPhone: "+221770000001" } } } }); const orgB = await prisma.organization.create({ data: { name: "Test Org B", mode: "EDTECH", phoneNumbers: { create: { id: "phone-id-b", displayPhone: "+221770000002" } } } }); try { // 2. Test Routing for Org A const detectedA = await getOrganizationByPhoneNumberId("phone-id-a"); if (detectedA === orgA.id) { console.log("✅ Org A routed correctly."); } else { console.log(`❌ Org A routing failed. Expected ${orgA.id}, got ${detectedA}`); } // 3. Test Routing for Org B const detectedB = await getOrganizationByPhoneNumberId("phone-id-b"); if (detectedB === orgB.id) { console.log("✅ Org B routed correctly."); } else { console.log(`❌ Org B routing failed. Expected ${orgB.id}, got ${detectedB}`); } // 4. Test Unknown Routing (should return null for unregistered phone IDs) const detectedUnknown = await getOrganizationByPhoneNumberId("unknown-id"); console.log(`â„šī¸ Unknown ID result: ${detectedUnknown} (null = correctly rejected)`); } finally { // Cleanup await prisma.organization.deleteMany({ where: { id: { in: [orgA.id, orgB.id] } } }); console.log("🧹 Cleanup complete."); } } // Simple execution if called directly if (require.main === module) { testTenantIsolation().catch(console.error); }