import assert from 'node:assert/strict'; import fs from 'node:fs'; import path from 'node:path'; import test from 'node:test'; import { fileURLToPath } from 'node:url'; const currentDirectory = path.dirname(fileURLToPath(import.meta.url)); const webRoot = path.resolve(currentDirectory, '../..'); function readSource(relativePath) { return fs.readFileSync(path.join(webRoot, relativePath), 'utf8'); } const homeSidebarSource = readSource( 'src/app/home/components/home-sidebar/HomeSidebar.tsx', ); const botFormSource = readSource( 'src/app/home/bots/components/bot-form/BotForm.tsx', ); const kbFormSource = readSource( 'src/app/home/knowledge/components/kb-form/KBForm.tsx', ); const settingsDialogSource = readSource( 'src/app/home/components/settings-dialog/SettingsDialog.tsx', ); const pluginPageSource = readSource('src/app/home/plugin-pages/page.tsx'); const authenticatedPluginResourceSource = readSource( 'src/hooks/useAuthenticatedPluginResource.ts', ); test('hides the entire workspace switcher slot for a singleton local workspace', () => { assert.match(homeSidebarSource, /useWorkspaceBootstrap/); assert.match( homeSidebarSource, /const showWorkspaceSwitcher\s*=\s*workspaces\.length\s*>\s*1\s*\|\|\s*currentWorkspace\?\.workspace\.source\s*===\s*'cloud_projection'/, ); assert.match( homeSidebarSource, /\{showWorkspaceSwitcher\s*&&\s*\(\s*
/, ); assert.match(kbFormSource, / { assert.match( homeSidebarSource, /canViewStorageAnalysis\s*&&\s*\(\s* { assert.match(pluginPageSource, /useAuthenticatedPluginAsset/); assert.match( pluginPageSource, /useAuthenticatedPluginAsset\(\s*author,\s*pluginName,\s*pagePath,?\s*\)/, ); assert.match(pluginPageSource, /src=\{assetUrl\}/); assert.doesNotMatch(pluginPageSource, /getPluginAssetURL\(/); assert.match(pluginPageSource, /plugins\.loadFailed/); assert.match(pluginPageSource, /loadedAssetUrl !== assetUrl/); }); test('revokes and reloads authenticated plugin resources when the Workspace changes', () => { assert.match(authenticatedPluginResourceSource, /useCurrentWorkspace/); assert.match( authenticatedPluginResourceSource, /const workspaceUuid = currentWorkspace\?\.workspace\.uuid;/, ); assert.match( authenticatedPluginResourceSource, /\[author, name, filepath, resourceKey\]/, ); assert.match( authenticatedPluginResourceSource, /resource\.key === resourceKey \? resource\.url : ''/, ); });