Updated logic to handle when parts of the msg object are changed to strings

This commit is contained in:
Steve Walsh
2021-07-13 16:10:42 +01:00
parent d2a045a237
commit 10771a2019
2 changed files with 75 additions and 13 deletions

View File

@@ -65,6 +65,21 @@ module.exports = class PayloadValidator {
return _.set(object, location, value);
}
/**
* lodash set will always pass but might not actually set the value
* So here we test that it was actually set and use that to confirm we can set
*
* @param {*} object
* @param {*} location
* @returns
*/
canSet(object, location) {
const test = 'test';
let clonedObject = clone(object);
clonedObject = this.setValue(clonedObject, location, test);
return test === this.getValue(clonedObject, location);
}
check(_after) {
let after = _after;
try {
@@ -85,6 +100,10 @@ module.exports = class PayloadValidator {
details,
conversationId: this.conversationId
});
if (!this.canSet(after, location)) {
throw new Error(`Cant set value as ${location} is no longer present in after`);
}
after = this.setValue(after, location, beforeValue);
}
});