phase6-roles-proof.ts 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. /**
  2. * Local Phase 6 proof: roles create / list / assign on Doltgres.
  3. * Usage:
  4. * BRIVEN_ENGINE_DATABASE_URL=postgres://... bun apps/api/scripts/phase6-roles-proof.ts
  5. */
  6. import { initAuthCoreSdk, isAuthCoreInitialized } from '../src/services/auth-core/engine.js';
  7. import {
  8. assignBrivenEngineRole,
  9. createBrivenEngineRole,
  10. getBrivenEngineUserRoles,
  11. listBrivenEngineRoles,
  12. userHasPermission,
  13. } from '../src/services/auth-core/roles.js';
  14. const roleName = `phase6_proof_${Date.now().toString(36)}`;
  15. const fakeUserId = `beu_proof_${Date.now().toString(36)}`;
  16. async function main() {
  17. await initAuthCoreSdk();
  18. if (!isAuthCoreInitialized()) {
  19. console.error('FAIL: engine not initialized');
  20. process.exit(1);
  21. }
  22. const created = await createBrivenEngineRole(roleName, ['read', 'write'], {
  23. tenantId: 'public',
  24. });
  25. console.log('create', created);
  26. if (!created.ok) process.exit(1);
  27. const listed = await listBrivenEngineRoles({ tenantId: 'public' });
  28. const found = listed.roles.some((r) => r.name === roleName);
  29. console.log('list has role', found, 'count', listed.roles.length);
  30. if (!found) process.exit(1);
  31. const assigned = await assignBrivenEngineRole(fakeUserId, roleName, {
  32. tenantId: 'public',
  33. });
  34. console.log('assign', assigned);
  35. if (!assigned.ok) process.exit(1);
  36. const ur = await getBrivenEngineUserRoles(fakeUserId, { tenantId: 'public' });
  37. console.log('user roles', ur);
  38. if (!ur.roles.includes(roleName)) process.exit(1);
  39. if (!ur.permissions.includes('read')) process.exit(1);
  40. const ok = await userHasPermission(fakeUserId, 'write', { tenantId: 'public' });
  41. console.log('has write', ok);
  42. if (!ok) process.exit(1);
  43. console.log('PHASE6_ROLES_PROOF_OK', { roleName, fakeUserId });
  44. }
  45. main().catch((e) => {
  46. console.error(e);
  47. process.exit(1);
  48. });