@apify/actors-mcp-server 0.14.4-beta.0 → 0.14.4-beta.2
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/dist/apify_client.d.ts.map +1 -1
- package/dist/apify_client.js +3 -2
- package/dist/apify_client.js.map +1 -1
- package/dist/index_internals_test_kit.d.ts +11 -0
- package/dist/index_internals_test_kit.d.ts.map +1 -0
- package/dist/index_internals_test_kit.js +15 -0
- package/dist/index_internals_test_kit.js.map +1 -0
- package/dist/mcp/legacy_server.d.ts.map +1 -1
- package/dist/mcp/legacy_server.js +1 -3
- package/dist/mcp/legacy_server.js.map +1 -1
- package/dist/mcp/stateless_server.js +2 -2
- package/dist/mcp/stateless_server.js.map +1 -1
- package/dist/server_card.js +1 -1
- package/dist/server_card.js.map +1 -1
- package/dist/test_kit/cases/actors.cases.d.ts +4 -0
- package/dist/test_kit/cases/actors.cases.d.ts.map +1 -0
- package/dist/test_kit/cases/actors.cases.js +911 -0
- package/dist/test_kit/cases/actors.cases.js.map +1 -0
- package/dist/test_kit/cases/apps.cases.d.ts +4 -0
- package/dist/test_kit/cases/apps.cases.d.ts.map +1 -0
- package/dist/test_kit/cases/apps.cases.js +111 -0
- package/dist/test_kit/cases/apps.cases.js.map +1 -0
- package/dist/test_kit/cases/payments.cases.d.ts +4 -0
- package/dist/test_kit/cases/payments.cases.d.ts.map +1 -0
- package/dist/test_kit/cases/payments.cases.js +207 -0
- package/dist/test_kit/cases/payments.cases.js.map +1 -0
- package/dist/test_kit/cases/registration.cases.d.ts +4 -0
- package/dist/test_kit/cases/registration.cases.d.ts.map +1 -0
- package/dist/test_kit/cases/registration.cases.js +431 -0
- package/dist/test_kit/cases/registration.cases.js.map +1 -0
- package/dist/test_kit/cases/storage.cases.d.ts +4 -0
- package/dist/test_kit/cases/storage.cases.d.ts.map +1 -0
- package/dist/test_kit/cases/storage.cases.js +378 -0
- package/dist/test_kit/cases/storage.cases.js.map +1 -0
- package/dist/test_kit/cases/tasks.cases.d.ts +4 -0
- package/dist/test_kit/cases/tasks.cases.d.ts.map +1 -0
- package/dist/test_kit/cases/tasks.cases.js +320 -0
- package/dist/test_kit/cases/tasks.cases.js.map +1 -0
- package/dist/test_kit/cases/tools.cases.d.ts +4 -0
- package/dist/test_kit/cases/tools.cases.d.ts.map +1 -0
- package/dist/test_kit/cases/tools.cases.js +204 -0
- package/dist/test_kit/cases/tools.cases.js.map +1 -0
- package/dist/test_kit/helpers.d.ts +69 -0
- package/dist/test_kit/helpers.d.ts.map +1 -0
- package/dist/test_kit/helpers.js +223 -0
- package/dist/test_kit/helpers.js.map +1 -0
- package/dist/test_kit/index.d.ts +20 -0
- package/dist/test_kit/index.d.ts.map +1 -0
- package/dist/test_kit/index.js +32 -0
- package/dist/test_kit/index.js.map +1 -0
- package/dist/test_kit/mcp_client.d.ts +31 -0
- package/dist/test_kit/mcp_client.d.ts.map +1 -0
- package/dist/test_kit/mcp_client.js +73 -0
- package/dist/test_kit/mcp_client.js.map +1 -0
- package/dist/test_kit/register.d.ts +9 -0
- package/dist/test_kit/register.d.ts.map +1 -0
- package/dist/test_kit/register.js +39 -0
- package/dist/test_kit/register.js.map +1 -0
- package/dist/test_kit/tsconfig.tsbuildinfo +1 -0
- package/dist/test_kit/types.d.ts +45 -0
- package/dist/test_kit/types.d.ts.map +1 -0
- package/dist/test_kit/types.js +2 -0
- package/dist/test_kit/types.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types.d.ts +1 -3
- package/dist/types.d.ts.map +1 -1
- package/package.json +18 -3
|
@@ -0,0 +1,378 @@
|
|
|
1
|
+
import { expect } from 'vitest';
|
|
2
|
+
import { actorNameToToolName } from '@apify/actors-mcp-server/internals.js';
|
|
3
|
+
import { actorRunOutputSchema, HELPER_TOOLS } from '@apify/actors-mcp-server/internals/test-kit.js';
|
|
4
|
+
import { ACTOR_NORMAL_MODE, expectNormalModeTestStructuredContent, expectUsageCostMeta, validateStructuredOutput, validateStructuredOutputForTool, withClient, } from '../helpers.js';
|
|
5
|
+
/** One seeded normal-mode run, shared via getFixture. */
|
|
6
|
+
const normalModeRunFixture = {
|
|
7
|
+
key: 'storage.normal-mode-run',
|
|
8
|
+
setup: async (ctx) => {
|
|
9
|
+
var _a, _b, _c, _d, _e, _f;
|
|
10
|
+
const setupClient = await ctx.createClientFn({ tools: ['actors', 'storage'] });
|
|
11
|
+
try {
|
|
12
|
+
const callResult = await setupClient.callTool({
|
|
13
|
+
name: HELPER_TOOLS.ACTOR_CALL,
|
|
14
|
+
arguments: { actor: ACTOR_NORMAL_MODE, input: { firstNumber: 1, secondNumber: 2 }, waitSecs: 45 },
|
|
15
|
+
});
|
|
16
|
+
const callStructured = callResult;
|
|
17
|
+
const sc = callStructured.structuredContent;
|
|
18
|
+
expect(sc === null || sc === void 0 ? void 0 : sc.runId).toBeDefined();
|
|
19
|
+
expect((_c = (_b = (_a = sc === null || sc === void 0 ? void 0 : sc.storages) === null || _a === void 0 ? void 0 : _a.datasets) === null || _b === void 0 ? void 0 : _b.default) === null || _c === void 0 ? void 0 : _c.id).toBeDefined();
|
|
20
|
+
expect((_f = (_e = (_d = sc === null || sc === void 0 ? void 0 : sc.storages) === null || _d === void 0 ? void 0 : _d.keyValueStores) === null || _e === void 0 ? void 0 : _e.default) === null || _f === void 0 ? void 0 : _f.id).toBeDefined();
|
|
21
|
+
return {
|
|
22
|
+
datasetId: sc.storages.datasets.default.id,
|
|
23
|
+
defaultKvId: sc.storages.keyValueStores.default.id,
|
|
24
|
+
runId: sc.runId,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
finally {
|
|
28
|
+
await setupClient.close();
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
/** withClient + seeded normalModeRunFixture. */
|
|
33
|
+
function withNormalModeRun(clientOptions, testFn) {
|
|
34
|
+
return async (ctx) => {
|
|
35
|
+
const run = await ctx.getFixture(normalModeRunFixture);
|
|
36
|
+
const client = await ctx.createClientFn(clientOptions);
|
|
37
|
+
try {
|
|
38
|
+
await testFn(client, run);
|
|
39
|
+
}
|
|
40
|
+
finally {
|
|
41
|
+
await client.close();
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/** Dataset/KV read tools. */
|
|
46
|
+
export const storageCases = [
|
|
47
|
+
{
|
|
48
|
+
name: 'rejects get-key-value-store-record when required keyValueStoreId is missing',
|
|
49
|
+
isDeploymentTest: false,
|
|
50
|
+
run: withClient({ tools: ['storage'] }, async (client) => {
|
|
51
|
+
await expect(client.callTool({ name: HELPER_TOOLS.KEY_VALUE_STORE_RECORD_GET, arguments: { recordKey: 'INPUT' } })).rejects.toThrow(/must have required property 'keyValueStoreId'/);
|
|
52
|
+
}),
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
name: 'calls normal-mode-test-actor, verifies canonical shape and dataset fields, and fetches via get-dataset-items',
|
|
56
|
+
isDeploymentTest: false,
|
|
57
|
+
run: withClient({ tools: ['actors', 'storage'] }, async (client) => {
|
|
58
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
59
|
+
const callResult = await client.callTool({
|
|
60
|
+
name: 'call-actor',
|
|
61
|
+
arguments: { actor: ACTOR_NORMAL_MODE, input: { firstNumber: 1, secondNumber: 2 } },
|
|
62
|
+
});
|
|
63
|
+
// content[0] mirrors structuredContent as JSON; content[1] is "${summary}\n${nextStep}".
|
|
64
|
+
const content = callResult.content;
|
|
65
|
+
expect(content.length).toBe(2);
|
|
66
|
+
const sc = callResult.structuredContent;
|
|
67
|
+
expect(sc === null || sc === void 0 ? void 0 : sc.status).toBe('SUCCEEDED');
|
|
68
|
+
const datasetId = (_c = (_b = (_a = sc === null || sc === void 0 ? void 0 : sc.storages) === null || _a === void 0 ? void 0 : _a.datasets) === null || _b === void 0 ? void 0 : _b.default) === null || _c === void 0 ? void 0 : _c.id;
|
|
69
|
+
expect(datasetId).toBeDefined();
|
|
70
|
+
// Dataset field paths surface in `storages.datasets.default.fields`.
|
|
71
|
+
const fields = (_g = (_f = (_e = (_d = sc === null || sc === void 0 ? void 0 : sc.storages) === null || _d === void 0 ? void 0 : _d.datasets) === null || _e === void 0 ? void 0 : _e.default) === null || _f === void 0 ? void 0 : _f.fields) !== null && _g !== void 0 ? _g : [];
|
|
72
|
+
expect(fields).toEqual(expect.arrayContaining(['firstNumber', 'secondNumber', 'sum']));
|
|
73
|
+
// #911/#894: collapse index-expanded fields to `math.fibonacci`.
|
|
74
|
+
expect(fields).toEqual(expect.arrayContaining(['math.fibonacci']));
|
|
75
|
+
expect(fields.some((f) => /\.\d+(\.|$)/.test(f))).toBe(false);
|
|
76
|
+
expect(new Set(fields).size).toBe(fields.length);
|
|
77
|
+
const outputResult = await client.callTool({
|
|
78
|
+
name: HELPER_TOOLS.DATASET_GET_ITEMS,
|
|
79
|
+
arguments: { datasetId: datasetId, fields: 'firstNumber,sum' },
|
|
80
|
+
});
|
|
81
|
+
const items = (_h = outputResult
|
|
82
|
+
.structuredContent) === null || _h === void 0 ? void 0 : _h.items;
|
|
83
|
+
expect(Array.isArray(items)).toBe(true);
|
|
84
|
+
expect(items.length).toBeGreaterThan(0);
|
|
85
|
+
expect(items[0]).toHaveProperty('firstNumber', 1);
|
|
86
|
+
expect(items[0]).toHaveProperty('sum', 3);
|
|
87
|
+
}),
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
name: 'calls apify/normal-mode-test-actor tool directly and retrieves sum via get-dataset-items',
|
|
91
|
+
isDeploymentTest: false,
|
|
92
|
+
run: withClient({ tools: ['storage'], actors: [ACTOR_NORMAL_MODE] }, async (client) => {
|
|
93
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
94
|
+
const result = await client.callTool({
|
|
95
|
+
name: actorNameToToolName(ACTOR_NORMAL_MODE),
|
|
96
|
+
// Max wait (45s) so the test does not flake on a slow run.
|
|
97
|
+
arguments: { firstNumber: 4, secondNumber: 6, waitSecs: 45 },
|
|
98
|
+
});
|
|
99
|
+
// content[0] mirrors structuredContent as JSON; content[1] is "${summary}\n${nextStep}".
|
|
100
|
+
const content = result.content;
|
|
101
|
+
expect(content.length).toBe(2);
|
|
102
|
+
// Direct actor tools return the canonical RunResponse shape — same as call-actor.
|
|
103
|
+
const normalModeToolName = actorNameToToolName(ACTOR_NORMAL_MODE);
|
|
104
|
+
validateStructuredOutput(result, actorRunOutputSchema, normalModeToolName);
|
|
105
|
+
const sc = result.structuredContent;
|
|
106
|
+
expect(sc === null || sc === void 0 ? void 0 : sc.status).toBe('SUCCEEDED');
|
|
107
|
+
const datasetId = (_c = (_b = (_a = sc === null || sc === void 0 ? void 0 : sc.storages) === null || _a === void 0 ? void 0 : _a.datasets) === null || _b === void 0 ? void 0 : _b.default) === null || _c === void 0 ? void 0 : _c.id;
|
|
108
|
+
expect(datasetId).toBeDefined();
|
|
109
|
+
// summary/nextStep must name datasetId + follow-up tool.
|
|
110
|
+
expect(content[1].text).toContain(datasetId);
|
|
111
|
+
expect(content[1].text).toContain(HELPER_TOOLS.DATASET_GET_ITEMS);
|
|
112
|
+
// Dataset field paths surface in `storages.datasets.default.fields`.
|
|
113
|
+
const fields = (_g = (_f = (_e = (_d = sc === null || sc === void 0 ? void 0 : sc.storages) === null || _d === void 0 ? void 0 : _d.datasets) === null || _e === void 0 ? void 0 : _e.default) === null || _f === void 0 ? void 0 : _f.fields) !== null && _g !== void 0 ? _g : [];
|
|
114
|
+
expect(fields).toEqual(expect.arrayContaining(['firstNumber', 'secondNumber', 'sum']));
|
|
115
|
+
const outputResult = await client.callTool({
|
|
116
|
+
name: HELPER_TOOLS.DATASET_GET_ITEMS,
|
|
117
|
+
arguments: { datasetId: datasetId, fields: 'sum' },
|
|
118
|
+
});
|
|
119
|
+
const items = (_h = outputResult
|
|
120
|
+
.structuredContent) === null || _h === void 0 ? void 0 : _h.items;
|
|
121
|
+
expect(Array.isArray(items)).toBe(true);
|
|
122
|
+
expect(items.length).toBeGreaterThan(0);
|
|
123
|
+
expect(items[0]).toHaveProperty('sum', 10);
|
|
124
|
+
validateStructuredOutputForTool(outputResult, HELPER_TOOLS.DATASET_GET_ITEMS, 'default');
|
|
125
|
+
}),
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
name: 'calls apify/normal-mode-test-actor tool directly and retrieves full dataset via get-dataset-items',
|
|
129
|
+
isDeploymentTest: false,
|
|
130
|
+
run: withClient({ tools: ['storage'], actors: [ACTOR_NORMAL_MODE] }, async (client) => {
|
|
131
|
+
var _a, _b, _c, _d, _e;
|
|
132
|
+
const selectedToolName = actorNameToToolName(ACTOR_NORMAL_MODE);
|
|
133
|
+
const input = { firstNumber: 5, secondNumber: 7 };
|
|
134
|
+
const result = await client.callTool({ name: selectedToolName, arguments: input });
|
|
135
|
+
const content = result.content;
|
|
136
|
+
expect(content.length).toBe(2);
|
|
137
|
+
// Direct actor tools return the canonical RunResponse shape — same as call-actor.
|
|
138
|
+
validateStructuredOutput(result, actorRunOutputSchema, selectedToolName);
|
|
139
|
+
expectNormalModeTestStructuredContent(result);
|
|
140
|
+
expectUsageCostMeta(result);
|
|
141
|
+
const datasetId = (_d = (_c = (_b = (_a = result.structuredContent) === null || _a === void 0 ? void 0 : _a.storages) === null || _b === void 0 ? void 0 : _b.datasets) === null || _c === void 0 ? void 0 : _c.default) === null || _d === void 0 ? void 0 : _d.id;
|
|
142
|
+
expect(datasetId).toBeDefined();
|
|
143
|
+
const outputResult = await client.callTool({
|
|
144
|
+
name: HELPER_TOOLS.DATASET_GET_ITEMS,
|
|
145
|
+
arguments: { datasetId: datasetId },
|
|
146
|
+
});
|
|
147
|
+
const items = (_e = outputResult
|
|
148
|
+
.structuredContent) === null || _e === void 0 ? void 0 : _e.items;
|
|
149
|
+
expect(Array.isArray(items)).toBe(true);
|
|
150
|
+
expect(items.length).toBe(1);
|
|
151
|
+
expect(items[0]).toHaveProperty('firstNumber', input.firstNumber);
|
|
152
|
+
expect(items[0]).toHaveProperty('secondNumber', input.secondNumber);
|
|
153
|
+
expect(items[0]).toHaveProperty('sum', input.firstNumber + input.secondNumber);
|
|
154
|
+
validateStructuredOutputForTool(outputResult, HELPER_TOOLS.DATASET_GET_ITEMS, 'default');
|
|
155
|
+
}),
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
name: 'should return structured output for get-dataset-items matching outputSchema',
|
|
159
|
+
isDeploymentTest: false,
|
|
160
|
+
run: withClient({ tools: ['actors', 'storage'] }, async (client) => {
|
|
161
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
|
|
162
|
+
// First, run an actor to get a datasetId
|
|
163
|
+
const callResult = await client.callTool({
|
|
164
|
+
name: HELPER_TOOLS.ACTOR_CALL,
|
|
165
|
+
arguments: { actor: ACTOR_NORMAL_MODE, input: { firstNumber: 3, secondNumber: 4 } },
|
|
166
|
+
});
|
|
167
|
+
const resultWithStructured = callResult;
|
|
168
|
+
const datasetId = (_d = (_c = (_b = (_a = resultWithStructured.structuredContent) === null || _a === void 0 ? void 0 : _a.storages) === null || _b === void 0 ? void 0 : _b.datasets) === null || _c === void 0 ? void 0 : _c.default) === null || _d === void 0 ? void 0 : _d.id;
|
|
169
|
+
expect(datasetId).toBeDefined();
|
|
170
|
+
// Now test get-dataset-items
|
|
171
|
+
const datasetResult = await client.callTool({
|
|
172
|
+
name: HELPER_TOOLS.DATASET_GET_ITEMS,
|
|
173
|
+
arguments: { datasetId },
|
|
174
|
+
});
|
|
175
|
+
expect(datasetResult.content).toBeDefined();
|
|
176
|
+
// Validate structured output for get-dataset-items
|
|
177
|
+
validateStructuredOutputForTool(datasetResult, HELPER_TOOLS.DATASET_GET_ITEMS, 'default');
|
|
178
|
+
// Validate structured content has items with actual results
|
|
179
|
+
const datasetWithStructured = datasetResult;
|
|
180
|
+
expect(datasetWithStructured.structuredContent).toBeDefined();
|
|
181
|
+
expect((_f = (_e = datasetWithStructured.structuredContent) === null || _e === void 0 ? void 0 : _e.items) === null || _f === void 0 ? void 0 : _f.length).toBeGreaterThan(0);
|
|
182
|
+
expect((_h = (_g = datasetWithStructured.structuredContent) === null || _g === void 0 ? void 0 : _g.items) === null || _h === void 0 ? void 0 : _h[0]).toHaveProperty('sum', 7);
|
|
183
|
+
expect((_k = (_j = datasetWithStructured.structuredContent) === null || _j === void 0 ? void 0 : _j.items) === null || _k === void 0 ? void 0 : _k[0]).toHaveProperty('firstNumber', 3);
|
|
184
|
+
expect((_m = (_l = datasetWithStructured.structuredContent) === null || _l === void 0 ? void 0 : _l.items) === null || _m === void 0 ? void 0 : _m[0]).toHaveProperty('secondNumber', 4);
|
|
185
|
+
}),
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
name: 'applies the default `limit` of 20 when omitted on get-dataset-items',
|
|
189
|
+
isDeploymentTest: false,
|
|
190
|
+
run: withNormalModeRun({ tools: ['storage'] }, async (client, { datasetId }) => {
|
|
191
|
+
var _a;
|
|
192
|
+
const result = await client.callTool({ name: HELPER_TOOLS.DATASET_GET_ITEMS, arguments: { datasetId } });
|
|
193
|
+
expect(result.isError).not.toBe(true);
|
|
194
|
+
const structured = result
|
|
195
|
+
.structuredContent;
|
|
196
|
+
expect(structured === null || structured === void 0 ? void 0 : structured.limit).toBe(20);
|
|
197
|
+
expect(((_a = structured === null || structured === void 0 ? void 0 : structured.items) !== null && _a !== void 0 ? _a : []).length).toBeLessThanOrEqual(20);
|
|
198
|
+
}),
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
name: "reads INPUT from the run's default KV store via get-actor-run + get-key-value-store-record",
|
|
202
|
+
isDeploymentTest: false,
|
|
203
|
+
run: withNormalModeRun({ tools: ['runs', 'storage'] }, async (client, { runId }) => {
|
|
204
|
+
var _a, _b, _c;
|
|
205
|
+
const runResult = await client.callTool({ name: HELPER_TOOLS.ACTOR_RUNS_GET, arguments: { runId } });
|
|
206
|
+
expect(runResult.isError).not.toBe(true);
|
|
207
|
+
const runText = runResult.content[0].text;
|
|
208
|
+
// content[0] is JSON.stringify(structuredContent), not markdown-embedded JSON.
|
|
209
|
+
const runData = JSON.parse(runText);
|
|
210
|
+
const kvId = (_c = (_b = (_a = runData.storages) === null || _a === void 0 ? void 0 : _a.keyValueStores) === null || _b === void 0 ? void 0 : _b.default) === null || _c === void 0 ? void 0 : _c.id;
|
|
211
|
+
expect(kvId).toBeDefined();
|
|
212
|
+
const kvResult = await client.callTool({
|
|
213
|
+
name: HELPER_TOOLS.KEY_VALUE_STORE_RECORD_GET,
|
|
214
|
+
arguments: { keyValueStoreId: kvId, recordKey: 'INPUT' },
|
|
215
|
+
});
|
|
216
|
+
expect(kvResult.isError).not.toBe(true);
|
|
217
|
+
expect(kvResult.content[0].text).toContain('firstNumber');
|
|
218
|
+
// Reading a record is terminal: summary present, no nextStep.
|
|
219
|
+
const kvSc = kvResult
|
|
220
|
+
.structuredContent;
|
|
221
|
+
expect(kvSc === null || kvSc === void 0 ? void 0 : kvSc.summary).toContain("Read 'INPUT'");
|
|
222
|
+
expect(kvSc).not.toHaveProperty('nextStep');
|
|
223
|
+
}),
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
name: 'returns dataset metadata via get-dataset',
|
|
227
|
+
isDeploymentTest: false,
|
|
228
|
+
run: withNormalModeRun({ tools: ['storage'] }, async (client, { datasetId }) => {
|
|
229
|
+
const result = await client.callTool({ name: HELPER_TOOLS.DATASET_GET, arguments: { datasetId } });
|
|
230
|
+
expect(result.isError).not.toBe(true);
|
|
231
|
+
const { text } = result.content[0];
|
|
232
|
+
expect(text).toContain(datasetId);
|
|
233
|
+
expect(text).toContain('firstNumber');
|
|
234
|
+
expect(text).toContain('sum');
|
|
235
|
+
const sc = result.structuredContent;
|
|
236
|
+
expect(sc === null || sc === void 0 ? void 0 : sc.summary).toContain('items');
|
|
237
|
+
expect(sc === null || sc === void 0 ? void 0 : sc.nextStep).toContain(HELPER_TOOLS.DATASET_GET_ITEMS);
|
|
238
|
+
}),
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
name: 'infers schema from dataset items via get-dataset-schema',
|
|
242
|
+
isDeploymentTest: false,
|
|
243
|
+
run: withNormalModeRun({ tools: ['storage'] }, async (client, { datasetId }) => {
|
|
244
|
+
const result = await client.callTool({ name: HELPER_TOOLS.DATASET_SCHEMA_GET, arguments: { datasetId } });
|
|
245
|
+
expect(result.isError).not.toBe(true);
|
|
246
|
+
const { text } = result.content[0];
|
|
247
|
+
expect(text).toContain('properties');
|
|
248
|
+
// Nested `math` proves schema inference walks objects.
|
|
249
|
+
expect(text).toContain('math');
|
|
250
|
+
const sc = result.structuredContent;
|
|
251
|
+
expect(sc === null || sc === void 0 ? void 0 : sc.summary).toContain('Schema inferred');
|
|
252
|
+
expect(sc === null || sc === void 0 ? void 0 : sc.nextStep).toContain(HELPER_TOOLS.DATASET_GET_ITEMS);
|
|
253
|
+
}),
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
name: 'returns key-value store metadata via get-key-value-store',
|
|
257
|
+
isDeploymentTest: false,
|
|
258
|
+
run: withNormalModeRun({ tools: ['storage'] }, async (client, { defaultKvId }) => {
|
|
259
|
+
const result = await client.callTool({
|
|
260
|
+
name: HELPER_TOOLS.KEY_VALUE_STORE_GET,
|
|
261
|
+
arguments: { keyValueStoreId: defaultKvId },
|
|
262
|
+
});
|
|
263
|
+
expect(result.isError).not.toBe(true);
|
|
264
|
+
const { text } = result.content[0];
|
|
265
|
+
expect(text).toContain(defaultKvId);
|
|
266
|
+
const sc = result.structuredContent;
|
|
267
|
+
expect(sc === null || sc === void 0 ? void 0 : sc.nextStep).toContain(HELPER_TOOLS.KEY_VALUE_STORE_KEYS_GET);
|
|
268
|
+
}),
|
|
269
|
+
},
|
|
270
|
+
{
|
|
271
|
+
name: 'lists keys in the run KV store via get-key-value-store-keys',
|
|
272
|
+
isDeploymentTest: false,
|
|
273
|
+
run: withNormalModeRun({ tools: ['storage'] }, async (client, { defaultKvId }) => {
|
|
274
|
+
const result = await client.callTool({
|
|
275
|
+
name: HELPER_TOOLS.KEY_VALUE_STORE_KEYS_GET,
|
|
276
|
+
arguments: { keyValueStoreId: defaultKvId, limit: 10 },
|
|
277
|
+
});
|
|
278
|
+
expect(result.isError).not.toBe(true);
|
|
279
|
+
const { text } = result.content[0];
|
|
280
|
+
expect(text).toContain('INPUT');
|
|
281
|
+
expect(text).toContain('RESULT');
|
|
282
|
+
expect(text).toContain('STATS');
|
|
283
|
+
expect(text).toContain('LOG');
|
|
284
|
+
expect(text).toContain('COVER');
|
|
285
|
+
const sc = result.structuredContent;
|
|
286
|
+
expect(sc === null || sc === void 0 ? void 0 : sc.summary).toContain('keys');
|
|
287
|
+
expect(sc === null || sc === void 0 ? void 0 : sc.nextStep).toContain(HELPER_TOOLS.KEY_VALUE_STORE_RECORD_GET);
|
|
288
|
+
}),
|
|
289
|
+
},
|
|
290
|
+
{
|
|
291
|
+
// Skip recency assert — concurrent runs can push KV past top-10.
|
|
292
|
+
name: 'lists unnamed key-value stores via get-key-value-store-list',
|
|
293
|
+
isDeploymentTest: false,
|
|
294
|
+
run: withNormalModeRun({ tools: ['storage'] }, async (client) => {
|
|
295
|
+
const result = await client.callTool({
|
|
296
|
+
name: HELPER_TOOLS.KEY_VALUE_STORE_LIST_GET,
|
|
297
|
+
arguments: { desc: true, unnamed: true, limit: 10 },
|
|
298
|
+
});
|
|
299
|
+
expect(result.isError).not.toBe(true);
|
|
300
|
+
const sc = result
|
|
301
|
+
.structuredContent;
|
|
302
|
+
expect(sc === null || sc === void 0 ? void 0 : sc.unnamed).toBe(true);
|
|
303
|
+
expect(sc === null || sc === void 0 ? void 0 : sc.total).toBeGreaterThan(0);
|
|
304
|
+
expect(Array.isArray(sc === null || sc === void 0 ? void 0 : sc.items)).toBe(true);
|
|
305
|
+
expect(sc.items.length).toBeGreaterThan(0);
|
|
306
|
+
expect(sc.items.length).toBeLessThanOrEqual(10);
|
|
307
|
+
}),
|
|
308
|
+
},
|
|
309
|
+
{
|
|
310
|
+
// #880 canary: flatten=math must still surface nested math.factorial.first.
|
|
311
|
+
name: 'flattens 3-level nested fields via get-dataset-items',
|
|
312
|
+
isDeploymentTest: false,
|
|
313
|
+
run: withNormalModeRun({ tools: ['storage'] }, async (client, { datasetId }) => {
|
|
314
|
+
var _a;
|
|
315
|
+
const result = await client.callTool({
|
|
316
|
+
name: HELPER_TOOLS.DATASET_GET_ITEMS,
|
|
317
|
+
arguments: { datasetId, fields: 'math.factorial.first' },
|
|
318
|
+
});
|
|
319
|
+
expect(result.isError).not.toBe(true);
|
|
320
|
+
const items = (_a = result.structuredContent) === null || _a === void 0 ? void 0 : _a.items;
|
|
321
|
+
expect(Array.isArray(items)).toBe(true);
|
|
322
|
+
// >=1 (not ==1): the signal is whether the nested field surfaces, not the count.
|
|
323
|
+
expect(items.length).toBeGreaterThanOrEqual(1);
|
|
324
|
+
// factorial.first = 1! = 1; if flatten recurses, the value appears under the dot-notated key.
|
|
325
|
+
expect(items[0]['math.factorial.first']).toBe(1);
|
|
326
|
+
}),
|
|
327
|
+
},
|
|
328
|
+
{
|
|
329
|
+
name: 'reads dataset items via resources/read',
|
|
330
|
+
isDeploymentTest: false,
|
|
331
|
+
run: withNormalModeRun({ tools: ['storage'] }, async (client, { datasetId }) => {
|
|
332
|
+
const result = await client.readResource({
|
|
333
|
+
uri: `https://api.apify.com/v2/datasets/${datasetId}/items?limit=5`,
|
|
334
|
+
});
|
|
335
|
+
const contents = result.contents[0];
|
|
336
|
+
// Content-Type may include charset — match base type only.
|
|
337
|
+
expect(contents.mimeType).toContain('application/json');
|
|
338
|
+
// The generic proxy returns the raw API body — a bare JSON array of items.
|
|
339
|
+
const items = JSON.parse(contents.text);
|
|
340
|
+
expect(Array.isArray(items)).toBe(true);
|
|
341
|
+
}),
|
|
342
|
+
},
|
|
343
|
+
{
|
|
344
|
+
name: 'reads a KV record via resources/read',
|
|
345
|
+
isDeploymentTest: false,
|
|
346
|
+
run: withNormalModeRun({ tools: ['storage'] }, async (client, { defaultKvId }) => {
|
|
347
|
+
const result = await client.readResource({
|
|
348
|
+
uri: `https://api.apify.com/v2/key-value-stores/${defaultKvId}/records/INPUT`,
|
|
349
|
+
});
|
|
350
|
+
const contents = result.contents[0];
|
|
351
|
+
expect(contents.text).toContain('firstNumber');
|
|
352
|
+
}),
|
|
353
|
+
},
|
|
354
|
+
{
|
|
355
|
+
name: 'rejects resources/read of a nonexistent dataset with a JSON-RPC error',
|
|
356
|
+
isDeploymentTest: false,
|
|
357
|
+
run: withNormalModeRun({ tools: ['storage'] }, async (client) => {
|
|
358
|
+
await expect(client.readResource({ uri: 'https://api.apify.com/v2/datasets/this-dataset-does-not-exist-xyz/items' })).rejects.toThrow(/Failed to read/i);
|
|
359
|
+
}),
|
|
360
|
+
},
|
|
361
|
+
{
|
|
362
|
+
name: 'rejects resources/read of a non-Apify URL with a JSON-RPC error',
|
|
363
|
+
isDeploymentTest: false,
|
|
364
|
+
run: withNormalModeRun({ tools: ['storage'] }, async (client) => {
|
|
365
|
+
await expect(client.readResource({ uri: 'https://example.com/steal-my-token' })).rejects.toThrow(/Failed to read/i);
|
|
366
|
+
}),
|
|
367
|
+
},
|
|
368
|
+
{
|
|
369
|
+
name: 'advertises API URL templates via resources/templates/list',
|
|
370
|
+
isDeploymentTest: false,
|
|
371
|
+
run: withNormalModeRun({ tools: ['storage'] }, async (client) => {
|
|
372
|
+
const { resourceTemplates } = await client.listResourceTemplates();
|
|
373
|
+
const datasetItems = resourceTemplates.find((t) => t.name === 'dataset-items');
|
|
374
|
+
expect(datasetItems === null || datasetItems === void 0 ? void 0 : datasetItems.uriTemplate).toContain('/v2/datasets/{datasetId}/items{?limit,offset,');
|
|
375
|
+
}),
|
|
376
|
+
},
|
|
377
|
+
];
|
|
378
|
+
//# sourceMappingURL=storage.cases.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.cases.js","sourceRoot":"","sources":["../../../tests/test_kit/cases/storage.cases.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tasks.cases.d.ts","sourceRoot":"","sources":["../../../tests/test_kit/cases/tasks.cases.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,IAAI,EAAW,MAAM,aAAa,CAAC;AAOjD,+EAA+E;AAC/E,eAAO,MAAM,UAAU,EAAE,IAAI,EA0V5B,CAAC"}
|