Skip to content

Commit 927cc11

Browse files
authored
Merge pull request #7 from Mastercard/feature/fix_multiple_encryption_paths
Feature/fix multiple encryption paths
2 parents ba3e515 + d766fff commit 927cc11

File tree

2 files changed

+28
-7
lines changed

2 files changed

+28
-7
lines changed

lib/mcapi/fle/field-level-encryption.js

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -134,13 +134,15 @@ function decrypt(response) {
134134
*/
135135
function encryptBody(path, body) {
136136
let elem = elemFromPath(path.element, body);
137-
let encryptedData = this.crypto.encryptData({data: elem.node});
138-
utils.mutateObjectProperty(path.obj,
139-
encryptedData,
140-
body);
141-
// delete encrypted field if not overridden
142-
if (path.element !== path.obj + "." + this.config.encryptedValueFieldName) {
143-
utils.deleteNode(path.element, body);
137+
if (elem && elem.node){
138+
let encryptedData = this.crypto.encryptData({data: elem.node});
139+
utils.mutateObjectProperty(path.obj,
140+
encryptedData,
141+
body);
142+
// delete encrypted field if not overridden
143+
if (path.element !== path.obj + "." + this.config.encryptedValueFieldName) {
144+
utils.deleteNode(path.element, body);
145+
}
144146
}
145147
}
146148

test/payload-encryption.test.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,25 @@ describe("Payload encryption", () => {
5858
assert.ok(body.encryptedItems.oaepHashingAlgorithm);
5959
});
6060

61+
it("elem not found", () => {
62+
let body = {
63+
itemsToEncrypt: {
64+
first: "first",
65+
second: "second"
66+
},
67+
dontEncrypt: {
68+
text: "just text..."
69+
}
70+
};
71+
encryptBody.call(fle, {
72+
element: "not.found",
73+
obj: "encryptedItems"
74+
}, body);
75+
assert.ok(body.dontEncrypt);
76+
assert.ok(body.itemsToEncrypt);
77+
assert.ok(!body.encryptedItems);
78+
});
79+
6180
it("nested object to encrypt", () => {
6281
let body = {
6382
path: {

0 commit comments

Comments
 (0)