| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- import { and, eq } from 'drizzle-orm';
- import { db } from '../src/db';
- import { permissions, rolePermissions, roles, users } from '../src/db/schema/auth';
- import { aclRules, resources } from '../src/db/schema/resource';
- async function runTest() {
- console.log('🛡️ Testing permission administration data flow...');
- const suffix = Date.now();
- const [permission] = await db.insert(permissions).values({
- action: `read-${suffix}`,
- resourceType: 'video',
- }).returning();
- const [viewerRole] = await db.select().from(roles).where(eq(roles.name, 'viewer')).limit(1);
- const [tester] = await db.select().from(users).where(eq(users.email, 'tester@ekb.com')).limit(1);
- if (!viewerRole || !tester) {
- console.error('❌ Required seed data missing. Run npx tsx src/db/seed.ts first.');
- process.exit(1);
- }
- await db.insert(rolePermissions).values({
- roleId: viewerRole.id,
- permissionId: permission.id,
- }).onConflictDoNothing();
- const [rolePermission] = await db.select().from(rolePermissions).where(and(
- eq(rolePermissions.roleId, viewerRole.id),
- eq(rolePermissions.permissionId, permission.id),
- )).limit(1);
- const [resource] = await db.insert(resources).values({
- name: `permission-admin-${suffix}.mp4`,
- path: `/permission-admin/${suffix}.mp4`,
- type: 'file',
- }).returning();
- const [aclRule] = await db.insert(aclRules).values({
- resourceId: resource.id,
- subjectType: 'user',
- subjectId: tester.id,
- permissionType: 'deny',
- action: 'read',
- }).returning();
- await db.delete(aclRules).where(eq(aclRules.id, aclRule.id));
- const [deletedAcl] = await db.select().from(aclRules).where(eq(aclRules.id, aclRule.id)).limit(1);
- if (!rolePermission || deletedAcl) {
- console.error('❌ Permission admin data flow failed.');
- process.exit(1);
- }
- console.log('✅ Permission administration data flow passed.');
- process.exit(0);
- }
- runTest().catch((error) => {
- console.error('❌ Test failed with error:', error);
- process.exit(1);
- });
|