Skip to main content
Glama
change-sets.test.ts4.96 kB
/** * Change Sets Tests * * Tests for the change sets API endpoints. */ import { assertEquals, assertExists } from 'https://deno.land/std@0.220.1/assert/mod.ts'; import { cleanupTestResources, ConfigError, createTestClient, generateTestName, } from '../src/test-utils.ts'; import { ApiError } from '../src/client.ts'; Deno.test('Change Sets API - CRUD Operations', async () => { try { const { api, config } = await createTestClient(); const createdChangeSetIds: string[] = []; try { // Create a change set const createResponse = await api.changeSets.createChangeSet(config.workspaceId, { changeSetName: generateTestName('test_change_set'), }); assertEquals(createResponse.status, 200); assertExists(createResponse.data.changeSet); assertExists(createResponse.data.changeSet.id); const changeSetId = createResponse.data.changeSet.id; createdChangeSetIds.push(changeSetId); console.log(`Created change set with ID: ${changeSetId}`); // Get the change set const getResponse = await api.changeSets.getChangeSet(config.workspaceId, changeSetId); assertEquals(getResponse.status, 200); assertExists(getResponse.data.changeSet); assertEquals(getResponse.data.changeSet.id, changeSetId); // List change sets const listResponse = await api.changeSets.listChangeSets(config.workspaceId); assertEquals(listResponse.status, 200); assertExists(listResponse.data.changeSets); // Verify our change set is in the list const foundChangeSet = listResponse.data.changeSets.find((cs) => cs.id === changeSetId); assertExists(foundChangeSet); console.log(`Verified change set exists in list`); // Delete the change set const deleteResponse = await api.changeSets.deleteChangeSet(config.workspaceId, changeSetId); assertEquals(deleteResponse.status, 200); // Ensure the change set is abandoned const deletedChangeSetResponse = await api.changeSets.getChangeSet( config.workspaceId, changeSetId, ); assertEquals(deletedChangeSetResponse.data.changeSet.status, 'Abandoned'); } finally { // Clean up any change sets that weren't deleted by the test await cleanupTestResources(api, config.workspaceId, createdChangeSetIds); } } catch (error) { if (error instanceof ConfigError) { console.warn(`Skipping test due to configuration error: ${error.message}`); return; } throw error; } }); Deno.test('Change Sets API - Create Multiple and Purge', async () => { try { const { api, config } = await createTestClient(); const createdChangeSetIds: string[] = []; try { // Create multiple change sets for (let i = 0; i < 3; i++) { const createResponse = await api.changeSets.createChangeSet(config.workspaceId, { changeSetName: generateTestName(`purge_test_${i}`), }); assertEquals(createResponse.status, 200); assertExists(createResponse.data.changeSet); assertExists(createResponse.data.changeSet.id); createdChangeSetIds.push(createResponse.data.changeSet.id); } // Verify they were created const listResponse = await api.changeSets.listChangeSets(config.workspaceId); assertEquals(listResponse.status, 200); assertExists(listResponse.data.changeSets); let foundCount = 0; for (const id of createdChangeSetIds) { if (listResponse.data.changeSets.some((cs) => cs.id === id)) { foundCount++; } } assertEquals(foundCount, createdChangeSetIds.length); // Purge all open change sets // Note: This might affect other change sets in the workspace, so be careful in shared environments const purgeResponse = await api.changeSets.purgeOpenChangeSets(config.workspaceId); assertEquals(purgeResponse.status, 200); // Verify they're gone const listAfterPurge = await api.changeSets.listChangeSets(config.workspaceId); assertExists(listAfterPurge.data.changeSets); foundCount = 0; for (const id of createdChangeSetIds) { if (listAfterPurge.data.changeSets.some((cs) => cs.id === id)) { foundCount++; } } assertEquals(foundCount, 0, 'All test change sets should be purged'); } catch (error: unknown) { if (error instanceof Error) { console.error('Test failed:', error.message); } else { console.error('Test failed with unknown error'); } throw error; } finally { // Attempt to clean up any change sets that weren't purged await cleanupTestResources(api, config.workspaceId, createdChangeSetIds); } } catch (error: unknown) { if (error instanceof ConfigError) { console.warn(`Skipping test due to configuration error: ${error.message}`); return; } throw error; } });

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/systeminit/si'

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