From 75c411c9dfeb30d01a8e9bbd21a40fc1f10d9464 Mon Sep 17 00:00:00 2001 From: skarimo Date: Wed, 19 Nov 2025 10:08:35 -0500 Subject: [PATCH] fix object deserialization for undo actions --- features/support/undo.ts | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/features/support/undo.ts b/features/support/undo.ts index 6223359ef2eb..d98f7b6ae192 100644 --- a/features/support/undo.ts +++ b/features/support/undo.ts @@ -1,13 +1,14 @@ import fs from "fs"; import path from "path"; +import log from "loglevel"; + import { getProperty, pathLookup } from "./templating"; +import { ScenariosModelMappings } from "./scenarios_model_mapping"; import * as datadogApiClient from "../../index"; -import log from "loglevel"; const logger = log.getLogger("testing") logger.setLevel(process.env.DEBUG ? logger.levels.DEBUG : logger.levels.INFO); - interface iOperationParameter { name: string; origin: string; @@ -99,14 +100,19 @@ function buildUndoFor( opts[p.name.toAttributeName()] = pathLookup(dataSource, p.source); } else if (p.template !== undefined) { const data = JSON.parse(p.template.templated(dataSource)); - const param: { [key: string]: any } = {}; - for (const [key, value] of Object.entries(data)) { - param[key.toAttributeName()] = value; - } - opts[p.name.toAttributeName()] = param; + opts[p.name.toAttributeName()] = data; } } + const objectSerializer = getProperty(datadogApiClient, apiVersion).ObjectSerializer; + Object.keys(opts).forEach(key => { + opts[key] = objectSerializer.deserialize( + opts[key], + ScenariosModelMappings[`${apiVersion}.${operationUndo.undo.operationId}`][key].type, + ScenariosModelMappings[`${apiVersion}.${operationUndo.undo.operationId}`][key].format + ) + }); + try { await apiInstance[operationName](opts); } catch (error) {