Skip to main content
Glama
platform-list-services.e2e.test.ts11.6 kB
import { afterEach, describe, expect, setDefaultTimeout, test } from "bun:test"; import { createSettleMintClient } from "@settlemint/sdk-js"; import { loadEnv } from "@settlemint/sdk-utils/environment"; import { $ } from "bun"; import { parseDocument } from "yaml"; import { forceExitAllCommands, runCommand } from "./utils/run-command"; const COMMAND_TEST_SCOPE = __filename; setDefaultTimeout(60_000); afterEach(() => { forceExitAllCommands(COMMAND_TEST_SCOPE); }); describe("Test platform list services command", () => { test("List services", async () => { const { output } = await runCommand(COMMAND_TEST_SCOPE, ["platform", "list", "services"]).result; expect(output).toInclude("Blockchain networks"); expect(output).toInclude("Blockchain nodes"); expect(output).toInclude("Load balancers"); expect(output).toInclude("Insights"); expect(output).toInclude("Integration tools"); expect(output).toInclude("Middlewares"); expect(output).toInclude("Private keys"); expect(output).toInclude("Storage"); expect(output).not.toInclude("Url"); }); test("List services with specific type", async () => { const { output } = await runCommand(COMMAND_TEST_SCOPE, [ "platform", "list", "services", "--type", "middleware", "storage", ]).result; expect(output).toInclude("Middlewares"); expect(output).toInclude("Storage"); expect(output).not.toInclude("Blockchain networks"); expect(output).not.toInclude("Blockchain nodes"); expect(output).not.toInclude("Load balancers"); expect(output).not.toInclude("Insights"); expect(output).not.toInclude("Integration tools"); expect(output).not.toInclude("Private keys"); expect(output).not.toInclude("Url"); }); test("List services in wide format", async () => { const { output } = await runCommand(COMMAND_TEST_SCOPE, ["platform", "list", "services", "-o", "wide"]).result; expect(output).toInclude("Blockchain networks"); expect(output).toInclude("Blockchain nodes"); expect(output).toInclude("Load balancers"); expect(output).toInclude("Insights"); expect(output).toInclude("Integration tools"); expect(output).toInclude("Middlewares"); expect(output).toInclude("Private keys"); expect(output).toInclude("Storage"); expect(output).toInclude("Url"); }); test("List services in JSON format", async () => { const env = await loadEnv(false, false); const settlemint = createSettleMintClient({ accessToken: process.env.SETTLEMINT_ACCESS_TOKEN_E2E_TESTS!, instance: env.SETTLEMINT_INSTANCE!, }); const { output } = await runCommand(COMMAND_TEST_SCOPE, ["platform", "list", "services", "--output", "json"]) .result; const json = JSON.parse(output); const application = await settlemint.application.read(env.SETTLEMINT_APPLICATION!); expect(json.application).toEqual({ uniqueName: env.SETTLEMINT_APPLICATION!, name: application.name, url: `https://console-release.settlemint.com/workspaces/${application.workspace.id}/applications/${application.id}/dashboard`, }); expect(json.workspace).toEqual({ uniqueName: env.SETTLEMINT_WORKSPACE!, name: application.workspace.name, url: `https://console-release.settlemint.com/workspaces/${application.workspace.id}`, }); expect(json.services.length).toBeGreaterThanOrEqual(17); const blockchainNetwork = await settlemint.blockchainNetwork.read(env.SETTLEMINT_BLOCKCHAIN_NETWORK!); expect(json.services[0]).toMatchObject({ group: "Blockchain networks", name: "SDK Demo Network", uniqueName: env.SETTLEMINT_BLOCKCHAIN_NETWORK, status: "Completed", healthStatus: "NOT BFT", type: "BesuQBFTBlockchainNetwork", provider: "gke", region: "europe", url: `https://console-release.settlemint.com/workspaces/${application.workspace.id}/applications/${application.id}/networks/${blockchainNetwork.id}/details`, }); }); test("List services in JSON format and filter with jq", async () => { const { output } = await runCommand(COMMAND_TEST_SCOPE, ["platform", "list", "services", "-o", "json"]).result; const jqOutput = await $`echo "${output}" | jq '.services[0].group'`; expect(jqOutput.text()).toBe('"Blockchain networks"\n'); }); test("List services in YAML format", async () => { const { output } = await runCommand(COMMAND_TEST_SCOPE, ["platform", "list", "services", "--output", "yaml"]) .result; const yaml = parseDocument(output); expect(yaml).toBeObject(); const parsedYaml = yaml.toJSON(); const env = await loadEnv(false, false); const settlemint = createSettleMintClient({ accessToken: process.env.SETTLEMINT_ACCESS_TOKEN_E2E_TESTS!, instance: env.SETTLEMINT_INSTANCE!, }); const application = await settlemint.application.read(env.SETTLEMINT_APPLICATION!); expect(parsedYaml.application).toEqual({ uniqueName: env.SETTLEMINT_APPLICATION!, name: application.name, url: `https://console-release.settlemint.com/workspaces/${application.workspace.id}/applications/${application.id}/dashboard`, }); expect(parsedYaml.workspace).toEqual({ uniqueName: env.SETTLEMINT_WORKSPACE!, name: application.workspace.name, url: `https://console-release.settlemint.com/workspaces/${application.workspace.id}`, }); expect(parsedYaml.services.length).toBeGreaterThanOrEqual(17); const blockchainNetwork = await settlemint.blockchainNetwork.read(env.SETTLEMINT_BLOCKCHAIN_NETWORK!); expect(parsedYaml.services[0]).toMatchObject({ group: "Blockchain networks", name: "SDK Demo Network", uniqueName: env.SETTLEMINT_BLOCKCHAIN_NETWORK, status: "Completed", healthStatus: "NOT BFT", type: "BesuQBFTBlockchainNetwork", provider: "gke", region: "europe", url: `https://console-release.settlemint.com/workspaces/${application.workspace.id}/applications/${application.id}/networks/${blockchainNetwork.id}/details`, }); }); test("List workspaces", async () => { const env = await loadEnv(false, false); const { output } = await runCommand(COMMAND_TEST_SCOPE, ["platform", "list", "workspaces"]).result; expect(output).toContain("Workspaces"); expect(output).toContain("Name"); expect(output).toContain("Unique Name"); expect(env.SETTLEMINT_WORKSPACE).toBeDefined(); expect(output).toContain(env.SETTLEMINT_WORKSPACE ?? ""); expect(output).not.toContain("Url"); }); test("List workspaces in wide format", async () => { const env = await loadEnv(false, false); const { output } = await runCommand(COMMAND_TEST_SCOPE, ["platform", "list", "workspaces", "-o", "wide"]).result; expect(output).toContain("Workspaces"); expect(output).toContain("Name"); expect(output).toContain("Unique Name"); expect(env.SETTLEMINT_WORKSPACE).toBeDefined(); expect(output).toContain(env.SETTLEMINT_WORKSPACE ?? ""); expect(output).toContain("Url"); }); test("List workspaces in JSON format", async () => { const env = await loadEnv(false, false); const { output } = await runCommand(COMMAND_TEST_SCOPE, ["platform", "list", "workspaces", "-o", "json"]).result; const parsed = JSON.parse(output); expect(parsed).toBeArray(); const settlemint = createSettleMintClient({ accessToken: process.env.SETTLEMINT_ACCESS_TOKEN_E2E_TESTS!, instance: env.SETTLEMINT_INSTANCE!, }); const workspace = await settlemint.workspace.read(env.SETTLEMINT_WORKSPACE!); expect(parsed).toEqual( expect.arrayContaining([ { name: workspace.name, uniqueName: workspace.uniqueName, url: `https://console-release.settlemint.com/workspaces/${workspace.id}`, }, ]), ); }); test("List workspaces in YAML format", async () => { const env = await loadEnv(false, false); const { output } = await runCommand(COMMAND_TEST_SCOPE, ["platform", "list", "workspaces", "-o", "yaml"]).result; const yaml = parseDocument(output); expect(yaml).toBeObject(); const parsed = yaml.toJSON(); expect(parsed).toBeArray(); const settlemint = createSettleMintClient({ accessToken: process.env.SETTLEMINT_ACCESS_TOKEN_E2E_TESTS!, instance: env.SETTLEMINT_INSTANCE!, }); const workspace = await settlemint.workspace.read(env.SETTLEMINT_WORKSPACE!); expect(parsed).toEqual( expect.arrayContaining([ { name: workspace.name, uniqueName: workspace.uniqueName, url: `https://console-release.settlemint.com/workspaces/${workspace.id}`, }, ]), ); }); test("List applications", async () => { const env = await loadEnv(false, false); const { output } = await runCommand(COMMAND_TEST_SCOPE, ["platform", "list", "applications"]).result; expect(output).toContain("Applications"); expect(output).toContain("Name"); expect(output).toContain("Unique Name"); expect(env.SETTLEMINT_APPLICATION).toBeDefined(); expect(output).toContain(env.SETTLEMINT_APPLICATION ?? ""); expect(output).not.toContain("Url"); }); test("List applications in wide format", async () => { const env = await loadEnv(false, false); const { output } = await runCommand(COMMAND_TEST_SCOPE, ["platform", "list", "applications", "-o", "wide"]).result; expect(output).toContain("Applications"); expect(output).toContain("Name"); expect(output).toContain("Unique Name"); expect(env.SETTLEMINT_APPLICATION).toBeDefined(); expect(output).toContain(env.SETTLEMINT_APPLICATION ?? ""); expect(output).toContain("Url"); }); test("List applications in JSON format", async () => { const env = await loadEnv(false, false); const { output } = await runCommand(COMMAND_TEST_SCOPE, ["platform", "list", "applications", "-o", "json"]).result; const parsed = JSON.parse(output); expect(parsed).toBeArray(); const settlemint = createSettleMintClient({ accessToken: process.env.SETTLEMINT_ACCESS_TOKEN_E2E_TESTS!, instance: env.SETTLEMINT_INSTANCE!, }); const application = await settlemint.application.read(env.SETTLEMINT_APPLICATION!); expect(parsed).toEqual( expect.arrayContaining([ { name: application.name, uniqueName: application.uniqueName, url: `https://console-release.settlemint.com/workspaces/${application.workspace.id}/applications/${application.id}/dashboard`, }, ]), ); }); test("List applications in YAML format", async () => { const env = await loadEnv(false, false); const { output } = await runCommand(COMMAND_TEST_SCOPE, ["platform", "list", "applications", "-o", "yaml"]).result; const yaml = parseDocument(output); expect(yaml).toBeObject(); const parsed = yaml.toJSON(); expect(parsed).toBeArray(); const settlemint = createSettleMintClient({ accessToken: process.env.SETTLEMINT_ACCESS_TOKEN_E2E_TESTS!, instance: env.SETTLEMINT_INSTANCE!, }); const application = await settlemint.application.read(env.SETTLEMINT_APPLICATION!); expect(parsed).toEqual( expect.arrayContaining([ { name: application.name, uniqueName: application.uniqueName, url: `https://console-release.settlemint.com/workspaces/${application.workspace.id}/applications/${application.id}/dashboard`, }, ]), ); }); });

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/settlemint/sdk'

If you have feedback or need assistance with the MCP directory API, please join our Discord server