Not well handled instance.destroy() server side
Here the error I get when trying to delete an access:
Assertion error: Access.destroy first arg must be the userId.:
[2] Error
[2] at assert (/home/tonio/Code/kresus/build/server/shared/helpers.js:39:59)
[2] at Function.<anonymous> (/home/tonio/Code/kresus/build/server/models/accesses.js:103:29)
[2] at Generator.next (<anonymous>)
[2] at step (/home/tonio/Code/kresus/build/server/models/accesses.js:11:191)
[2] at /home/tonio/Code/kresus/build/server/models/accesses.js:11:437
[2] at new Promise (<anonymous>)
[2] at Function.<anonymous> (/home/tonio/Code/kresus/build/server/models/accesses.js:11:99)
[2] at Function.Access.destroy (/home/tonio/Code/kresus/build/server/models/accesses.js:108:22)
[2] at ClassFromGetModel.Model.destroy (/home/tonio/Code/kresus/node_modules/cozydb/lib/model.js:315:39)
[2] at Promise (/home/tonio/Code/kresus/build/server/helpers.js:149:18)
[2] (node:29808) UnhandledPromiseRejectionWarning
[2] (node:29808) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 2)
[2] (node:29808) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
Note this is due to how cozymodel is done (from npm code):
Model.prototype.destroy = function(callback) {
if (!this.id) {
return callback(NotOnNewModel());
}
return this.constructor.destroy.call(this.constructor, this.id, callback);
};
The fix will be to migrate instance.destroy()
to Model.destroy(userId, instance.id)
. This fix should be applied to all models.
I'll propose a patch.