@ondc/automation-mock-runner 1.3.27 → 1.3.29
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/lib/configHelper.js
CHANGED
|
@@ -201,7 +201,7 @@ async function getMinifiedCode(base64Code) {
|
|
|
201
201
|
* const config = await generatePlaygroundConfigFromFlowConfig(payloads, flowConfig);
|
|
202
202
|
* ```
|
|
203
203
|
*/
|
|
204
|
-
async function buildConfigFromFlowConfig(payloads, flowConfig, domain, version) {
|
|
204
|
+
async function buildConfigFromFlowConfig(payloads, flowConfig, domain, version, addInputs = true) {
|
|
205
205
|
flowConfig = JSON.parse(JSON.stringify(flowConfig));
|
|
206
206
|
payloads = [...payloads].sort((a, b) => new Date(a.context.timestamp).getTime() -
|
|
207
207
|
new Date(b.context.timestamp).getTime());
|
|
@@ -219,7 +219,7 @@ async function buildConfigFromFlowConfig(payloads, flowConfig, domain, version)
|
|
|
219
219
|
}
|
|
220
220
|
else {
|
|
221
221
|
stepConfig = mockRunner.getDefaultStep(step.type, step.key);
|
|
222
|
-
if (index === 0) {
|
|
222
|
+
if (index === 0 && addInputs) {
|
|
223
223
|
stepConfig.mock.generate = MockRunner_1.MockRunner.encodeBase64(`async function generate(defaultPayload, sessionData) {
|
|
224
224
|
setCityFromInputs(defaultPayload, sessionData.user_inputs);
|
|
225
225
|
return defaultPayload;
|
|
@@ -252,7 +252,7 @@ async function generatePlaygroundConfigFromFlowConfig(payloads, flowConfig) {
|
|
|
252
252
|
return buildConfigFromFlowConfig(payloads, flowConfig, domain, version);
|
|
253
253
|
}
|
|
254
254
|
async function generatePlaygroundConfigFromFlowConfigWithMeta(payloads, flowConfig, domain, version) {
|
|
255
|
-
return buildConfigFromFlowConfig(payloads, flowConfig, domain, version);
|
|
255
|
+
return buildConfigFromFlowConfig(payloads, flowConfig, domain, version, false);
|
|
256
256
|
}
|
|
257
257
|
const cityInputs = {
|
|
258
258
|
id: "ExampleInputId",
|
|
@@ -14,58 +14,45 @@ function validateConfigWithErrors(config) {
|
|
|
14
14
|
return { success: true };
|
|
15
15
|
}
|
|
16
16
|
else {
|
|
17
|
-
return {
|
|
18
|
-
success: false,
|
|
19
|
-
errors: result.error.issues,
|
|
20
|
-
};
|
|
17
|
+
return { success: false, errors: result.error.issues };
|
|
21
18
|
}
|
|
22
19
|
}
|
|
23
20
|
function validateGoodConfig(config) {
|
|
24
21
|
// 1. Validate base schema
|
|
25
22
|
const baseResult = validateConfigWithErrors(config);
|
|
26
23
|
if (!baseResult.success && baseResult.errors) {
|
|
27
|
-
const messages = baseResult.errors.map((e) => `[${e.path.join(".") || "root"}] ${e.message}`);
|
|
28
|
-
throw new errors_1.ValidationError(`
|
|
24
|
+
const messages = baseResult.errors.map((e) => ` • [${e.path.join(".") || "root"}]: ${e.message}`);
|
|
25
|
+
throw new errors_1.ValidationError(`Schema validation failed — ${messages.length} issue(s):\n\n${messages.join("\n")}\n`, messages, { flowId: config?.meta?.flowId });
|
|
29
26
|
}
|
|
30
27
|
const errors = [];
|
|
31
|
-
// 2.
|
|
32
|
-
// Also validate sampleData against jsonSchema when both are present
|
|
28
|
+
// 2. inputs validation
|
|
33
29
|
const ajv = new ajv_1.default();
|
|
34
30
|
config.steps.forEach((step, index) => {
|
|
35
31
|
const { id, sampleData, jsonSchema } = step.mock.inputs;
|
|
32
|
+
const label = `steps[${index}] (action_id: "${step.action_id}")`;
|
|
36
33
|
if (step.mock.inputs !== undefined) {
|
|
37
34
|
if (id === undefined || id === null) {
|
|
38
|
-
errors.push(`
|
|
35
|
+
errors.push(` • ${label}: inputs.id is required when inputs is defined`);
|
|
39
36
|
}
|
|
40
37
|
}
|
|
41
38
|
if (id !== undefined) {
|
|
42
39
|
if (sampleData === undefined || sampleData === null) {
|
|
43
|
-
errors.push(`
|
|
40
|
+
errors.push(` • ${label}: inputs.sampleData is required when inputs.id is set`);
|
|
44
41
|
}
|
|
45
42
|
if (jsonSchema === undefined || jsonSchema === null) {
|
|
46
|
-
errors.push(`
|
|
43
|
+
errors.push(` • ${label}: inputs.jsonSchema is required when inputs.id is set`);
|
|
47
44
|
}
|
|
48
45
|
}
|
|
49
|
-
if (sampleData
|
|
50
|
-
sampleData !== null &&
|
|
51
|
-
jsonSchema !== undefined &&
|
|
52
|
-
jsonSchema !== null) {
|
|
46
|
+
if (sampleData != null && jsonSchema != null) {
|
|
53
47
|
const validate = ajv.compile(jsonSchema);
|
|
54
|
-
|
|
55
|
-
if (!valid && validate.errors) {
|
|
48
|
+
if (!validate(sampleData) && validate.errors) {
|
|
56
49
|
validate.errors.forEach((e) => {
|
|
57
|
-
errors.push(`
|
|
50
|
+
errors.push(` • ${label}: inputs.sampleData${e.instancePath} ${e.message}`);
|
|
58
51
|
});
|
|
59
52
|
}
|
|
60
53
|
}
|
|
61
54
|
});
|
|
62
|
-
// 3. Length of steps must equal length of transaction_history
|
|
63
|
-
// if (config.steps.length !== config.transaction_history.length) {
|
|
64
|
-
// errors.push(
|
|
65
|
-
// `steps length (${config.steps.length}) must equal transaction_history length (${config.transaction_history.length})`,
|
|
66
|
-
// );
|
|
67
|
-
// }
|
|
68
55
|
if (errors.length > 0) {
|
|
69
|
-
throw new errors_1.ValidationError(`Config validation failed
|
|
56
|
+
throw new errors_1.ValidationError(`Config validation failed — ${errors.length} error(s):\n\n${errors.join("\n")}\n`, errors, { flowId: config.meta.flowId });
|
|
70
57
|
}
|
|
71
58
|
}
|