@qase/mcp-server 1.1.8 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +25 -0
- package/README.md +75 -542
- package/build/auth/client-context.d.ts +12 -0
- package/build/auth/client-context.d.ts.map +1 -0
- package/build/auth/client-context.js +12 -0
- package/build/auth/client-context.js.map +1 -0
- package/build/auth/jwks-verifier.d.ts +15 -0
- package/build/auth/jwks-verifier.d.ts.map +1 -0
- package/build/auth/jwks-verifier.js +31 -0
- package/build/auth/jwks-verifier.js.map +1 -0
- package/build/auth/mcp-guard.d.ts +15 -0
- package/build/auth/mcp-guard.d.ts.map +1 -0
- package/build/auth/mcp-guard.js +44 -0
- package/build/auth/mcp-guard.js.map +1 -0
- package/build/auth/oauth-config.d.ts +40 -0
- package/build/auth/oauth-config.d.ts.map +1 -0
- package/build/auth/oauth-config.js +34 -0
- package/build/auth/oauth-config.js.map +1 -0
- package/build/auth/proxy-provider.d.ts +31 -0
- package/build/auth/proxy-provider.d.ts.map +1 -0
- package/build/auth/proxy-provider.js +87 -0
- package/build/auth/proxy-provider.js.map +1 -0
- package/build/auth/token-type.d.ts +7 -0
- package/build/auth/token-type.d.ts.map +1 -0
- package/build/auth/token-type.js +10 -0
- package/build/auth/token-type.js.map +1 -0
- package/build/cache/circuit-breaker.d.ts +33 -0
- package/build/cache/circuit-breaker.d.ts.map +1 -0
- package/build/cache/circuit-breaker.js +68 -0
- package/build/cache/circuit-breaker.js.map +1 -0
- package/build/cache/index.d.ts +24 -0
- package/build/cache/index.d.ts.map +1 -0
- package/build/cache/index.js +86 -0
- package/build/cache/index.js.map +1 -0
- package/build/cache/keys.d.ts +25 -0
- package/build/cache/keys.d.ts.map +1 -0
- package/build/cache/keys.js +36 -0
- package/build/cache/keys.js.map +1 -0
- package/build/cache/layered.d.ts +31 -0
- package/build/cache/layered.d.ts.map +1 -0
- package/build/cache/layered.js +88 -0
- package/build/cache/layered.js.map +1 -0
- package/build/cache/memory.d.ts +32 -0
- package/build/cache/memory.d.ts.map +1 -0
- package/build/cache/memory.js +108 -0
- package/build/cache/memory.js.map +1 -0
- package/build/cache/metrics.d.ts +31 -0
- package/build/cache/metrics.d.ts.map +1 -0
- package/build/cache/metrics.js +95 -0
- package/build/cache/metrics.js.map +1 -0
- package/build/cache/prom-format.d.ts +7 -0
- package/build/cache/prom-format.d.ts.map +1 -0
- package/build/cache/prom-format.js +16 -0
- package/build/cache/prom-format.js.map +1 -0
- package/build/cache/redis-bus.d.ts +29 -0
- package/build/cache/redis-bus.d.ts.map +1 -0
- package/build/cache/redis-bus.js +50 -0
- package/build/cache/redis-bus.js.map +1 -0
- package/build/cache/redis.d.ts +32 -0
- package/build/cache/redis.d.ts.map +1 -0
- package/build/cache/redis.js +89 -0
- package/build/cache/redis.js.map +1 -0
- package/build/cache/types.d.ts +38 -0
- package/build/cache/types.d.ts.map +1 -0
- package/build/cache/types.js +2 -0
- package/build/cache/types.js.map +1 -0
- package/build/client/index.d.ts +10 -3
- package/build/client/index.d.ts.map +1 -1
- package/build/client/index.js +75 -50
- package/build/client/index.js.map +1 -1
- package/build/http/agent.d.ts +16 -0
- package/build/http/agent.d.ts.map +1 -0
- package/build/http/agent.js +16 -0
- package/build/http/agent.js.map +1 -0
- package/build/http/dedupe.d.ts +14 -0
- package/build/http/dedupe.d.ts.map +1 -0
- package/build/http/dedupe.js +69 -0
- package/build/http/dedupe.js.map +1 -0
- package/build/http/index.d.ts +6 -0
- package/build/http/index.d.ts.map +1 -0
- package/build/http/index.js +4 -0
- package/build/http/index.js.map +1 -0
- package/build/http/retry.d.ts +18 -0
- package/build/http/retry.d.ts.map +1 -0
- package/build/http/retry.js +52 -0
- package/build/http/retry.js.map +1 -0
- package/build/index.d.ts +1 -18
- package/build/index.d.ts.map +1 -1
- package/build/index.js +95 -63
- package/build/index.js.map +1 -1
- package/build/operations-v2/composites/ci-report.d.ts +2 -0
- package/build/operations-v2/composites/ci-report.d.ts.map +1 -0
- package/build/operations-v2/composites/ci-report.js +99 -0
- package/build/operations-v2/composites/ci-report.js.map +1 -0
- package/build/operations-v2/composites/regression-run.d.ts +2 -0
- package/build/operations-v2/composites/regression-run.d.ts.map +1 -0
- package/build/operations-v2/composites/regression-run.js +81 -0
- package/build/operations-v2/composites/regression-run.js.map +1 -0
- package/build/operations-v2/composites/triage-defect.d.ts +2 -0
- package/build/operations-v2/composites/triage-defect.d.ts.map +1 -0
- package/build/operations-v2/composites/triage-defect.js +67 -0
- package/build/operations-v2/composites/triage-defect.js.map +1 -0
- package/build/operations-v2/escape/api.d.ts +2 -0
- package/build/operations-v2/escape/api.d.ts.map +1 -0
- package/build/operations-v2/escape/api.js +34 -0
- package/build/operations-v2/escape/api.js.map +1 -0
- package/build/operations-v2/index.d.ts +19 -0
- package/build/operations-v2/index.d.ts.map +1 -0
- package/build/operations-v2/index.js +25 -0
- package/build/operations-v2/index.js.map +1 -0
- package/build/operations-v2/meta/discover.d.ts +9 -0
- package/build/operations-v2/meta/discover.d.ts.map +1 -0
- package/build/operations-v2/meta/discover.js +76 -0
- package/build/operations-v2/meta/discover.js.map +1 -0
- package/build/{operations/search.d.ts → operations-v2/qql/index.d.ts} +1 -1
- package/build/operations-v2/qql/index.d.ts.map +1 -0
- package/build/{operations/search.js → operations-v2/qql/index.js} +34 -9
- package/build/operations-v2/qql/index.js.map +1 -0
- package/build/operations-v2/read/get.d.ts +2 -0
- package/build/operations-v2/read/get.d.ts.map +1 -0
- package/build/operations-v2/read/get.js +91 -0
- package/build/operations-v2/read/get.js.map +1 -0
- package/build/operations-v2/read/project-context.d.ts +2 -0
- package/build/operations-v2/read/project-context.d.ts.map +1 -0
- package/build/operations-v2/read/project-context.js +102 -0
- package/build/operations-v2/read/project-context.js.map +1 -0
- package/build/operations-v2/write/attachments.d.ts +2 -0
- package/build/operations-v2/write/attachments.d.ts.map +1 -0
- package/build/operations-v2/write/attachments.js +58 -0
- package/build/operations-v2/write/attachments.js.map +1 -0
- package/build/operations-v2/write/cases.d.ts +2 -0
- package/build/operations-v2/write/cases.d.ts.map +1 -0
- package/build/operations-v2/write/cases.js +121 -0
- package/build/operations-v2/write/cases.js.map +1 -0
- package/build/operations-v2/write/defects.d.ts +2 -0
- package/build/operations-v2/write/defects.d.ts.map +1 -0
- package/build/operations-v2/write/defects.js +81 -0
- package/build/operations-v2/write/defects.js.map +1 -0
- package/build/operations-v2/write/environments.d.ts +2 -0
- package/build/operations-v2/write/environments.d.ts.map +1 -0
- package/build/operations-v2/write/environments.js +56 -0
- package/build/operations-v2/write/environments.js.map +1 -0
- package/build/operations-v2/write/milestones.d.ts +2 -0
- package/build/operations-v2/write/milestones.d.ts.map +1 -0
- package/build/operations-v2/write/milestones.js +56 -0
- package/build/operations-v2/write/milestones.js.map +1 -0
- package/build/operations-v2/write/plans.d.ts +2 -0
- package/build/operations-v2/write/plans.d.ts.map +1 -0
- package/build/operations-v2/write/plans.js +55 -0
- package/build/operations-v2/write/plans.js.map +1 -0
- package/build/operations-v2/write/results.d.ts +2 -0
- package/build/operations-v2/write/results.d.ts.map +1 -0
- package/build/operations-v2/write/results.js +72 -0
- package/build/operations-v2/write/results.js.map +1 -0
- package/build/operations-v2/write/runs.d.ts +2 -0
- package/build/operations-v2/write/runs.d.ts.map +1 -0
- package/build/operations-v2/write/runs.js +84 -0
- package/build/operations-v2/write/runs.js.map +1 -0
- package/build/operations-v2/write/shared-steps.d.ts +2 -0
- package/build/operations-v2/write/shared-steps.d.ts.map +1 -0
- package/build/operations-v2/write/shared-steps.js +60 -0
- package/build/operations-v2/write/shared-steps.js.map +1 -0
- package/build/operations-v2/write/suites.d.ts +2 -0
- package/build/operations-v2/write/suites.d.ts.map +1 -0
- package/build/operations-v2/write/suites.js +63 -0
- package/build/operations-v2/write/suites.js.map +1 -0
- package/build/prompts/index.d.ts +31 -0
- package/build/prompts/index.d.ts.map +1 -0
- package/build/prompts/index.js +229 -0
- package/build/prompts/index.js.map +1 -0
- package/build/transports/sse.d.ts.map +1 -1
- package/build/transports/sse.js +6 -0
- package/build/transports/sse.js.map +1 -1
- package/build/transports/streamableHttp.d.ts +6 -1
- package/build/transports/streamableHttp.d.ts.map +1 -1
- package/build/transports/streamableHttp.js +128 -16
- package/build/transports/streamableHttp.js.map +1 -1
- package/build/utils/auth-context.d.ts +8 -0
- package/build/utils/auth-context.d.ts.map +1 -1
- package/build/utils/auth-context.js +18 -0
- package/build/utils/auth-context.js.map +1 -1
- package/build/utils/case-enums.d.ts +5 -3
- package/build/utils/case-enums.d.ts.map +1 -1
- package/build/utils/case-enums.js +77 -59
- package/build/utils/case-enums.js.map +1 -1
- package/build/utils/output-schemas.d.ts +16 -0
- package/build/utils/output-schemas.d.ts.map +1 -0
- package/build/utils/output-schemas.js +82 -0
- package/build/utils/output-schemas.js.map +1 -0
- package/build/utils/registry.d.ts +42 -9
- package/build/utils/registry.d.ts.map +1 -1
- package/build/utils/registry.js +64 -11
- package/build/utils/registry.js.map +1 -1
- package/build/utils/response-shape.d.ts +23 -0
- package/build/utils/response-shape.d.ts.map +1 -0
- package/build/utils/response-shape.js +73 -0
- package/build/utils/response-shape.js.map +1 -0
- package/build/utils/rich-response.d.ts +58 -0
- package/build/utils/rich-response.d.ts.map +1 -0
- package/build/utils/rich-response.js +93 -0
- package/build/utils/rich-response.js.map +1 -0
- package/build/utils/server-context.d.ts +65 -0
- package/build/utils/server-context.d.ts.map +1 -0
- package/build/utils/server-context.js +67 -0
- package/build/utils/server-context.js.map +1 -0
- package/build/version.d.ts +1 -1
- package/build/version.js +1 -1
- package/docs/connect.md +81 -0
- package/docs/migration.md +351 -0
- package/docs/self-run.md +270 -0
- package/docs/tools.md +109 -0
- package/docs/troubleshooting.md +144 -0
- package/package.json +11 -2
- package/server.json +8 -2
- package/build/operations/attachments.d.ts +0 -8
- package/build/operations/attachments.d.ts.map +0 -1
- package/build/operations/attachments.js +0 -146
- package/build/operations/attachments.js.map +0 -1
- package/build/operations/authors.d.ts +0 -8
- package/build/operations/authors.d.ts.map +0 -1
- package/build/operations/authors.js +0 -70
- package/build/operations/authors.js.map +0 -1
- package/build/operations/cases.d.ts +0 -8
- package/build/operations/cases.d.ts.map +0 -1
- package/build/operations/cases.js +0 -370
- package/build/operations/cases.js.map +0 -1
- package/build/operations/configurations.d.ts +0 -10
- package/build/operations/configurations.d.ts.map +0 -1
- package/build/operations/configurations.js +0 -125
- package/build/operations/configurations.js.map +0 -1
- package/build/operations/custom-fields.d.ts +0 -8
- package/build/operations/custom-fields.d.ts.map +0 -1
- package/build/operations/custom-fields.js +0 -172
- package/build/operations/custom-fields.js.map +0 -1
- package/build/operations/defects.d.ts +0 -8
- package/build/operations/defects.d.ts.map +0 -1
- package/build/operations/defects.js +0 -256
- package/build/operations/defects.js.map +0 -1
- package/build/operations/environments.d.ts +0 -8
- package/build/operations/environments.d.ts.map +0 -1
- package/build/operations/environments.js +0 -154
- package/build/operations/environments.js.map +0 -1
- package/build/operations/milestones.d.ts +0 -8
- package/build/operations/milestones.d.ts.map +0 -1
- package/build/operations/milestones.js +0 -155
- package/build/operations/milestones.js.map +0 -1
- package/build/operations/plans.d.ts +0 -8
- package/build/operations/plans.d.ts.map +0 -1
- package/build/operations/plans.js +0 -158
- package/build/operations/plans.js.map +0 -1
- package/build/operations/projects.d.ts +0 -8
- package/build/operations/projects.d.ts.map +0 -1
- package/build/operations/projects.js +0 -192
- package/build/operations/projects.js.map +0 -1
- package/build/operations/results.d.ts +0 -8
- package/build/operations/results.d.ts.map +0 -1
- package/build/operations/results.js +0 -214
- package/build/operations/results.js.map +0 -1
- package/build/operations/runs.d.ts +0 -8
- package/build/operations/runs.d.ts.map +0 -1
- package/build/operations/runs.js +0 -224
- package/build/operations/runs.js.map +0 -1
- package/build/operations/search.d.ts.map +0 -1
- package/build/operations/search.js.map +0 -1
- package/build/operations/shared-parameters.d.ts +0 -10
- package/build/operations/shared-parameters.d.ts.map +0 -1
- package/build/operations/shared-parameters.js +0 -93
- package/build/operations/shared-parameters.js.map +0 -1
- package/build/operations/shared-steps.d.ts +0 -8
- package/build/operations/shared-steps.d.ts.map +0 -1
- package/build/operations/shared-steps.js +0 -160
- package/build/operations/shared-steps.js.map +0 -1
- package/build/operations/suites.d.ts +0 -8
- package/build/operations/suites.d.ts.map +0 -1
- package/build/operations/suites.js +0 -169
- package/build/operations/suites.js.map +0 -1
- package/build/operations/system-fields.d.ts +0 -10
- package/build/operations/system-fields.d.ts.map +0 -1
- package/build/operations/system-fields.js +0 -47
- package/build/operations/system-fields.js.map +0 -1
- package/build/operations/users.d.ts +0 -10
- package/build/operations/users.d.ts.map +0 -1
- package/build/operations/users.js +0 -78
- package/build/operations/users.js.map +0 -1
|
@@ -1,146 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Attachments Operations
|
|
3
|
-
*
|
|
4
|
-
* Implements all MCP tools for managing attachments in Qase.
|
|
5
|
-
* Attachments are files associated with test cases, steps, and results.
|
|
6
|
-
*/
|
|
7
|
-
import { z } from 'zod';
|
|
8
|
-
import { createReadStream, existsSync } from 'fs';
|
|
9
|
-
import { getApiClient } from '../client/index.js';
|
|
10
|
-
import { toolRegistry, ReadAnnotation, CreateAnnotation, DeleteAnnotation, } from '../utils/registry.js';
|
|
11
|
-
import { toResultAsync, createToolError } from '../utils/errors.js';
|
|
12
|
-
import { ProjectCodeSchema, HashSchema } from '../utils/validation.js';
|
|
13
|
-
// ============================================================================
|
|
14
|
-
// SCHEMAS
|
|
15
|
-
// ============================================================================
|
|
16
|
-
/**
|
|
17
|
-
* Schema for listing attachments
|
|
18
|
-
*/
|
|
19
|
-
const ListAttachmentsSchema = z.object({
|
|
20
|
-
limit: z
|
|
21
|
-
.number()
|
|
22
|
-
.int()
|
|
23
|
-
.positive()
|
|
24
|
-
.max(100)
|
|
25
|
-
.optional()
|
|
26
|
-
.default(10)
|
|
27
|
-
.describe('Maximum number of items (default: 10, max: 100)'),
|
|
28
|
-
offset: z.number().int().nonnegative().optional().describe('Number of items to skip'),
|
|
29
|
-
});
|
|
30
|
-
/**
|
|
31
|
-
* Schema for getting a specific attachment
|
|
32
|
-
*/
|
|
33
|
-
const GetAttachmentSchema = z.object({
|
|
34
|
-
hash: HashSchema.describe('Attachment hash identifier'),
|
|
35
|
-
});
|
|
36
|
-
/**
|
|
37
|
-
* Schema for uploading an attachment
|
|
38
|
-
*/
|
|
39
|
-
const UploadAttachmentSchema = z.object({
|
|
40
|
-
code: ProjectCodeSchema.describe('Project code'),
|
|
41
|
-
file: z.string().describe('File content as base64 encoded string or absolute file path'),
|
|
42
|
-
filename: z.string().describe('Original filename with extension'),
|
|
43
|
-
});
|
|
44
|
-
/**
|
|
45
|
-
* Schema for deleting an attachment
|
|
46
|
-
*/
|
|
47
|
-
const DeleteAttachmentSchema = z.object({
|
|
48
|
-
hash: HashSchema.describe('Attachment hash identifier'),
|
|
49
|
-
});
|
|
50
|
-
// ============================================================================
|
|
51
|
-
// HANDLERS
|
|
52
|
-
// ============================================================================
|
|
53
|
-
/**
|
|
54
|
-
* List all attachments
|
|
55
|
-
*/
|
|
56
|
-
async function listAttachments(args) {
|
|
57
|
-
const client = getApiClient();
|
|
58
|
-
const { limit, offset } = args;
|
|
59
|
-
const result = await toResultAsync(client.attachments.getAttachments(limit, offset));
|
|
60
|
-
return result.match((response) => response.data.result, (error) => {
|
|
61
|
-
throw createToolError(error, 'attachment operation');
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Get a specific attachment by hash
|
|
66
|
-
*/
|
|
67
|
-
async function getAttachment(args) {
|
|
68
|
-
const client = getApiClient();
|
|
69
|
-
const { hash } = args;
|
|
70
|
-
const result = await toResultAsync(client.attachments.getAttachment(hash));
|
|
71
|
-
return result.match((response) => response.data.result, (error) => {
|
|
72
|
-
throw createToolError(error, 'attachment operation');
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Prepare file data for upload.
|
|
77
|
-
* Accepts a base64-encoded string or an absolute file path.
|
|
78
|
-
* Returns an object compatible with the SDK's FormData append: { name, value }.
|
|
79
|
-
*/
|
|
80
|
-
function prepareFileData(file, filename) {
|
|
81
|
-
// If the string looks like a file path and exists on disk, stream it
|
|
82
|
-
if (file.startsWith('/') && existsSync(file)) {
|
|
83
|
-
return { name: filename, value: createReadStream(file) };
|
|
84
|
-
}
|
|
85
|
-
// Otherwise treat it as base64 content
|
|
86
|
-
const isBase64 = /^[A-Za-z0-9+/=\s]+$/.test(file);
|
|
87
|
-
return {
|
|
88
|
-
name: filename,
|
|
89
|
-
value: Buffer.from(file, isBase64 ? 'base64' : undefined),
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Upload a new attachment
|
|
94
|
-
*/
|
|
95
|
-
async function uploadAttachment(args) {
|
|
96
|
-
const client = getApiClient();
|
|
97
|
-
const { code, file, filename } = args;
|
|
98
|
-
const fileData = prepareFileData(file, filename);
|
|
99
|
-
const result = await toResultAsync(client.attachments.uploadAttachment(code, [fileData]));
|
|
100
|
-
return result.match((response) => response.data.result, (error) => {
|
|
101
|
-
throw createToolError(error, 'attachment operation');
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Delete an attachment
|
|
106
|
-
*/
|
|
107
|
-
async function deleteAttachment(args) {
|
|
108
|
-
const client = getApiClient();
|
|
109
|
-
const { hash } = args;
|
|
110
|
-
const result = await toResultAsync(client.attachments.deleteAttachment(hash));
|
|
111
|
-
return result.match((_response) => ({ success: true, hash }), (error) => {
|
|
112
|
-
throw createToolError(error, 'attachment operation');
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
// ============================================================================
|
|
116
|
-
// TOOL REGISTRATION
|
|
117
|
-
// ============================================================================
|
|
118
|
-
toolRegistry.register({
|
|
119
|
-
name: 'list_attachments',
|
|
120
|
-
description: 'Get all attachments with optional pagination',
|
|
121
|
-
schema: ListAttachmentsSchema,
|
|
122
|
-
handler: listAttachments,
|
|
123
|
-
annotations: ReadAnnotation,
|
|
124
|
-
});
|
|
125
|
-
toolRegistry.register({
|
|
126
|
-
name: 'get_attachment',
|
|
127
|
-
description: 'Get a specific attachment by hash, including download URL',
|
|
128
|
-
schema: GetAttachmentSchema,
|
|
129
|
-
handler: getAttachment,
|
|
130
|
-
annotations: ReadAnnotation,
|
|
131
|
-
});
|
|
132
|
-
toolRegistry.register({
|
|
133
|
-
name: 'upload_attachment',
|
|
134
|
-
description: 'Upload a new attachment (provide file as base64 encoded string)',
|
|
135
|
-
schema: UploadAttachmentSchema,
|
|
136
|
-
handler: uploadAttachment,
|
|
137
|
-
annotations: CreateAnnotation,
|
|
138
|
-
});
|
|
139
|
-
toolRegistry.register({
|
|
140
|
-
name: 'delete_attachment',
|
|
141
|
-
description: 'Delete an attachment by hash',
|
|
142
|
-
schema: DeleteAttachmentSchema,
|
|
143
|
-
handler: deleteAttachment,
|
|
144
|
-
annotations: DeleteAnnotation,
|
|
145
|
-
});
|
|
146
|
-
//# sourceMappingURL=attachments.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"attachments.js","sourceRoot":"","sources":["../../src/operations/attachments.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"authors.d.ts","sourceRoot":"","sources":["../../src/operations/authors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Authors Operations
|
|
3
|
-
*
|
|
4
|
-
* Implements all MCP tools for managing test case authors in Qase.
|
|
5
|
-
* Authors are users who have created test cases.
|
|
6
|
-
*/
|
|
7
|
-
import { z } from 'zod';
|
|
8
|
-
import { getApiClient } from '../client/index.js';
|
|
9
|
-
import { toolRegistry, ReadAnnotation } from '../utils/registry.js';
|
|
10
|
-
import { toResultAsync, createToolError } from '../utils/errors.js';
|
|
11
|
-
import { IdSchema } from '../utils/validation.js';
|
|
12
|
-
// ============================================================================
|
|
13
|
-
// SCHEMAS
|
|
14
|
-
// ============================================================================
|
|
15
|
-
/**
|
|
16
|
-
* Schema for listing authors
|
|
17
|
-
*/
|
|
18
|
-
const ListAuthorsSchema = z.object({
|
|
19
|
-
limit: z.number().int().positive().max(100).optional().describe('Maximum number of items'),
|
|
20
|
-
offset: z.number().int().nonnegative().optional().describe('Number of items to skip'),
|
|
21
|
-
});
|
|
22
|
-
/**
|
|
23
|
-
* Schema for getting a specific author
|
|
24
|
-
*/
|
|
25
|
-
const GetAuthorSchema = z.object({
|
|
26
|
-
id: IdSchema,
|
|
27
|
-
});
|
|
28
|
-
// ============================================================================
|
|
29
|
-
// HANDLERS
|
|
30
|
-
// ============================================================================
|
|
31
|
-
/**
|
|
32
|
-
* List all authors
|
|
33
|
-
*/
|
|
34
|
-
async function listAuthors(args) {
|
|
35
|
-
const client = getApiClient();
|
|
36
|
-
const { limit, offset } = args;
|
|
37
|
-
const result = await toResultAsync(client.authors.getAuthors(undefined, undefined, limit, offset));
|
|
38
|
-
return result.match((response) => response.data.result, (error) => {
|
|
39
|
-
throw createToolError(error, 'author operation');
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Get a specific author
|
|
44
|
-
*/
|
|
45
|
-
async function getAuthor(args) {
|
|
46
|
-
const client = getApiClient();
|
|
47
|
-
const { id } = args;
|
|
48
|
-
const result = await toResultAsync(client.authors.getAuthor(id));
|
|
49
|
-
return result.match((response) => response.data.result, (error) => {
|
|
50
|
-
throw createToolError(error, 'author operation');
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
// ============================================================================
|
|
54
|
-
// TOOL REGISTRATION
|
|
55
|
-
// ============================================================================
|
|
56
|
-
toolRegistry.register({
|
|
57
|
-
name: 'list_authors',
|
|
58
|
-
description: 'Get all test case authors with optional pagination',
|
|
59
|
-
schema: ListAuthorsSchema,
|
|
60
|
-
handler: listAuthors,
|
|
61
|
-
annotations: ReadAnnotation,
|
|
62
|
-
});
|
|
63
|
-
toolRegistry.register({
|
|
64
|
-
name: 'get_author',
|
|
65
|
-
description: 'Get a specific author by ID',
|
|
66
|
-
schema: GetAuthorSchema,
|
|
67
|
-
handler: getAuthor,
|
|
68
|
-
annotations: ReadAnnotation,
|
|
69
|
-
});
|
|
70
|
-
//# sourceMappingURL=authors.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"authors.js","sourceRoot":"","sources":["../../src/operations/authors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElD,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E;;GAEG;AACH,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IAC1F,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;CACtF,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,EAAE,EAAE,QAAQ;CACb,CAAC,CAAC;AAEH,+EAA+E;AAC/E,WAAW;AACX,+EAA+E;AAE/E;;GAEG;AACH,KAAK,UAAU,WAAW,CAAC,IAAuC;IAChE,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAC9B,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAE/B,MAAM,MAAM,GAAG,MAAM,aAAa,CAChC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,CAC/D,CAAC;IAEF,OAAO,MAAM,CAAC,KAAK,CACjB,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAClC,CAAC,KAAK,EAAE,EAAE;QACR,MAAM,eAAe,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;IACnD,CAAC,CACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,SAAS,CAAC,IAAqC;IAC5D,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAC9B,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;IAEpB,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;IAEjE,OAAO,MAAM,CAAC,KAAK,CACjB,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAClC,CAAC,KAAK,EAAE,EAAE;QACR,MAAM,eAAe,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;IACnD,CAAC,CACF,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,YAAY,CAAC,QAAQ,CAAC;IACpB,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,oDAAoD;IACjE,MAAM,EAAE,iBAAiB;IACzB,OAAO,EAAE,WAAW;IACpB,WAAW,EAAE,cAAc;CAC5B,CAAC,CAAC;AAEH,YAAY,CAAC,QAAQ,CAAC;IACpB,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,6BAA6B;IAC1C,MAAM,EAAE,eAAe;IACvB,OAAO,EAAE,SAAS;IAClB,WAAW,EAAE,cAAc;CAC5B,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cases.d.ts","sourceRoot":"","sources":["../../src/operations/cases.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -1,370 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Test Cases (Qases) Operations
|
|
3
|
-
*
|
|
4
|
-
* Implements all MCP tools for managing test cases in Qase.
|
|
5
|
-
* Test cases are the core entities representing individual tests.
|
|
6
|
-
*/
|
|
7
|
-
import { z } from 'zod';
|
|
8
|
-
import { getApiClient } from '../client/index.js';
|
|
9
|
-
import { toolRegistry, ReadAnnotation, CreateAnnotation, UpdateAnnotation, DeleteAnnotation, } from '../utils/registry.js';
|
|
10
|
-
import { toResultAsync, createToolError } from '../utils/errors.js';
|
|
11
|
-
import { normalizeCaseEnums } from '../utils/case-enums.js';
|
|
12
|
-
import { ProjectCodeSchema, IdSchema } from '../utils/validation.js';
|
|
13
|
-
// ============================================================================
|
|
14
|
-
// SCHEMAS
|
|
15
|
-
// ============================================================================
|
|
16
|
-
/**
|
|
17
|
-
* Schema for listing test cases
|
|
18
|
-
*/
|
|
19
|
-
const ListCasesSchema = z.object({
|
|
20
|
-
code: ProjectCodeSchema,
|
|
21
|
-
search: z.string().optional().describe('Search query for test case title or description'),
|
|
22
|
-
milestone_id: z.number().int().positive().optional().describe('Filter by milestone ID'),
|
|
23
|
-
suite_id: z.number().int().positive().optional().describe('Filter by suite ID'),
|
|
24
|
-
severity: z.string().optional().describe('Filter by severity (e.g., "blocker", "critical")'),
|
|
25
|
-
priority: z.string().optional().describe('Filter by priority (e.g., "high", "medium")'),
|
|
26
|
-
type: z.string().optional().describe('Filter by type (e.g., "functional", "smoke")'),
|
|
27
|
-
behavior: z.string().optional().describe('Filter by behavior (e.g., "positive", "negative")'),
|
|
28
|
-
automation: z.string().optional().describe('Filter by automation status'),
|
|
29
|
-
status: z.string().optional().describe('Filter by status (e.g., "actual", "draft")'),
|
|
30
|
-
external_issues_type: z
|
|
31
|
-
.enum([
|
|
32
|
-
'asana',
|
|
33
|
-
'azure-devops',
|
|
34
|
-
'clickup-app',
|
|
35
|
-
'github-app',
|
|
36
|
-
'gitlab-app',
|
|
37
|
-
'jira-cloud',
|
|
38
|
-
'jira-server',
|
|
39
|
-
'linear',
|
|
40
|
-
'monday',
|
|
41
|
-
'redmine-app',
|
|
42
|
-
'trello-app',
|
|
43
|
-
'youtrack-app',
|
|
44
|
-
])
|
|
45
|
-
.optional()
|
|
46
|
-
.describe('Filter by external integration type'),
|
|
47
|
-
external_issues_ids: z
|
|
48
|
-
.array(z.string())
|
|
49
|
-
.optional()
|
|
50
|
-
.describe('Filter by external issue IDs (e.g., Jira ticket keys)'),
|
|
51
|
-
include: z
|
|
52
|
-
.string()
|
|
53
|
-
.optional()
|
|
54
|
-
.describe('Comma-separated list of entities to include in response (e.g., "external_issues")'),
|
|
55
|
-
limit: z.number().int().positive().max(100).optional().describe('Maximum number of items'),
|
|
56
|
-
offset: z.number().int().nonnegative().optional().describe('Number of items to skip'),
|
|
57
|
-
});
|
|
58
|
-
/**
|
|
59
|
-
* Schema for getting a specific test case
|
|
60
|
-
*/
|
|
61
|
-
const GetCaseSchema = z.object({
|
|
62
|
-
code: ProjectCodeSchema,
|
|
63
|
-
id: IdSchema,
|
|
64
|
-
});
|
|
65
|
-
/**
|
|
66
|
-
* Schema for test case steps
|
|
67
|
-
*/
|
|
68
|
-
const CaseEnumValueSchema = z.string();
|
|
69
|
-
const stepFields = {
|
|
70
|
-
action: z.string().optional().describe('Step action description (used for classic steps)'),
|
|
71
|
-
expected_result: z.string().optional().describe('Expected result for this step'),
|
|
72
|
-
data: z.string().optional().describe('Test data for this step'),
|
|
73
|
-
value: z
|
|
74
|
-
.string()
|
|
75
|
-
.optional()
|
|
76
|
-
.describe('Gherkin scenario text (used when steps_type is "gherkin"). Example: "Given a user exists\\nWhen they log in\\nThen they see the dashboard"'),
|
|
77
|
-
attachments: z.array(z.string()).optional().describe('Array of attachment hashes'),
|
|
78
|
-
};
|
|
79
|
-
const TestStepSchema = z.object({
|
|
80
|
-
...stepFields,
|
|
81
|
-
steps: z
|
|
82
|
-
.array(z.object(stepFields).passthrough())
|
|
83
|
-
.optional()
|
|
84
|
-
.describe('Nested substeps. Same structure as parent steps, supports further nesting.'),
|
|
85
|
-
});
|
|
86
|
-
/**
|
|
87
|
-
* Schema for creating a test case
|
|
88
|
-
*/
|
|
89
|
-
const CreateCaseSchema = z.object({
|
|
90
|
-
code: ProjectCodeSchema,
|
|
91
|
-
title: z.string().min(1).max(255).describe('Test case title'),
|
|
92
|
-
description: z.string().optional().describe('Test case description'),
|
|
93
|
-
preconditions: z.string().optional().describe('Preconditions for the test'),
|
|
94
|
-
postconditions: z.string().optional().describe('Postconditions after the test'),
|
|
95
|
-
severity: CaseEnumValueSchema.optional().describe('Test severity (label or numeric ID from the current workspace configuration)'),
|
|
96
|
-
priority: CaseEnumValueSchema.optional().describe('Test priority (label or numeric ID: 0=not set, 1=high, 2=medium, 3=low)'),
|
|
97
|
-
type: CaseEnumValueSchema.optional().describe('Test type (label or numeric ID: 1=functional, 2=smoke, 3=regression, 4=security, 5=usability, 6=performance, 7=acceptance)'),
|
|
98
|
-
layer: CaseEnumValueSchema.optional().describe('Test layer (label or numeric ID from workspace configuration)'),
|
|
99
|
-
is_flaky: z.boolean().optional().describe('Mark test case as flaky'),
|
|
100
|
-
suite_id: z.number().int().positive().optional().describe('Suite ID to organize test case'),
|
|
101
|
-
milestone_id: z.number().int().positive().optional().describe('Milestone ID'),
|
|
102
|
-
behavior: CaseEnumValueSchema.optional().describe('Test behavior (label or numeric ID from workspace configuration)'),
|
|
103
|
-
automation: CaseEnumValueSchema.optional().describe('Automation status (label, slug, or numeric ID: 0=Manual / is-not-automated, 1=To be automated, 2=Automated)'),
|
|
104
|
-
status: CaseEnumValueSchema.optional().describe('Test case status (label or numeric ID from workspace configuration)'),
|
|
105
|
-
steps: z.array(TestStepSchema).optional().describe('Array of test steps'),
|
|
106
|
-
steps_type: z
|
|
107
|
-
.enum(['classic', 'gherkin'])
|
|
108
|
-
.optional()
|
|
109
|
-
.describe("Step format: 'classic' for structured steps, 'gherkin' for Given/When/Then scenarios"),
|
|
110
|
-
tags: z.array(z.string()).optional().describe('Tags for categorization'),
|
|
111
|
-
attachments: z.array(z.string()).optional().describe('Array of attachment hashes'),
|
|
112
|
-
custom_field: z.record(z.any()).optional().describe('Custom field values'),
|
|
113
|
-
});
|
|
114
|
-
/**
|
|
115
|
-
* Schema for updating a test case
|
|
116
|
-
*/
|
|
117
|
-
const UpdateCaseSchema = z.object({
|
|
118
|
-
code: ProjectCodeSchema,
|
|
119
|
-
id: IdSchema,
|
|
120
|
-
title: z.string().min(1).max(255).optional().describe('Test case title'),
|
|
121
|
-
description: z.string().optional().describe('Test case description'),
|
|
122
|
-
preconditions: z.string().optional().describe('Preconditions for the test'),
|
|
123
|
-
postconditions: z.string().optional().describe('Postconditions after the test'),
|
|
124
|
-
severity: CaseEnumValueSchema.optional().describe('Test severity (label or numeric ID from workspace configuration)'),
|
|
125
|
-
priority: CaseEnumValueSchema.optional().describe('Test priority (label or numeric ID: 0=not set, 1=high, 2=medium, 3=low)'),
|
|
126
|
-
type: CaseEnumValueSchema.optional().describe('Test type (label or numeric ID: 1=functional, 2=smoke, 3=regression, 4=security, 5=usability, 6=performance, 7=acceptance)'),
|
|
127
|
-
layer: CaseEnumValueSchema.optional().describe('Test layer (label or numeric ID from workspace configuration)'),
|
|
128
|
-
is_flaky: z.boolean().optional().describe('Mark test case as flaky'),
|
|
129
|
-
suite_id: z.number().int().positive().optional().describe('Suite ID'),
|
|
130
|
-
milestone_id: z.number().int().positive().optional().describe('Milestone ID'),
|
|
131
|
-
behavior: CaseEnumValueSchema.optional().describe('Test behavior (label or numeric ID from workspace configuration)'),
|
|
132
|
-
automation: CaseEnumValueSchema.optional().describe('Automation status (label, slug, or numeric ID: 0=Manual / is-not-automated, 1=To be automated, 2=Automated)'),
|
|
133
|
-
status: CaseEnumValueSchema.optional().describe('Test case status (label or numeric ID from workspace configuration)'),
|
|
134
|
-
steps: z.array(TestStepSchema).optional().describe('Array of test steps'),
|
|
135
|
-
steps_type: z
|
|
136
|
-
.enum(['classic', 'gherkin'])
|
|
137
|
-
.optional()
|
|
138
|
-
.describe("Step format: 'classic' for structured steps, 'gherkin' for Given/When/Then scenarios"),
|
|
139
|
-
tags: z.array(z.string()).optional().describe('Tags for categorization'),
|
|
140
|
-
attachments: z.array(z.string()).optional().describe('Array of attachment hashes'),
|
|
141
|
-
custom_field: z.record(z.any()).optional().describe('Custom field values'),
|
|
142
|
-
});
|
|
143
|
-
/**
|
|
144
|
-
* Schema for deleting a test case
|
|
145
|
-
*/
|
|
146
|
-
const DeleteCaseSchema = z.object({
|
|
147
|
-
code: ProjectCodeSchema,
|
|
148
|
-
id: IdSchema,
|
|
149
|
-
});
|
|
150
|
-
/**
|
|
151
|
-
* Schema for bulk creating test cases
|
|
152
|
-
*/
|
|
153
|
-
const BulkCreateCasesSchema = z.object({
|
|
154
|
-
code: ProjectCodeSchema,
|
|
155
|
-
cases: z.array(CreateCaseSchema.omit({ code: true })).describe('Array of test cases to create'),
|
|
156
|
-
});
|
|
157
|
-
/**
|
|
158
|
-
* Schema for attaching external issue
|
|
159
|
-
*/
|
|
160
|
-
const AttachExternalIssueSchema = z.object({
|
|
161
|
-
code: ProjectCodeSchema,
|
|
162
|
-
id: IdSchema,
|
|
163
|
-
issue_id: z.string().describe('External issue ID (e.g., Jira issue key)'),
|
|
164
|
-
type: z
|
|
165
|
-
.enum(['jira-cloud', 'jira-server'])
|
|
166
|
-
.describe('Type of external issue integration (Jira Cloud or Jira Server)'),
|
|
167
|
-
});
|
|
168
|
-
/**
|
|
169
|
-
* Schema for detaching external issue
|
|
170
|
-
*/
|
|
171
|
-
const DetachExternalIssueSchema = z.object({
|
|
172
|
-
code: ProjectCodeSchema,
|
|
173
|
-
id: IdSchema,
|
|
174
|
-
issue_id: z.string().describe('External issue ID to detach'),
|
|
175
|
-
type: z
|
|
176
|
-
.enum(['jira-cloud', 'jira-server'])
|
|
177
|
-
.describe('Type of external issue integration (Jira Cloud or Jira Server)'),
|
|
178
|
-
});
|
|
179
|
-
// ============================================================================
|
|
180
|
-
// HELPERS
|
|
181
|
-
// ============================================================================
|
|
182
|
-
/**
|
|
183
|
-
* Map the user-facing `automation` enum (0=Manual, 1=To be automated,
|
|
184
|
-
* 2=Automated) to the current API contract (`isManual` + `isToBeAutomated`).
|
|
185
|
-
* The legacy `automation` field is deprecated in qase-api-client and dropped
|
|
186
|
-
* from the outbound payload.
|
|
187
|
-
*/
|
|
188
|
-
function applyAutomationMapping(caseData) {
|
|
189
|
-
const automationId = caseData.automation;
|
|
190
|
-
if (typeof automationId !== 'number') {
|
|
191
|
-
return caseData;
|
|
192
|
-
}
|
|
193
|
-
const { automation: _drop, ...rest } = caseData;
|
|
194
|
-
const mapped = rest;
|
|
195
|
-
switch (automationId) {
|
|
196
|
-
case 2: // Automated
|
|
197
|
-
mapped.isManual = 0;
|
|
198
|
-
break;
|
|
199
|
-
case 1: // To be automated
|
|
200
|
-
mapped.isManual = 1;
|
|
201
|
-
mapped.isToBeAutomated = 1;
|
|
202
|
-
break;
|
|
203
|
-
case 0: // Manual
|
|
204
|
-
default:
|
|
205
|
-
mapped.isManual = 1;
|
|
206
|
-
mapped.isToBeAutomated = 0;
|
|
207
|
-
break;
|
|
208
|
-
}
|
|
209
|
-
return mapped;
|
|
210
|
-
}
|
|
211
|
-
// ============================================================================
|
|
212
|
-
// HANDLERS
|
|
213
|
-
// ============================================================================
|
|
214
|
-
/**
|
|
215
|
-
* List all test cases in a project with filtering
|
|
216
|
-
*/
|
|
217
|
-
async function listCases(args) {
|
|
218
|
-
const client = getApiClient();
|
|
219
|
-
const { code, ...filters } = args;
|
|
220
|
-
const result = await toResultAsync(client.cases.getCases(code, filters.search, filters.milestone_id, filters.suite_id, filters.severity, filters.priority, filters.type, filters.behavior, filters.automation, filters.status, filters.external_issues_type, filters.external_issues_ids, filters.include, filters.limit, filters.offset));
|
|
221
|
-
return result.match((response) => response.data.result, (error) => {
|
|
222
|
-
throw createToolError(error, 'case operation');
|
|
223
|
-
});
|
|
224
|
-
}
|
|
225
|
-
/**
|
|
226
|
-
* Get a specific test case
|
|
227
|
-
*/
|
|
228
|
-
async function getCase(args) {
|
|
229
|
-
const client = getApiClient();
|
|
230
|
-
const { code, id } = args;
|
|
231
|
-
const result = await toResultAsync(client.cases.getCase(code, id));
|
|
232
|
-
return result.match((response) => response.data.result, (error) => {
|
|
233
|
-
throw createToolError(error, 'case operation');
|
|
234
|
-
});
|
|
235
|
-
}
|
|
236
|
-
/**
|
|
237
|
-
* Create a new test case
|
|
238
|
-
*/
|
|
239
|
-
async function createCase(args) {
|
|
240
|
-
const client = getApiClient();
|
|
241
|
-
const { code, ...caseData } = args;
|
|
242
|
-
const normalizedCaseData = applyAutomationMapping(await normalizeCaseEnums(caseData));
|
|
243
|
-
const result = await toResultAsync(client.cases.createCase(code, normalizedCaseData));
|
|
244
|
-
return result.match((response) => response.data.result, (error) => {
|
|
245
|
-
throw createToolError(error, 'case operation');
|
|
246
|
-
});
|
|
247
|
-
}
|
|
248
|
-
/**
|
|
249
|
-
* Update an existing test case
|
|
250
|
-
*/
|
|
251
|
-
async function updateCase(args) {
|
|
252
|
-
const client = getApiClient();
|
|
253
|
-
const { code, id, ...updateData } = args;
|
|
254
|
-
const normalizedUpdateData = applyAutomationMapping(await normalizeCaseEnums(updateData));
|
|
255
|
-
const result = await toResultAsync(client.cases.updateCase(code, id, normalizedUpdateData));
|
|
256
|
-
return result.match((response) => response.data.result, (error) => {
|
|
257
|
-
throw createToolError(error, 'case operation');
|
|
258
|
-
});
|
|
259
|
-
}
|
|
260
|
-
/**
|
|
261
|
-
* Delete a test case
|
|
262
|
-
*/
|
|
263
|
-
async function deleteCase(args) {
|
|
264
|
-
const client = getApiClient();
|
|
265
|
-
const { code, id } = args;
|
|
266
|
-
const result = await toResultAsync(client.cases.deleteCase(code, id));
|
|
267
|
-
return result.match((_response) => ({ success: true, id }), (error) => {
|
|
268
|
-
throw createToolError(error, 'case operation');
|
|
269
|
-
});
|
|
270
|
-
}
|
|
271
|
-
/**
|
|
272
|
-
* Bulk create multiple test cases
|
|
273
|
-
*/
|
|
274
|
-
async function bulkCreateCases(args) {
|
|
275
|
-
const client = getApiClient();
|
|
276
|
-
const { code, cases } = args;
|
|
277
|
-
const normalizedCases = await Promise.all(cases.map(async (caseData) => applyAutomationMapping(await normalizeCaseEnums(caseData))));
|
|
278
|
-
const result = await toResultAsync(client.cases.bulk(code, { cases: normalizedCases }));
|
|
279
|
-
return result.match((response) => response.data.result, (error) => {
|
|
280
|
-
throw createToolError(error, 'case operation');
|
|
281
|
-
});
|
|
282
|
-
}
|
|
283
|
-
/**
|
|
284
|
-
* Attach external issue to a test case
|
|
285
|
-
*/
|
|
286
|
-
async function attachExternalIssue(args) {
|
|
287
|
-
const client = getApiClient();
|
|
288
|
-
const { code, id, issue_id, type } = args;
|
|
289
|
-
const result = await toResultAsync(client.cases.caseAttachExternalIssue(code, {
|
|
290
|
-
type: type,
|
|
291
|
-
links: [{ case_id: id, external_issues: [issue_id] }],
|
|
292
|
-
}));
|
|
293
|
-
return result.match((_response) => ({ success: true, id, issue_id }), (error) => {
|
|
294
|
-
throw createToolError(error, 'case operation');
|
|
295
|
-
});
|
|
296
|
-
}
|
|
297
|
-
/**
|
|
298
|
-
* Detach external issue from a test case
|
|
299
|
-
*/
|
|
300
|
-
async function detachExternalIssue(args) {
|
|
301
|
-
const client = getApiClient();
|
|
302
|
-
const { code, id, issue_id, type } = args;
|
|
303
|
-
const result = await toResultAsync(client.cases.caseDetachExternalIssue(code, {
|
|
304
|
-
type: type,
|
|
305
|
-
links: [{ case_id: id, external_issues: [issue_id] }],
|
|
306
|
-
}));
|
|
307
|
-
return result.match((_response) => ({ success: true, id, issue_id }), (error) => {
|
|
308
|
-
throw createToolError(error, 'case operation');
|
|
309
|
-
});
|
|
310
|
-
}
|
|
311
|
-
// ============================================================================
|
|
312
|
-
// TOOL REGISTRATION
|
|
313
|
-
// ============================================================================
|
|
314
|
-
toolRegistry.register({
|
|
315
|
-
name: 'list_cases',
|
|
316
|
-
description: 'Get all test cases in a project with optional filtering and pagination',
|
|
317
|
-
schema: ListCasesSchema,
|
|
318
|
-
handler: listCases,
|
|
319
|
-
annotations: ReadAnnotation,
|
|
320
|
-
});
|
|
321
|
-
toolRegistry.register({
|
|
322
|
-
name: 'get_case',
|
|
323
|
-
description: 'Get a specific test case by project code and case ID',
|
|
324
|
-
schema: GetCaseSchema,
|
|
325
|
-
handler: getCase,
|
|
326
|
-
annotations: ReadAnnotation,
|
|
327
|
-
});
|
|
328
|
-
toolRegistry.register({
|
|
329
|
-
name: 'create_case',
|
|
330
|
-
description: 'Create a new test case in a project',
|
|
331
|
-
schema: CreateCaseSchema,
|
|
332
|
-
handler: createCase,
|
|
333
|
-
annotations: CreateAnnotation,
|
|
334
|
-
});
|
|
335
|
-
toolRegistry.register({
|
|
336
|
-
name: 'update_case',
|
|
337
|
-
description: 'Update an existing test case',
|
|
338
|
-
schema: UpdateCaseSchema,
|
|
339
|
-
handler: updateCase,
|
|
340
|
-
annotations: UpdateAnnotation,
|
|
341
|
-
});
|
|
342
|
-
toolRegistry.register({
|
|
343
|
-
name: 'delete_case',
|
|
344
|
-
description: 'Delete a test case from a project',
|
|
345
|
-
schema: DeleteCaseSchema,
|
|
346
|
-
handler: deleteCase,
|
|
347
|
-
annotations: DeleteAnnotation,
|
|
348
|
-
});
|
|
349
|
-
toolRegistry.register({
|
|
350
|
-
name: 'bulk_create_cases',
|
|
351
|
-
description: 'Create multiple test cases at once in a project',
|
|
352
|
-
schema: BulkCreateCasesSchema,
|
|
353
|
-
handler: bulkCreateCases,
|
|
354
|
-
annotations: CreateAnnotation,
|
|
355
|
-
});
|
|
356
|
-
toolRegistry.register({
|
|
357
|
-
name: 'attach_external_issue',
|
|
358
|
-
description: 'Attach an external issue (e.g., Jira ticket) to a test case',
|
|
359
|
-
schema: AttachExternalIssueSchema,
|
|
360
|
-
handler: attachExternalIssue,
|
|
361
|
-
annotations: CreateAnnotation,
|
|
362
|
-
});
|
|
363
|
-
toolRegistry.register({
|
|
364
|
-
name: 'detach_external_issue',
|
|
365
|
-
description: 'Detach an external issue from a test case',
|
|
366
|
-
schema: DetachExternalIssueSchema,
|
|
367
|
-
handler: detachExternalIssue,
|
|
368
|
-
annotations: DeleteAnnotation,
|
|
369
|
-
});
|
|
370
|
-
//# sourceMappingURL=cases.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cases.js","sourceRoot":"","sources":["../../src/operations/cases.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Configurations Operations
|
|
3
|
-
*
|
|
4
|
-
* Implements all MCP tools for managing test configurations in Qase.
|
|
5
|
-
* Configurations represent test environment settings (browser, OS, device, etc.).
|
|
6
|
-
*
|
|
7
|
-
* https://developers.qase.io/reference/get-configurations
|
|
8
|
-
*/
|
|
9
|
-
export {};
|
|
10
|
-
//# sourceMappingURL=configurations.d.ts.map
|