dify/web/features/new-rag/__tests__/routes.spec.ts
Stephen Zhou 2d5161a647
feat(dataset): add document detail (#39361)
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-07-24 15:27:35 +00:00

66 lines
2.0 KiB
TypeScript

import {
newKnowledgeAddSourcePath,
normalizeWebsiteSourceUrl,
parseNewKnowledgeSourceDraft,
singleSearchParam,
} from '../routes'
describe('New RAG routes', () => {
it('keeps source details out of the add-source URL', () => {
expect(newKnowledgeAddSourcePath('space-1', 'websiteCrawl', 'opaque-draft-key')).toBe(
'/datasets/new/space-1/sources/new?type=websiteCrawl&draft=opaque-draft-key',
)
})
it('rejects repeated search parameters instead of selecting an ambiguous value', () => {
expect(singleSearchParam(['websiteCrawl', 'onlineDrive'])).toBeUndefined()
expect(singleSearchParam('websiteCrawl')).toBe('websiteCrawl')
})
it('rejects credentials embedded in website URLs', () => {
expect(normalizeWebsiteSourceUrl('https://user:secret@docs.dify.ai')).toBeUndefined()
expect(normalizeWebsiteSourceUrl('https://docs.dify.ai/docs#intro')?.toString()).toBe(
'https://docs.dify.ai/docs',
)
})
it('rejects malformed session drafts', () => {
expect(parseNewKnowledgeSourceDraft('{')).toBeUndefined()
expect(
parseNewKnowledgeSourceDraft(
JSON.stringify({
includeSubpages: true,
maxPages: 201,
provider: 'Firecrawl',
rootUrl: 'https://docs.dify.ai',
sourceName: 'Dify docs',
sourceType: 'websiteCrawl',
syncPolicy: 'provider',
}),
),
).toBeUndefined()
})
it('migrates a valid website draft saved before source discriminators were added', () => {
expect(
parseNewKnowledgeSourceDraft(
JSON.stringify({
includeSubpages: false,
maxPages: 25,
provider: 'Firecrawl',
rootUrl: 'https://docs.dify.ai',
sourceName: 'Dify docs',
}),
),
).toEqual({
includeSubpages: false,
maxPages: 25,
provider: 'Firecrawl',
rootUrl: 'https://docs.dify.ai',
sourceName: 'Dify docs',
sourceType: 'websiteCrawl',
syncPolicy: 'provider',
})
})
})