Reapply "feat(admin): implement extensions disabled" (#16082) (#16109)

This commit is contained in:
Shreya Keshive
2026-01-08 12:59:30 -05:00
committed by GitHub
parent cf021ccae4
commit 97ad3d97cb
6 changed files with 119 additions and 8 deletions
+73
View File
@@ -632,6 +632,79 @@ describe('extension tests', () => {
expect(extension).toBeUndefined();
});
it('should not load any extensions if admin.extensions.enabled is false', async () => {
createExtension({
extensionsDir: userExtensionsDir,
name: 'test-extension',
version: '1.0.0',
});
const loadedSettings = loadSettings(tempWorkspaceDir).merged;
(loadedSettings.admin ??= {}).extensions ??= {};
loadedSettings.admin.extensions.enabled = false;
extensionManager = new ExtensionManager({
workspaceDir: tempWorkspaceDir,
requestConsent: mockRequestConsent,
requestSetting: mockPromptForSettings,
settings: loadedSettings,
});
const extensions = await extensionManager.loadExtensions();
expect(extensions).toEqual([]);
});
it('should not load mcpServers if admin.mcp.enabled is false', async () => {
createExtension({
extensionsDir: userExtensionsDir,
name: 'test-extension',
version: '1.0.0',
mcpServers: {
'test-server': { command: 'echo', args: ['hello'] },
},
});
const loadedSettings = loadSettings(tempWorkspaceDir).merged;
(loadedSettings.admin ??= {}).mcp ??= {};
loadedSettings.admin.mcp.enabled = false;
extensionManager = new ExtensionManager({
workspaceDir: tempWorkspaceDir,
requestConsent: mockRequestConsent,
requestSetting: mockPromptForSettings,
settings: loadedSettings,
});
const extensions = await extensionManager.loadExtensions();
expect(extensions).toHaveLength(1);
expect(extensions[0].mcpServers).toBeUndefined();
});
it('should load mcpServers if admin.mcp.enabled is true', async () => {
createExtension({
extensionsDir: userExtensionsDir,
name: 'test-extension',
version: '1.0.0',
mcpServers: {
'test-server': { command: 'echo', args: ['hello'] },
},
});
const loadedSettings = loadSettings(tempWorkspaceDir).merged;
(loadedSettings.admin ??= {}).mcp ??= {};
loadedSettings.admin.mcp.enabled = true;
extensionManager = new ExtensionManager({
workspaceDir: tempWorkspaceDir,
requestConsent: mockRequestConsent,
requestSetting: mockPromptForSettings,
settings: loadedSettings,
});
const extensions = await extensionManager.loadExtensions();
expect(extensions).toHaveLength(1);
expect(extensions[0].mcpServers).toEqual({
'test-server': { command: 'echo', args: ['hello'] },
});
});
describe('id generation', () => {
it.each([
{