Files
windmill/frontend/src/lib/components/raw_apps/dataTableRefUtils.test.ts
T
centdixandClaude Opus 4.5 34b549cfe2 perf: optimize datatable app chat schemas (#8960)
* perf: optimize datatable app chat schemas

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* perf: optimize datatable catalog queries

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* refactor: narrow datatable chat optimization

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* fix: restrict datatable schema lookups

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* fix: block system datatable schema lookups

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* fix: handle datatable context edge cases

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* fix: handle datatable schema edge cases

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-04-29 13:58:56 +00:00

38 lines
1.7 KiB
TypeScript

import { describe, expect, it } from 'vitest'
import { buildDataTableWhitelist, isDatatableTableAllowed } from './dataTableRefUtils'
describe('datatable whitelist helpers', () => {
it('allows every datatable table when no refs are configured', () => {
const whitelist = buildDataTableWhitelist([])
expect(isDatatableTableAllowed(whitelist, 'main', 'public', 'users')).toBe(true)
expect(isDatatableTableAllowed(whitelist, 'analytics', 'events', 'clicks')).toBe(true)
})
it('treats datatable-level refs as all tables in that datatable', () => {
const whitelist = buildDataTableWhitelist([{ datatable: 'main' }])
expect(isDatatableTableAllowed(whitelist, 'main', 'public', 'users')).toBe(true)
expect(isDatatableTableAllowed(whitelist, 'main', 'analytics', 'events')).toBe(true)
expect(isDatatableTableAllowed(whitelist, 'other', 'public', 'users')).toBe(false)
})
it('allows only explicitly listed tables for table-level refs', () => {
const whitelist = buildDataTableWhitelist([
{ datatable: 'main', schema: 'public', table: 'users' },
{ datatable: 'main', schema: 'analytics', table: 'events' }
])
expect(isDatatableTableAllowed(whitelist, 'main', 'public', 'users')).toBe(true)
expect(isDatatableTableAllowed(whitelist, 'main', 'analytics', 'events')).toBe(true)
expect(isDatatableTableAllowed(whitelist, 'main', 'public', 'orders')).toBe(false)
})
it('does not treat an explicit empty schema as public', () => {
const whitelist = buildDataTableWhitelist([{ datatable: 'main', schema: '', table: 'users' }])
expect(isDatatableTableAllowed(whitelist, 'main', '', 'users')).toBe(true)
expect(isDatatableTableAllowed(whitelist, 'main', 'public', 'users')).toBe(false)
})
})