Ctrl K
ComunidadGuías…

tests/caller-role-permissions.unit.test.ts

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
import { describe, expect, it, vi } from 'vitest'

const { executeMock } = vi.hoisted(() => ({
  executeMock: vi.fn(),
}))

vi.mock('../supabase/functions/_backend/utils/pg.ts', () => ({
  closeClient: vi.fn(),
  getPgClient: vi.fn(),
  getDrizzleClient: vi.fn(() => ({ execute: executeMock })),
}))

const { callerHoldsAllRolePermissions } = await import('../supabase/functions/_backend/utils/rbac.ts')

describe('callerHoldsAllRolePermissions', () => {
  it('returns false when any target role permission is missing', async () => {
    executeMock.mockResolvedValueOnce({ rows: [{ missing_permission: true }] })

    await expect(callerHoldsAllRolePermissions(
      { execute: executeMock } as any,
      '00000000-0000-4000-8000-000000000111',
      '00000000-0000-4000-8000-000000000222',
      {
        orgId: '00000000-0000-4000-8000-000000000333',
        publicAppId: 'com.example.app',
        channelId: 42,
      },
    )).resolves.toBe(false)
  })

  it('returns true when the caller holds every target role permission', async () => {
    executeMock.mockResolvedValueOnce({ rows: [{ missing_permission: false }] })

    await expect(callerHoldsAllRolePermissions(
      { execute: executeMock } as any,
      '00000000-0000-4000-8000-000000000111',
      '00000000-0000-4000-8000-000000000222',
      {
        orgId: '00000000-0000-4000-8000-000000000333',
      },
    )).resolves.toBe(true)
  })
})