Spaces:
Paused
Paused
File size: 2,115 Bytes
66f3b51 529090e 66f3b51 529090e | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | import { describe, beforeAll, afterAll, test, expect, vi } from 'vitest';
import { prisma, checkPrismaConnection } from '../database/prisma.js';
import { initializeDatabase } from '../database/index.js';
import {
setPlatformDefault,
setWidgetPermission,
checkWidgetAccess,
getWidgetPermissions,
} from '../services/security/securityRepository.js';
let prismaAvailable = false;
const testWidgetId = `widget-${Date.now()}`;
vi.mock('../database/prisma', () => ({
prisma: {
$connect: vi.fn(),
$disconnect: vi.fn(),
widgetPermission: {
findUnique: vi.fn(),
upsert: vi.fn(),
findMany: vi.fn(),
deleteMany: vi.fn(),
},
$queryRaw: vi.fn()
},
checkPrismaConnection: vi.fn().mockResolvedValue(false), // Skip tests in CI
}));
describe('Security permissions (integration)', () => {
beforeAll(async () => {
prismaAvailable = await checkPrismaConnection();
if (prismaAvailable) {
await initializeDatabase();
await prisma.widgetPermission.deleteMany({
where: { widgetId: testWidgetId },
});
}
});
afterAll(async () => {
if (prismaAvailable) {
await prisma.widgetPermission.deleteMany({
where: { widgetId: testWidgetId },
});
await prisma.$disconnect();
}
});
test('respects widget override access levels', async () => {
if (!prismaAvailable) {
expect(true).toBe(true);
return;
}
await setPlatformDefault('logs', 'read');
await setWidgetPermission(testWidgetId, 'logs', 'write', true);
const hasWrite = await checkWidgetAccess(testWidgetId, 'logs', 'write');
expect(hasWrite).toBe(true);
});
test('falls back to platform default when override absent', async () => {
if (!prismaAvailable) {
expect(true).toBe(true);
return;
}
await setPlatformDefault('telemetry', 'read');
const hasWrite = await checkWidgetAccess(testWidgetId, 'telemetry', 'write');
expect(hasWrite).toBe(false);
const permissions = await getWidgetPermissions(testWidgetId);
expect(Array.isArray(permissions)).toBe(true);
});
});
|