Files
openwork/apps/app/tests/connect-capability-inventory-admin.test.ts
T

119 lines
3.8 KiB
TypeScript

import { expect, test } from "bun:test";
import type {
DenOrgMarketplace,
DenOrgPlugin,
DenPluginConfigObject,
} from "../src/app/lib/den";
import {
listAssignedConnectCapabilities,
type ConnectCapabilityClient,
} from "../src/react-app/domains/session/surface/connect-capability-inventory";
const marketplace = (id: string, name: string): DenOrgMarketplace => ({
id,
name,
description: null,
status: "active",
pluginCount: 1,
updatedAt: null,
});
const plugin = (id: string, name: string): DenOrgPlugin => ({
id,
name,
description: null,
status: "active",
memberCount: 1,
updatedAt: null,
componentCounts: {},
});
const configObject = (
id: string,
objectType: "mcp" | "skill",
title: string,
): DenPluginConfigObject => ({
id,
objectType,
title,
description: title,
currentFileName: null,
currentFileExtension: objectType === "mcp" ? ".json" : ".md",
currentRelativePath: objectType === "skill" ? `skills/${id}/SKILL.md` : `mcps/${id}.json`,
status: "active",
updatedAt: null,
latestVersion: {
id: `version-${id}`,
rawSourceText: objectType === "skill" ? `# ${title}` : null,
normalizedPayloadJson: objectType === "mcp"
? { mcpServers: { [id]: { url: `https://${id}.example.test/mcp` } } }
: null,
sourceRevisionRef: null,
createdAt: null,
},
});
test("admin desktop inventory intersects management data with assigned capability references", async () => {
const assignedMarketplace = marketplace("market-assigned", "Assigned marketplace");
const adminOnlyMarketplace = marketplace("market-admin", "Admin-only marketplace");
const mixedPlugin = plugin("plugin-mixed", "Mixed plugin");
const assignedMcpPlugin = plugin("plugin-mcp", "Assigned MCP plugin");
const adminOnlyPlugin = plugin("plugin-admin", "Admin-only plugin");
const client = {
async listAssignedMarketplaceCapabilities() {
return [
{
marketplaceId: assignedMarketplace.id,
pluginId: mixedPlugin.id,
configObjectId: "skill-assigned",
objectType: "skill" as const,
},
{
marketplaceId: assignedMarketplace.id,
pluginId: assignedMcpPlugin.id,
configObjectId: "mcp-assigned",
objectType: "mcp" as const,
},
];
},
async listOrgMarketplaces() {
return [assignedMarketplace, adminOnlyMarketplace];
},
async getOrgMarketplaceResolved(_organizationId: string, marketplaceId: string) {
return marketplaceId === assignedMarketplace.id
? { marketplace: assignedMarketplace, plugins: [mixedPlugin, assignedMcpPlugin] }
: { marketplace: adminOnlyMarketplace, plugins: [adminOnlyPlugin] };
},
async getOrgPluginResolved(_organizationId: string, selectedPlugin: DenOrgPlugin) {
const objects = selectedPlugin.id === mixedPlugin.id
? [
configObject("skill-assigned", "skill", "Assigned Skill"),
configObject("mcp-admin-only", "mcp", "Unassigned MCP"),
]
: selectedPlugin.id === assignedMcpPlugin.id
? [configObject("mcp-assigned", "mcp", "Assigned MCP")]
: [configObject("skill-admin-only", "skill", "Admin-only Skill")];
return {
plugin: selectedPlugin,
memberships: objects.map((object) => ({
id: `membership-${object.id}`,
pluginId: selectedPlugin.id,
configObjectId: object.id,
configObject: object,
})),
};
},
} satisfies ConnectCapabilityClient;
const inventory = await listAssignedConnectCapabilities({
client,
organizationId: "org-admin",
});
expect(inventory.skills.map((skill) => skill.name)).toEqual(["Assigned Skill"]);
expect(inventory.mcpServers.map((server) => server.name)).toEqual(["Assigned MCP"]);
expect(inventory.mcpServers.some((server) => server.name === "Unassigned MCP")).toBe(false);
});