@gorgo/medusa-integration 0.0.3 → 0.0.5
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/.medusa/server/src/admin/index.js +546 -119
- package/.medusa/server/src/admin/index.mjs +549 -122
- package/.medusa/server/src/api/admin/integrations/[provider_id]/route.js +7 -2
- package/.medusa/server/src/api/admin/integrations/__tests__/helpers.unit.spec.d.ts +1 -0
- package/.medusa/server/src/api/admin/integrations/__tests__/helpers.unit.spec.js +30 -0
- package/.medusa/server/src/api/admin/integrations/_helpers.d.ts +3 -3
- package/.medusa/server/src/api/admin/integrations/_helpers.js +8 -8
- package/.medusa/server/src/api/admin/integrations/catalog/route.d.ts +3 -0
- package/.medusa/server/src/api/admin/integrations/catalog/route.js +10 -0
- package/.medusa/server/src/api/admin/integrations/middlewares.js +16 -1
- package/.medusa/server/src/api/admin/integrations/route.js +17 -3
- package/.medusa/server/src/api/admin/integrations/validators.d.ts +7 -0
- package/.medusa/server/src/api/admin/integrations/validators.js +8 -2
- package/.medusa/server/src/index.d.ts +1 -1
- package/.medusa/server/src/jobs/__tests__/test-integration-connections.unit.spec.d.ts +1 -0
- package/.medusa/server/src/jobs/__tests__/test-integration-connections.unit.spec.js +27 -0
- package/.medusa/server/src/jobs/test-integration-connections.d.ts +7 -0
- package/.medusa/server/src/jobs/test-integration-connections.js +21 -8
- package/.medusa/server/src/lib/__tests__/catalog-fallback.unit.spec.d.ts +1 -0
- package/.medusa/server/src/lib/__tests__/catalog-fallback.unit.spec.js +37 -0
- package/.medusa/server/src/lib/__tests__/catalog.unit.spec.d.ts +1 -0
- package/.medusa/server/src/lib/__tests__/catalog.unit.spec.js +71 -0
- package/.medusa/server/src/lib/catalog.d.ts +9 -0
- package/.medusa/server/src/lib/catalog.generated.d.ts +2 -0
- package/.medusa/server/src/lib/catalog.generated.js +88 -0
- package/.medusa/server/src/lib/catalog.js +55 -0
- package/.medusa/server/src/modules/integration/descriptor/__tests__/build-zod.unit.spec.js +43 -1
- package/.medusa/server/src/modules/integration/descriptor/__tests__/define.unit.spec.js +3 -3
- package/.medusa/server/src/modules/integration/descriptor/__tests__/introspect.unit.spec.js +3 -3
- package/.medusa/server/src/modules/integration/descriptor/__tests__/section-write.unit.spec.d.ts +1 -0
- package/.medusa/server/src/modules/integration/descriptor/__tests__/section-write.unit.spec.js +64 -0
- package/.medusa/server/src/modules/integration/descriptor/__tests__/validate.unit.spec.js +28 -2
- package/.medusa/server/src/modules/integration/descriptor/build-zod.js +7 -1
- package/.medusa/server/src/modules/integration/descriptor/define.d.ts +5 -5
- package/.medusa/server/src/modules/integration/descriptor/define.js +1 -1
- package/.medusa/server/src/modules/integration/descriptor/introspect.js +2 -2
- package/.medusa/server/src/modules/integration/descriptor/meta.d.ts +1 -1
- package/.medusa/server/src/modules/integration/descriptor/section-write.d.ts +10 -0
- package/.medusa/server/src/modules/integration/descriptor/section-write.js +24 -0
- package/.medusa/server/src/modules/integration/loaders/__tests__/package-meta.unit.spec.d.ts +1 -0
- package/.medusa/server/src/modules/integration/loaders/__tests__/package-meta.unit.spec.js +63 -0
- package/.medusa/server/src/modules/integration/loaders/load-providers.js +10 -38
- package/.medusa/server/src/modules/integration/loaders/package-meta.d.ts +22 -0
- package/.medusa/server/src/modules/integration/loaders/package-meta.js +45 -0
- package/.medusa/server/src/modules/integration/loaders/resolve-package-meta.d.ts +8 -0
- package/.medusa/server/src/modules/integration/loaders/resolve-package-meta.js +59 -0
- package/.medusa/server/src/modules/integration/migrations/Migration20260720130920.d.ts +5 -0
- package/.medusa/server/src/modules/integration/migrations/Migration20260720130920.js +18 -0
- package/.medusa/server/src/modules/integration/migrations/Migration20260724101525.d.ts +5 -0
- package/.medusa/server/src/modules/integration/migrations/Migration20260724101525.js +16 -0
- package/.medusa/server/src/modules/integration/models/integration.d.ts +9 -5
- package/.medusa/server/src/modules/integration/models/integration.js +3 -3
- package/.medusa/server/src/modules/integration/services/__tests__/integration-module.unit.spec.d.ts +1 -0
- package/.medusa/server/src/modules/integration/services/__tests__/integration-module.unit.spec.js +344 -0
- package/.medusa/server/src/modules/integration/services/__tests__/integration-provider.unit.spec.js +2 -2
- package/.medusa/server/src/modules/integration/services/integration-module.d.ts +48 -11
- package/.medusa/server/src/modules/integration/services/integration-module.js +56 -6
- package/.medusa/server/src/modules/integration/types/index.d.ts +11 -0
- package/.medusa/server/src/modules/integration/types/index.js +4 -2
- package/.medusa/server/src/modules/integration/utils/integration.d.ts +11 -7
- package/.medusa/server/src/modules/integration/utils/integration.js +12 -8
- package/.medusa/server/src/subscribers/__tests__/invalidate-options-cache.unit.spec.d.ts +1 -0
- package/.medusa/server/src/subscribers/__tests__/invalidate-options-cache.unit.spec.js +53 -0
- package/.medusa/server/src/types/http/integration/admin/entities.d.ts +39 -4
- package/.medusa/server/src/types/http/integration/admin/responses.d.ts +17 -2
- package/.medusa/server/src/types/integration/common.d.ts +3 -3
- package/.medusa/server/src/workflows/integration/steps/apply-integration-section.d.ts +1 -1
- package/.medusa/server/src/workflows/integration/steps/apply-integration-section.js +13 -20
- package/.medusa/server/src/workflows/integration/steps/set-integration-enabled.d.ts +1 -1
- package/.medusa/server/src/workflows/integration/steps/upsert-integration-record.d.ts +2 -2
- package/.medusa/server/src/workflows/integration/workflows/set-integration-enabled.d.ts +1 -1
- package/.medusa/server/src/workflows/integration/workflows/upsert-integration.js +2 -2
- package/README.md +41 -2
- package/README.ru.md +85 -0
- package/package.json +7 -3
package/.medusa/server/src/modules/integration/services/__tests__/integration-module.unit.spec.js
ADDED
|
@@ -0,0 +1,344 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const globals_1 = require("@jest/globals");
|
|
7
|
+
const integration_module_1 = __importDefault(require("../integration-module"));
|
|
8
|
+
const define_1 = require("../../descriptor/define");
|
|
9
|
+
const catalog_1 = require("../../../../lib/catalog");
|
|
10
|
+
// A representative descriptor: one plain required option, one required secret, one defaulted enum.
|
|
11
|
+
const descriptor = (0, define_1.defineIntegration)({
|
|
12
|
+
category: "payment",
|
|
13
|
+
displayName: "d",
|
|
14
|
+
options: {
|
|
15
|
+
apiKey: { type: "string", required: true, minLength: 1, label: "l" },
|
|
16
|
+
secretKey: { type: "string", required: true, minLength: 1, secret: true, label: "l" },
|
|
17
|
+
mode: { type: "enum", values: ["live", "test"], default: "test", label: "l" },
|
|
18
|
+
},
|
|
19
|
+
sections: [{ id: "creds", title: "t", options: ["apiKey", "secretKey", "mode"] }],
|
|
20
|
+
testConnection: async () => ({ status: "passed" }),
|
|
21
|
+
});
|
|
22
|
+
const registration = {
|
|
23
|
+
key: "int_demo",
|
|
24
|
+
identifier: "demo",
|
|
25
|
+
instanceId: null,
|
|
26
|
+
provider: {
|
|
27
|
+
descriptor,
|
|
28
|
+
getIdentifier: () => "demo",
|
|
29
|
+
getInstanceId: () => null,
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
function makeProviderService(regs = [registration]) {
|
|
33
|
+
return {
|
|
34
|
+
listRegistrations: () => regs,
|
|
35
|
+
getRegistration: (k) => regs.find((r) => r.key === k),
|
|
36
|
+
retrieveByKey: (k) => {
|
|
37
|
+
const r = regs.find((reg) => reg.key === k);
|
|
38
|
+
if (!r)
|
|
39
|
+
throw new Error(`Unknown ${k}`);
|
|
40
|
+
return r.provider;
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
function makeService(opts) {
|
|
45
|
+
const rows = opts?.rows ?? [];
|
|
46
|
+
const svc = Object.create(integration_module_1.default.prototype);
|
|
47
|
+
svc.providerService_ = opts?.providerService ?? makeProviderService();
|
|
48
|
+
svc.options_ = opts?.options ?? { encryptionKey: "unit-test-key" };
|
|
49
|
+
svc.packageMeta_ = opts?.packageMeta ?? {};
|
|
50
|
+
svc.cache_ = new Map();
|
|
51
|
+
svc.listIntegrations = globals_1.jest.fn(async (filter = {}) => rows.filter((r) => (filter?.provider_id ? r.provider_id === filter.provider_id : true)));
|
|
52
|
+
svc.createIntegrations = globals_1.jest.fn(async (data) => {
|
|
53
|
+
const row = { id: "int_demo", is_enabled: true, ...data };
|
|
54
|
+
rows.push(row);
|
|
55
|
+
return row;
|
|
56
|
+
});
|
|
57
|
+
svc.updateIntegrations = globals_1.jest.fn(async (data) => {
|
|
58
|
+
const row = rows.find((r) => r.id === data.id);
|
|
59
|
+
if (row)
|
|
60
|
+
Object.assign(row, data);
|
|
61
|
+
return row;
|
|
62
|
+
});
|
|
63
|
+
svc.deleteIntegrations = globals_1.jest.fn(async (id) => {
|
|
64
|
+
const i = rows.findIndex((r) => r.id === id);
|
|
65
|
+
if (i >= 0)
|
|
66
|
+
rows.splice(i, 1);
|
|
67
|
+
});
|
|
68
|
+
svc._rows = rows;
|
|
69
|
+
return svc;
|
|
70
|
+
}
|
|
71
|
+
/** A stored row whose `options` are what `encryptForStorage` would persist for `values`. */
|
|
72
|
+
function storedRow(svc, values, extra) {
|
|
73
|
+
return {
|
|
74
|
+
id: "int_demo",
|
|
75
|
+
provider_id: "int_demo",
|
|
76
|
+
category: "payment",
|
|
77
|
+
title: null,
|
|
78
|
+
is_enabled: true,
|
|
79
|
+
last_test_status: null,
|
|
80
|
+
options: svc.encryptForStorage(descriptor, values),
|
|
81
|
+
...extra,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
(0, globals_1.describe)("IntegrationModuleService — encryption", () => {
|
|
85
|
+
(0, globals_1.it)("encrypts secret options inline (ciphertext, not plaintext) and leaves non-secrets", () => {
|
|
86
|
+
const svc = makeService();
|
|
87
|
+
const stored = svc.encryptForStorage(descriptor, { apiKey: "pub", secretKey: "shh", mode: "live" });
|
|
88
|
+
(0, globals_1.expect)(stored.apiKey).toBe("pub");
|
|
89
|
+
(0, globals_1.expect)(stored.mode).toBe("live");
|
|
90
|
+
(0, globals_1.expect)(stored.secretKey).not.toBe("shh"); // encrypted
|
|
91
|
+
(0, globals_1.expect)(typeof stored.secretKey).toBe("string");
|
|
92
|
+
});
|
|
93
|
+
(0, globals_1.it)("round-trips secrets back to plaintext via getStoredValues", async () => {
|
|
94
|
+
const svc = makeService();
|
|
95
|
+
const row = storedRow(svc, { apiKey: "pub", secretKey: "shh", mode: "test" });
|
|
96
|
+
svc._rows.push(row);
|
|
97
|
+
const values = await svc.getStoredValues("int_demo");
|
|
98
|
+
(0, globals_1.expect)(values).toEqual({ apiKey: "pub", secretKey: "shh", mode: "test" });
|
|
99
|
+
});
|
|
100
|
+
(0, globals_1.it)("getStoredValues returns {} when there is no row", async () => {
|
|
101
|
+
const svc = makeService();
|
|
102
|
+
(0, globals_1.expect)(await svc.getStoredValues("int_demo")).toEqual({});
|
|
103
|
+
});
|
|
104
|
+
(0, globals_1.it)("throws a helpful error when a secret must be encrypted but no key is configured", () => {
|
|
105
|
+
const svc = makeService({ options: {} }); // no encryptionKey
|
|
106
|
+
(0, globals_1.expect)(() => svc.encryptForStorage(descriptor, { apiKey: "pub", secretKey: "shh" })).toThrow(/encryptionKey is required/);
|
|
107
|
+
});
|
|
108
|
+
(0, globals_1.it)("does not require a key when the descriptor has no secrets", () => {
|
|
109
|
+
const noSecrets = (0, define_1.defineIntegration)({
|
|
110
|
+
category: "payment",
|
|
111
|
+
displayName: "d",
|
|
112
|
+
options: { apiKey: { type: "string", label: "l" } },
|
|
113
|
+
sections: [{ id: "s", title: "t", options: ["apiKey"] }],
|
|
114
|
+
});
|
|
115
|
+
const svc = makeService({ options: {} });
|
|
116
|
+
(0, globals_1.expect)(svc.encryptForStorage({ ...noSecrets, identifier: "x", instanceId: null }, { apiKey: "pub" })).toEqual({
|
|
117
|
+
apiKey: "pub",
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
(0, globals_1.describe)("IntegrationModuleService — isComplete", () => {
|
|
122
|
+
(0, globals_1.it)("is false when a required field is missing", () => {
|
|
123
|
+
const svc = makeService();
|
|
124
|
+
const row = storedRow(svc, { apiKey: "pub" }); // secretKey missing
|
|
125
|
+
(0, globals_1.expect)(svc.isComplete(row)).toBe(false);
|
|
126
|
+
});
|
|
127
|
+
(0, globals_1.it)("is true when all required present and defaults fill the rest", () => {
|
|
128
|
+
const svc = makeService();
|
|
129
|
+
const row = storedRow(svc, { apiKey: "pub", secretKey: "shh" }); // mode defaults to "test"
|
|
130
|
+
(0, globals_1.expect)(svc.isComplete(row)).toBe(true);
|
|
131
|
+
});
|
|
132
|
+
(0, globals_1.it)("is false when no provider is registered for the row", () => {
|
|
133
|
+
const svc = makeService({ providerService: makeProviderService([]) });
|
|
134
|
+
(0, globals_1.expect)(svc.isComplete({ provider_id: "int_demo", options: {} })).toBe(false);
|
|
135
|
+
});
|
|
136
|
+
});
|
|
137
|
+
(0, globals_1.describe)("IntegrationModuleService — getResolvedOptions", () => {
|
|
138
|
+
(0, globals_1.it)("throws when the provider_id is not a registered provider", async () => {
|
|
139
|
+
const svc = makeService({ providerService: makeProviderService([]) });
|
|
140
|
+
await (0, globals_1.expect)(svc.getResolvedOptions("demo", null)).rejects.toThrow(/No integration provider registered/);
|
|
141
|
+
});
|
|
142
|
+
(0, globals_1.it)("returns null when there is no stored row", async () => {
|
|
143
|
+
const svc = makeService();
|
|
144
|
+
(0, globals_1.expect)(await svc.getResolvedOptions("demo", null)).toBeNull();
|
|
145
|
+
});
|
|
146
|
+
(0, globals_1.it)("returns null when the row is disabled", async () => {
|
|
147
|
+
const svc = makeService();
|
|
148
|
+
svc._rows.push(storedRow(svc, { apiKey: "pub", secretKey: "shh" }, { is_enabled: false }));
|
|
149
|
+
(0, globals_1.expect)(await svc.getResolvedOptions("demo", null)).toBeNull();
|
|
150
|
+
});
|
|
151
|
+
(0, globals_1.it)("returns null when enabled but the config is incomplete", async () => {
|
|
152
|
+
const svc = makeService();
|
|
153
|
+
svc._rows.push(storedRow(svc, { apiKey: "pub" }, { is_enabled: true })); // secretKey missing
|
|
154
|
+
(0, globals_1.expect)(await svc.getResolvedOptions("demo", null)).toBeNull();
|
|
155
|
+
});
|
|
156
|
+
(0, globals_1.it)("returns decrypted options with defaults applied when enabled and complete", async () => {
|
|
157
|
+
const svc = makeService();
|
|
158
|
+
svc._rows.push(storedRow(svc, { apiKey: "pub", secretKey: "shh" }, { is_enabled: true }));
|
|
159
|
+
const resolved = await svc.getResolvedOptions("demo", null);
|
|
160
|
+
(0, globals_1.expect)(resolved).not.toBeNull();
|
|
161
|
+
(0, globals_1.expect)(resolved.options).toEqual({ apiKey: "pub", secretKey: "shh", mode: "test" });
|
|
162
|
+
(0, globals_1.expect)(resolved.meta).toEqual({ provider_id: "int_demo", category: "payment", is_enabled: true });
|
|
163
|
+
});
|
|
164
|
+
(0, globals_1.it)("serves a cached value within the TTL without hitting the store again", async () => {
|
|
165
|
+
const svc = makeService();
|
|
166
|
+
svc._rows.push(storedRow(svc, { apiKey: "pub", secretKey: "shh" }, { is_enabled: true }));
|
|
167
|
+
await svc.getResolvedOptions("demo", null);
|
|
168
|
+
const callsAfterFirst = svc.listIntegrations.mock.calls.length;
|
|
169
|
+
await svc.getResolvedOptions("demo", null);
|
|
170
|
+
(0, globals_1.expect)(svc.listIntegrations.mock.calls.length).toBe(callsAfterFirst); // no extra store read
|
|
171
|
+
});
|
|
172
|
+
(0, globals_1.it)("clearOptionsCache forces a re-read", async () => {
|
|
173
|
+
const svc = makeService();
|
|
174
|
+
svc._rows.push(storedRow(svc, { apiKey: "pub", secretKey: "shh" }, { is_enabled: true }));
|
|
175
|
+
await svc.getResolvedOptions("demo", null);
|
|
176
|
+
const before = svc.listIntegrations.mock.calls.length;
|
|
177
|
+
svc.clearOptionsCache("int_demo");
|
|
178
|
+
await svc.getResolvedOptions("demo", null);
|
|
179
|
+
(0, globals_1.expect)(svc.listIntegrations.mock.calls.length).toBeGreaterThan(before);
|
|
180
|
+
});
|
|
181
|
+
});
|
|
182
|
+
(0, globals_1.describe)("IntegrationModuleService — runTestConnection", () => {
|
|
183
|
+
(0, globals_1.it)("returns skipped when the descriptor has no testConnection", async () => {
|
|
184
|
+
const noTest = (0, define_1.defineIntegration)({
|
|
185
|
+
category: "payment",
|
|
186
|
+
displayName: "d",
|
|
187
|
+
options: { apiKey: { type: "string", label: "l" } },
|
|
188
|
+
sections: [{ id: "s", title: "t", options: ["apiKey"] }],
|
|
189
|
+
});
|
|
190
|
+
const reg = {
|
|
191
|
+
key: "int_demo",
|
|
192
|
+
identifier: "demo",
|
|
193
|
+
instanceId: null,
|
|
194
|
+
provider: { descriptor: noTest, getIdentifier: () => "demo", getInstanceId: () => null },
|
|
195
|
+
};
|
|
196
|
+
const svc = makeService({ providerService: makeProviderService([reg]) });
|
|
197
|
+
(0, globals_1.expect)(await svc.runTestConnection("int_demo")).toEqual({ status: "skipped", message: "No test configured" });
|
|
198
|
+
});
|
|
199
|
+
(0, globals_1.it)("returns failed 'Not configured' when options don't resolve", async () => {
|
|
200
|
+
const svc = makeService(); // no row → getResolvedOptions null
|
|
201
|
+
const res = await svc.runTestConnection("int_demo");
|
|
202
|
+
(0, globals_1.expect)(res).toEqual({ status: "failed", message: "Not configured" });
|
|
203
|
+
});
|
|
204
|
+
(0, globals_1.it)("returns failed for an unknown provider id without throwing", async () => {
|
|
205
|
+
const svc = makeService({ providerService: makeProviderService([]) });
|
|
206
|
+
const res = await svc.runTestConnection("int_missing");
|
|
207
|
+
(0, globals_1.expect)(res.status).toBe("failed");
|
|
208
|
+
(0, globals_1.expect)(res.message).toMatch(/Unknown integration provider/);
|
|
209
|
+
});
|
|
210
|
+
(0, globals_1.it)("passes through the descriptor's testConnection result on success", async () => {
|
|
211
|
+
const svc = makeService();
|
|
212
|
+
svc._rows.push(storedRow(svc, { apiKey: "pub", secretKey: "shh" }, { is_enabled: true }));
|
|
213
|
+
(0, globals_1.expect)(await svc.runTestConnection("int_demo")).toEqual({ status: "passed" });
|
|
214
|
+
});
|
|
215
|
+
});
|
|
216
|
+
(0, globals_1.describe)("IntegrationModuleService — listIntegrationsOverview", () => {
|
|
217
|
+
(0, globals_1.it)("lists a registered-but-unconfigured provider", async () => {
|
|
218
|
+
const svc = makeService();
|
|
219
|
+
const { integrations } = await svc.listIntegrationsOverview();
|
|
220
|
+
const [item] = integrations;
|
|
221
|
+
(0, globals_1.expect)(item).toMatchObject({
|
|
222
|
+
provider_id: "int_demo",
|
|
223
|
+
identifier: "demo",
|
|
224
|
+
is_configured: false,
|
|
225
|
+
is_enabled: false,
|
|
226
|
+
is_complete: false,
|
|
227
|
+
has_test_connection: true,
|
|
228
|
+
last_test_status: null,
|
|
229
|
+
});
|
|
230
|
+
});
|
|
231
|
+
(0, globals_1.it)("reflects a configured + complete + enabled row", async () => {
|
|
232
|
+
const svc = makeService();
|
|
233
|
+
svc._rows.push(storedRow(svc, { apiKey: "pub", secretKey: "shh" }, { is_enabled: true, last_test_status: "passed" }));
|
|
234
|
+
const { integrations } = await svc.listIntegrationsOverview();
|
|
235
|
+
const [item] = integrations;
|
|
236
|
+
(0, globals_1.expect)(item).toMatchObject({
|
|
237
|
+
is_configured: true,
|
|
238
|
+
is_enabled: true,
|
|
239
|
+
is_complete: true,
|
|
240
|
+
last_test_status: "passed",
|
|
241
|
+
});
|
|
242
|
+
});
|
|
243
|
+
(0, globals_1.it)("includes package meta (version/author/author_url) and descriptor description", async () => {
|
|
244
|
+
const withDesc = (0, define_1.defineIntegration)({
|
|
245
|
+
category: "payment",
|
|
246
|
+
displayName: "d",
|
|
247
|
+
description: "demo.desc",
|
|
248
|
+
options: { apiKey: { type: "string", label: "l" } },
|
|
249
|
+
sections: [{ id: "s", title: "t", options: ["apiKey"] }],
|
|
250
|
+
});
|
|
251
|
+
const reg = {
|
|
252
|
+
key: "int_demo",
|
|
253
|
+
identifier: "demo",
|
|
254
|
+
instanceId: null,
|
|
255
|
+
provider: { descriptor: withDesc, getIdentifier: () => "demo", getInstanceId: () => null },
|
|
256
|
+
};
|
|
257
|
+
const svc = makeService({
|
|
258
|
+
providerService: makeProviderService([reg]),
|
|
259
|
+
packageMeta: { demo: { name: "@gorgo/demo", version: "1.2.3", author: "Gorgo", authorUrl: "https://gorgo.dev" } },
|
|
260
|
+
});
|
|
261
|
+
const { integrations } = await svc.listIntegrationsOverview();
|
|
262
|
+
(0, globals_1.expect)(integrations[0]).toMatchObject({
|
|
263
|
+
description: "demo.desc",
|
|
264
|
+
version: "1.2.3",
|
|
265
|
+
author: "Gorgo",
|
|
266
|
+
author_url: "https://gorgo.dev",
|
|
267
|
+
});
|
|
268
|
+
});
|
|
269
|
+
(0, globals_1.it)("filters by category and reports the unfiltered categories facet", async () => {
|
|
270
|
+
const pay = { key: "int_pay", identifier: "pay", instanceId: null, provider: { descriptor: { category: "payment", displayName: "p" }, getIdentifier: () => "pay", getInstanceId: () => null } };
|
|
271
|
+
const ful = { key: "int_ful", identifier: "ful", instanceId: null, provider: { descriptor: { category: "fulfillment", displayName: "f" }, getIdentifier: () => "ful", getInstanceId: () => null } };
|
|
272
|
+
const svc = makeService({ providerService: makeProviderService([pay, ful]) });
|
|
273
|
+
const res = await svc.listIntegrationsOverview({ category: "payment" });
|
|
274
|
+
(0, globals_1.expect)(res.integrations.map((i) => i.provider_id)).toEqual(["int_pay"]);
|
|
275
|
+
(0, globals_1.expect)(res.count).toBe(1);
|
|
276
|
+
(0, globals_1.expect)(res.categories.sort()).toEqual(["fulfillment", "payment"]);
|
|
277
|
+
});
|
|
278
|
+
(0, globals_1.it)("filters by q on the identifier", async () => {
|
|
279
|
+
const pay = { key: "int_pay", identifier: "pay", instanceId: null, provider: { descriptor: { category: "payment", displayName: "p" }, getIdentifier: () => "pay", getInstanceId: () => null } };
|
|
280
|
+
const ful = { key: "int_ful", identifier: "ful", instanceId: null, provider: { descriptor: { category: "fulfillment", displayName: "f" }, getIdentifier: () => "ful", getInstanceId: () => null } };
|
|
281
|
+
const svc = makeService({ providerService: makeProviderService([pay, ful]) });
|
|
282
|
+
const res = await svc.listIntegrationsOverview({ q: "FUL" });
|
|
283
|
+
(0, globals_1.expect)(res.integrations.map((i) => i.identifier)).toEqual(["ful"]);
|
|
284
|
+
(0, globals_1.expect)(res.count).toBe(1);
|
|
285
|
+
});
|
|
286
|
+
(0, globals_1.it)("paginates via limit/offset while count reflects the full filtered set", async () => {
|
|
287
|
+
const regs = [1, 2, 3].map((n) => ({
|
|
288
|
+
key: `int_p${n}`, identifier: `p${n}`, instanceId: null,
|
|
289
|
+
provider: { descriptor: { category: "payment", displayName: "p" }, getIdentifier: () => `p${n}`, getInstanceId: () => null },
|
|
290
|
+
}));
|
|
291
|
+
const svc = makeService({ providerService: makeProviderService(regs) });
|
|
292
|
+
const res = await svc.listIntegrationsOverview({ limit: 2, offset: 2 });
|
|
293
|
+
(0, globals_1.expect)(res.count).toBe(3);
|
|
294
|
+
(0, globals_1.expect)(res.integrations).toHaveLength(1);
|
|
295
|
+
(0, globals_1.expect)(res.integrations[0].provider_id).toBe("int_p3");
|
|
296
|
+
});
|
|
297
|
+
});
|
|
298
|
+
(0, globals_1.describe)("IntegrationModuleService — getPackageMeta", () => {
|
|
299
|
+
(0, globals_1.it)("maps the injected package meta for a provider_id (by identifier)", () => {
|
|
300
|
+
const svc = makeService({
|
|
301
|
+
packageMeta: { demo: { name: "@gorgo/demo", version: "1.2.3", author: "Gorgo", authorUrl: "https://gorgo.dev" } },
|
|
302
|
+
});
|
|
303
|
+
(0, globals_1.expect)(svc.getPackageMeta("int_demo")).toEqual({
|
|
304
|
+
version: "1.2.3",
|
|
305
|
+
author: "Gorgo",
|
|
306
|
+
author_url: "https://gorgo.dev",
|
|
307
|
+
});
|
|
308
|
+
});
|
|
309
|
+
(0, globals_1.it)("returns nulls when there is no package meta for the provider", () => {
|
|
310
|
+
const svc = makeService();
|
|
311
|
+
(0, globals_1.expect)(svc.getPackageMeta("int_demo")).toEqual({ version: null, author: null, author_url: null });
|
|
312
|
+
});
|
|
313
|
+
(0, globals_1.it)("returns nulls for an unregistered provider_id", () => {
|
|
314
|
+
const svc = makeService({ providerService: makeProviderService([]) });
|
|
315
|
+
(0, globals_1.expect)(svc.getPackageMeta("int_missing")).toEqual({ version: null, author: null, author_url: null });
|
|
316
|
+
});
|
|
317
|
+
});
|
|
318
|
+
(0, globals_1.describe)("IntegrationModuleService — getCatalog", () => {
|
|
319
|
+
const realFetch = global.fetch;
|
|
320
|
+
(0, globals_1.beforeEach)(() => {
|
|
321
|
+
(0, catalog_1.resetCatalogCacheForTests)();
|
|
322
|
+
global.fetch = globals_1.jest.fn().mockRejectedValue(new Error("offline"));
|
|
323
|
+
});
|
|
324
|
+
(0, globals_1.afterEach)(() => {
|
|
325
|
+
global.fetch = realFetch;
|
|
326
|
+
});
|
|
327
|
+
(0, globals_1.it)("marks a catalog entry installed when a provider with that identifier is registered", async () => {
|
|
328
|
+
const reg = {
|
|
329
|
+
key: "int_tkassa", identifier: "tkassa", instanceId: null,
|
|
330
|
+
provider: { descriptor: { category: "payment", displayName: "T" }, getIdentifier: () => "tkassa", getInstanceId: () => null },
|
|
331
|
+
};
|
|
332
|
+
const svc = makeService({ providerService: makeProviderService([reg]) });
|
|
333
|
+
const catalog = await svc.getCatalog();
|
|
334
|
+
(0, globals_1.expect)(catalog.find((c) => c.integrationId === "tkassa")).toMatchObject({ installed: true, provider_id: "int_tkassa" });
|
|
335
|
+
(0, globals_1.expect)(catalog.find((c) => c.integrationId === "1c")).toMatchObject({ installed: false, provider_id: null });
|
|
336
|
+
});
|
|
337
|
+
(0, globals_1.it)("returns the whole catalog with installed=false when nothing matches", async () => {
|
|
338
|
+
const svc = makeService(); // default registration identifier "demo" — no catalog match
|
|
339
|
+
const catalog = await svc.getCatalog();
|
|
340
|
+
(0, globals_1.expect)(catalog.length).toBeGreaterThanOrEqual(5);
|
|
341
|
+
(0, globals_1.expect)(catalog.every((c) => c.installed === false && c.provider_id === null)).toBe(true);
|
|
342
|
+
});
|
|
343
|
+
});
|
|
344
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWdyYXRpb24tbW9kdWxlLnVuaXQuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL2ludGVncmF0aW9uL3NlcnZpY2VzL19fdGVzdHNfXy9pbnRlZ3JhdGlvbi1tb2R1bGUudW5pdC5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsMkNBQWlGO0FBQ2pGLCtFQUE0RDtBQUM1RCxvREFBMkQ7QUFDM0QscURBQW1FO0FBRW5FLG1HQUFtRztBQUNuRyxNQUFNLFVBQVUsR0FBRyxJQUFBLDBCQUFpQixFQUFDO0lBQ25DLFFBQVEsRUFBRSxTQUFTO0lBQ25CLFdBQVcsRUFBRSxHQUFHO0lBQ2hCLE9BQU8sRUFBRTtRQUNQLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUU7UUFDcEUsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFO1FBQ3JGLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRTtLQUM5RTtJQUNELFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztJQUNqRixjQUFjLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLFFBQWlCLEVB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
|
package/.medusa/server/src/modules/integration/services/__tests__/integration-provider.unit.spec.js
CHANGED
|
@@ -12,7 +12,7 @@ const mkProvider = (identifier, instanceId, withTest = false) => {
|
|
|
12
12
|
getInstanceId: () => instanceId,
|
|
13
13
|
get descriptor() {
|
|
14
14
|
return {
|
|
15
|
-
|
|
15
|
+
category: "payment",
|
|
16
16
|
displayName: `${identifier}.name`,
|
|
17
17
|
options: {},
|
|
18
18
|
sections: [],
|
|
@@ -75,4 +75,4 @@ const makeRegistry = () => new integration_provider_1.default({
|
|
|
75
75
|
(0, globals_1.expect)(ds.find((d) => d.identifier === "tkassa").instanceId).toBe(null);
|
|
76
76
|
});
|
|
77
77
|
});
|
|
78
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWdyYXRpb24tcHJvdmlkZXIudW5pdC5zcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvaW50ZWdyYXRpb24vc2VydmljZXMvX190ZXN0c19fL2ludGVncmF0aW9uLXByb3ZpZGVyLnVuaXQuc3BlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDJDQUFvRDtBQUNwRCxtRkFBZ0U7QUFFaEUsMkZBQTJGO0FBQzNGLE1BQU0sVUFBVSxHQUFHLENBQUMsVUFBa0IsRUFBRSxVQUF5QixFQUFFLFFBQVEsR0FBRyxLQUFLLEVBQUUsRUFBRTtJQUNyRixNQUFNLENBQUMsR0FBUTtRQUNiLGFBQWEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxVQUFVO1FBQy9CLGFBQWEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxVQUFVO1FBQy9CLElBQUksVUFBVTtZQUNaLE9BQU87Z0JBQ0wsUUFBUSxFQUFFLFNBQVM7Z0JBQ25CLFdBQVcsRUFBRSxHQUFHLFVBQVUsT0FBTztnQkFDakMsT0FBTyxFQUFFLEVBQUU7Z0JBQ1gsUUFBUSxFQUFFLEVBQUU7Z0JBQ1osR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxjQUFjLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2FBQzVFLENBQUE7UUFDSCxDQUFDO0tBQ0YsQ0FBQTtJQUNELE9BQU8sQ0FBQyxDQUFBO0FBQ1YsQ0FBQyxDQUFBO0FBRUQsMEVBQTBFO0FBQzFFLE1BQU0sWUFBWSxHQUFHLEdBQUcsRUFBRSxDQUN4QixJQUFJLDhCQUEwQixDQUFDO0lBQzdCLFVBQVUsRUFBRSxVQUFVLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQztJQUN0QyxjQUFjLEVBQUUsVUFBVSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFB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
|
|
@@ -2,34 +2,51 @@ import { Logger } from "@medusajs/framework/types";
|
|
|
2
2
|
import IntegrationProviderService from "./integration-provider";
|
|
3
3
|
import type { IntegrationDescriptor, TestConnectionResult } from "../descriptor/define";
|
|
4
4
|
import { type UiDescriptor } from "../descriptor/introspect";
|
|
5
|
-
import { INTEGRATION_OPTIONS_KEY, type IntegrationModuleOptions } from "../types";
|
|
6
|
-
import type { IntegrationOverviewItem } from "../../../types";
|
|
5
|
+
import { INTEGRATION_OPTIONS_KEY, INTEGRATION_PACKAGE_META_KEY, type IntegrationModuleOptions, type PackageMetaMap } from "../types";
|
|
6
|
+
import type { IntegrationOverviewItem, CatalogItem } from "../../../types";
|
|
7
|
+
import type { CategoryKind } from "../../../types/integration";
|
|
7
8
|
type InjectedDependencies = {
|
|
8
9
|
logger?: Logger;
|
|
9
10
|
integrationProviderService: IntegrationProviderService;
|
|
10
11
|
[INTEGRATION_OPTIONS_KEY]?: IntegrationModuleOptions;
|
|
12
|
+
[INTEGRATION_PACKAGE_META_KEY]?: PackageMetaMap;
|
|
11
13
|
};
|
|
12
14
|
export type ResolvedOptions = {
|
|
13
15
|
options: Record<string, unknown>;
|
|
14
16
|
meta: {
|
|
15
17
|
provider_id: string;
|
|
16
|
-
|
|
18
|
+
category: string | null;
|
|
17
19
|
is_enabled: boolean;
|
|
18
20
|
};
|
|
19
21
|
};
|
|
22
|
+
export type IntegrationOverviewQuery = {
|
|
23
|
+
q?: string;
|
|
24
|
+
category?: string;
|
|
25
|
+
limit?: number;
|
|
26
|
+
offset?: number;
|
|
27
|
+
};
|
|
28
|
+
export type IntegrationOverviewResult = {
|
|
29
|
+
integrations: IntegrationOverviewItem[];
|
|
30
|
+
count: number;
|
|
31
|
+
categories: CategoryKind[];
|
|
32
|
+
};
|
|
20
33
|
declare const IntegrationModuleService_base: import("@medusajs/framework/utils").MedusaServiceReturnType<import("@medusajs/framework/utils").ModelConfigurationsToConfigTemplate<{
|
|
21
34
|
readonly Integration: import("@medusajs/framework/utils").DmlEntity<import("@medusajs/framework/utils").DMLEntitySchemaBuilder<{
|
|
22
35
|
id: import("@medusajs/framework/utils").PrimaryKeyModifier<string, import("@medusajs/framework/utils").IdProperty>;
|
|
23
|
-
|
|
36
|
+
category: import("@medusajs/framework/utils").EnumProperty<{
|
|
24
37
|
readonly PAYMENT: "payment";
|
|
38
|
+
readonly NOTIFICATION: "notification";
|
|
25
39
|
readonly FULFILLMENT: "fulfillment";
|
|
26
|
-
readonly
|
|
27
|
-
readonly
|
|
40
|
+
readonly SEARCH: "search";
|
|
41
|
+
readonly CONTENT: "content";
|
|
42
|
+
readonly ANALYTICS: "analytics";
|
|
43
|
+
readonly AUTHENTICATION: "authentication";
|
|
28
44
|
readonly ERP: "erp";
|
|
45
|
+
readonly CRM: "crm";
|
|
29
46
|
readonly PIM: "pim";
|
|
30
|
-
readonly
|
|
47
|
+
readonly MARKETPLACE: "marketplace";
|
|
31
48
|
readonly FEED: "feed";
|
|
32
|
-
readonly
|
|
49
|
+
readonly FILE_PROVIDERS: "file_providers";
|
|
33
50
|
readonly OTHER: "other";
|
|
34
51
|
}>;
|
|
35
52
|
provider_id: import("@medusajs/framework/utils").TextProperty;
|
|
@@ -46,6 +63,7 @@ declare const IntegrationModuleService_base: import("@medusajs/framework/utils")
|
|
|
46
63
|
export default class IntegrationModuleService extends IntegrationModuleService_base {
|
|
47
64
|
protected providerService_: IntegrationProviderService;
|
|
48
65
|
protected options_: IntegrationModuleOptions;
|
|
66
|
+
protected packageMeta_: PackageMetaMap;
|
|
49
67
|
protected cache_: Map<string, {
|
|
50
68
|
value: ResolvedOptions | null;
|
|
51
69
|
expiresAt: number;
|
|
@@ -66,7 +84,7 @@ export default class IntegrationModuleService extends IntegrationModuleService_b
|
|
|
66
84
|
*/
|
|
67
85
|
findByProviderId(providerId: string): Promise<{
|
|
68
86
|
id: string;
|
|
69
|
-
|
|
87
|
+
category: "search" | "payment" | "notification" | "fulfillment" | "content" | "analytics" | "authentication" | "erp" | "crm" | "pim" | "marketplace" | "feed" | "file_providers" | "other";
|
|
70
88
|
provider_id: string;
|
|
71
89
|
title: string | null;
|
|
72
90
|
options: Record<string, unknown>;
|
|
@@ -92,14 +110,33 @@ export default class IntegrationModuleService extends IntegrationModuleService_b
|
|
|
92
110
|
protected assembleValues(record: any): Record<string, unknown>;
|
|
93
111
|
/**
|
|
94
112
|
* Admin overview: every declared instance (registration) merged with its current row
|
|
95
|
-
* state
|
|
113
|
+
* state, then filtered + paginated server-side. `categories` is the UNFILTERED facet so
|
|
114
|
+
* the UI's tab bar stays stable while a tab is active. No secrets.
|
|
96
115
|
*/
|
|
97
|
-
listIntegrationsOverview(): Promise<
|
|
116
|
+
listIntegrationsOverview(query?: IntegrationOverviewQuery): Promise<IntegrationOverviewResult>;
|
|
98
117
|
/**
|
|
99
118
|
* Run the connection test against the currently-resolved settings.
|
|
100
119
|
* Delegates to the descriptor's `testConnection` (if it declares one).
|
|
101
120
|
*/
|
|
102
121
|
runTestConnection(providerId: string): Promise<TestConnectionResult>;
|
|
122
|
+
/** Map a provider identifier to its public package-meta fields (snake_case), or nulls. */
|
|
123
|
+
private mapPackageMeta;
|
|
124
|
+
/**
|
|
125
|
+
* Package metadata (version/author) for one `provider_id` — resolved by the registration's
|
|
126
|
+
* `identifier` from the loader-injected map. Feeds the detail page's identity header.
|
|
127
|
+
* Returns nulls when the provider is unregistered or its package wasn't resolvable.
|
|
128
|
+
*/
|
|
129
|
+
getPackageMeta(providerId: string): {
|
|
130
|
+
version: string | null;
|
|
131
|
+
author: string | null;
|
|
132
|
+
author_url: string | null;
|
|
133
|
+
};
|
|
134
|
+
/**
|
|
135
|
+
* The integration catalog (from the live Gorgo catalog API via loadCatalog(), with an offline fallback) merged with local install state: each entry gets
|
|
136
|
+
* `installed`/`provider_id` by matching its `integrationId` to a registered provider's
|
|
137
|
+
* `identifier`. 1c is a plain module (not an integration provider) → always not installed.
|
|
138
|
+
*/
|
|
139
|
+
getCatalog(): Promise<CatalogItem[]>;
|
|
103
140
|
/** The configured passphrase (any non-empty string). Throws if missing. */
|
|
104
141
|
protected resolveKey(): string;
|
|
105
142
|
/** The derived 32-byte AES key, computed once from the passphrase. */
|