From 690446b5fd6da37f59fddcb98ddf3e7aefd61ea5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9ry=20Debongnie?= Date: Sun, 2 Jul 2017 09:32:30 +0200 Subject: [PATCH] [FIX] web: protect logged object in mockserver Before this commit, when whe loglevel was set to 2 in the mock server, we simply logged the parameters in the console, then give the same object to the _performRpc route. Most of the time, it is not an issue, but nothing prevents the _performRpc route to modify the args object. And this happens with the /create route, which is very confusing: when we have a breakpoint/debugger in the mock rpc function in a test, we see the correct arguments passed to the function. However, if we look at the arguments in the console, after the end of the test, we see other values (for all fields) in the args.args[0] object. The solution is to simply deep copying everything, so any modification in the mockserver will not affect the logged object. --- addons/web/static/tests/helpers/mock_server.js | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/web/static/tests/helpers/mock_server.js b/addons/web/static/tests/helpers/mock_server.js index 98e5289cf21..cab291ec012 100644 --- a/addons/web/static/tests/helpers/mock_server.js +++ b/addons/web/static/tests/helpers/mock_server.js @@ -94,6 +94,7 @@ var MockServer = Class.extend({ args = JSON.parse(JSON.stringify(args)); if (logLevel === 2) { console.log('%c[rpc] request ' + route, 'color: blue; font-weight: bold;', args); + args = JSON.parse(JSON.stringify(args)); } return this._performRpc(route, args).then(function (result) { var resultString = JSON.stringify(result || false);