From 422e21515c6b85c00f5fcd5cf67185730eec5732 Mon Sep 17 00:00:00 2001 From: Juan Hapes Date: Thu, 2 Dec 2021 17:25:51 -0300 Subject: [PATCH] Using ApiSession to dropDatabase in removed listener --- CHANGELOG.md | 4 ++++ lib/listener-removed.js | 33 +++++++++++++++++++++++---------- package.json | 2 +- tests/listener-removed.js | 6 +++--- 4 files changed, 31 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f2ce95..b725c17 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## [Unreleased] +## [5.2.5] - 2021-12-02 +### Fixed +- `RemovedListener` using ApiSession to make `dropDatabase()` possible + ## [5.2.4] - 2021-12-02 ### Fixed - Now `RemovedListener` uses `event.id` instead of `event.client` diff --git a/lib/listener-removed.js b/lib/listener-removed.js index 4c0350c..327a035 100644 --- a/lib/listener-removed.js +++ b/lib/listener-removed.js @@ -1,5 +1,6 @@ 'use strict'; +const { ApiSession } = require('@janiscommerce/api-session'); const { EventListener } = require('@janiscommerce/event-listener'); const Model = require('@janiscommerce/model'); @@ -21,33 +22,45 @@ module.exports = class ClientRemovedListener extends EventListener { return this._model; } - async process() { + get clientCode() { + return this.eventId; + } - const code = this.eventId; + async process() { - const clientToDrop = await this.model.getBy('code', code, { unique: true }); + await this.setClient(); - if(!clientToDrop) { - this.setCode(404).setBody('Client not found in Service'); + if(!this.client) { + this.setCode(404) + .setBody('Client not found in Service'); return; } await this.dropDatabase(); - await this.removeClient(code); + await this.removeClient(); - return this.postRemovedHook(code); + return this.postRemovedHook(this.clientCode); + } + + async setClient() { + this.client = await this.model.getBy('code', this.clientCode, { unique: true }); } dropDatabase() { - const modelWithSession = this.session.getSessionInstance(Model); + const session = new ApiSession({ + clientId: this.client.id, + clientCode: this.client.code + }, this.client); + + const modelWithSession = session.getSessionInstance(Model); return modelWithSession.dropDatabase(); } - removeClient(code) { - return this.model.remove({ code }); + removeClient() { + return this.model.remove({ code: this.clientCode }); } /** diff --git a/package.json b/package.json index 265c89d..92cd010 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ }, "dependencies": { "@janiscommerce/api": "^6.2.1", - "@janiscommerce/api-session": "^3.1.1", + "@janiscommerce/api-session": "^3.2.0", "@janiscommerce/aws-secrets-manager": "^0.2.0", "@janiscommerce/event-listener": "^3.0.0", "@janiscommerce/lambda": "^3.2.0", diff --git a/tests/listener-removed.js b/tests/listener-removed.js index 077c403..90ade21 100644 --- a/tests/listener-removed.js +++ b/tests/listener-removed.js @@ -113,7 +113,7 @@ describe('Client Removed Listener', async () => { mockModelClient(); - sandbox.stub(ModelClient.prototype, 'getBy').resolves([client]); + sandbox.stub(ModelClient.prototype, 'getBy').resolves(client); sandbox.stub(Model.prototype, 'dropDatabase').rejects(); @@ -135,7 +135,7 @@ describe('Client Removed Listener', async () => { mockModelClient(); - sandbox.stub(ModelClient.prototype, 'getBy').resolves([client]); + sandbox.stub(ModelClient.prototype, 'getBy').resolves(client); sandbox.stub(Model.prototype, 'dropDatabase').resolves(true); @@ -160,7 +160,7 @@ describe('Client Removed Listener', async () => { mockModelClient(); - sandbox.stub(ModelClient.prototype, 'getBy').resolves([client]); + sandbox.stub(ModelClient.prototype, 'getBy').resolves(client); sandbox.stub(Model.prototype, 'dropDatabase').resolves(true);