From 61bc01b7838eaa93322cff4129a3a3f1366b74e0 Mon Sep 17 00:00:00 2001 From: Chris Troutner Date: Tue, 6 Jul 2021 12:23:35 -0700 Subject: [PATCH] ported user route. Still need middleware --- src/controllers/rest-api/index.js | 5 ++ .../rest-api}/users/controller.js | 17 ++++--- src/controllers/rest-api/users/index.js | 17 +++++++ src/controllers/rest-api/users/router.js | 41 +++++++++++++++ src/modules/users/router.js | 50 ------------------- .../{temp => }/a02-users.rest-e2e.js | 2 +- test/unit/rest-api/a02-users.rest-unit.js | 2 +- 7 files changed, 76 insertions(+), 58 deletions(-) rename src/{modules => controllers/rest-api}/users/controller.js (96%) create mode 100644 src/controllers/rest-api/users/index.js create mode 100644 src/controllers/rest-api/users/router.js delete mode 100644 src/modules/users/router.js rename test/e2e/automated/{temp => }/a02-users.rest-e2e.js (99%) diff --git a/src/controllers/rest-api/index.js b/src/controllers/rest-api/index.js index 11f32d7..4bd1e34 100644 --- a/src/controllers/rest-api/index.js +++ b/src/controllers/rest-api/index.js @@ -11,6 +11,7 @@ // const WebhookRESTController = require('./rest/webhook') // const PostWebhook = require('./rest/post-webhook') const AuthRESTController = require('./auth') +const UserRESTController = require('./users') // Load the Clean Architecture Adapters library // const adapters = require('../adapters') @@ -42,6 +43,10 @@ function attachRESTControllers (app) { // Attach the REST API Controllers associated with the /auth route const authRESTController = new AuthRESTController() authRESTController.attach(app) + + // Attach the REST API Controllers associated with the /user route + const userRESTController = new UserRESTController() + userRESTController.attach(app) } // Add the JSON RPC router to the ipfs-coord adapter. diff --git a/src/modules/users/controller.js b/src/controllers/rest-api/users/controller.js similarity index 96% rename from src/modules/users/controller.js rename to src/controllers/rest-api/users/controller.js index 4f569a8..b9d9295 100644 --- a/src/modules/users/controller.js +++ b/src/controllers/rest-api/users/controller.js @@ -1,16 +1,21 @@ +/* + REST API Controller library for the /user route +*/ + // User database model. -const User = require('../../models/users') +const UserModel = require('../../../models/users') // User library for business logic. -const UserLib = require('../../lib/users') +const UserLib = require('../../../lib/users') -const wlogger = require('../../lib/wlogger') +const wlogger = require('../../../lib/wlogger') let _this -class UserController { + +class UserRESTControllerLib { constructor () { // Encapsulate dependencies - this.User = User + this.UserModel = UserModel this.userLib = new UserLib() _this = this @@ -277,4 +282,4 @@ class UserController { } } -module.exports = UserController +module.exports = UserRESTControllerLib diff --git a/src/controllers/rest-api/users/index.js b/src/controllers/rest-api/users/index.js new file mode 100644 index 0000000..dc94afc --- /dev/null +++ b/src/controllers/rest-api/users/index.js @@ -0,0 +1,17 @@ +/* + REST API library for /user route. +*/ + +const UserRESTRouter = require('./router') + +class UserRESTController { + constructor (localConfig = {}) { + this.userRESTRouter = new UserRESTRouter() + } + + attach (app) { + this.userRESTRouter.attachControllers(app) + } +} + +module.exports = UserRESTController diff --git a/src/controllers/rest-api/users/router.js b/src/controllers/rest-api/users/router.js new file mode 100644 index 0000000..785bd75 --- /dev/null +++ b/src/controllers/rest-api/users/router.js @@ -0,0 +1,41 @@ +/* + REST Router for the /user route. +*/ + +// Public npm libraries. +const Router = require('koa-router') + +// Local libraries. +const UserRESTControllerLib = require('./controller') + +class UserRESTRouter { + constructor (localConfig = {}) { + // Encapsulate dependencies. + this.userRESTController = new UserRESTControllerLib() + + // Instantiate the router and set the base route. + const baseUrl = '/users' + this.router = new Router({ prefix: baseUrl }) + } + + attachControllers (app) { + if (!app) { + throw new Error( + 'Must pass app object when attaching REST API controllers.' + ) + } + + // Define the routes and attach the controller. + this.router.post('/', this.userRESTController.createUser) + this.router.get('/', this.userRESTController.getUsers) + this.router.get('/:id', this.userRESTController.getUsers) + this.router.put('/', this.userRESTController.updateUser) + this.router.delete('/', this.userRESTController.deleteUser) + + // Attach the Controller routes to the Koa app. + app.use(this.router.routes()) + app.use(this.router.allowedMethods()) + } +} + +module.exports = UserRESTRouter diff --git a/src/modules/users/router.js b/src/modules/users/router.js deleted file mode 100644 index 20d4869..0000000 --- a/src/modules/users/router.js +++ /dev/null @@ -1,50 +0,0 @@ -const VALIDATOR = require('../../middleware/validators') -const validator = new VALIDATOR() - -const CONTROLLER = require('./controller') -const controller = new CONTROLLER() - -// export const baseUrl = '/users' -module.exports.baseUrl = '/users' - -module.exports.routes = [ - { - method: 'POST', - route: '/', - handlers: [controller.createUser] - }, - { - method: 'GET', - route: '/', - handlers: [ - validator.ensureUser, - controller.getUsers - ] - }, - { - method: 'GET', - route: '/:id', - handlers: [ - validator.ensureUser, - controller.getUser - ] - }, - { - method: 'PUT', - route: '/:id', - handlers: [ - validator.ensureTargetUserOrAdmin, - controller.getUser, - controller.updateUser - ] - }, - { - method: 'DELETE', - route: '/:id', - handlers: [ - validator.ensureTargetUserOrAdmin, - controller.getUser, - controller.deleteUser - ] - } -] diff --git a/test/e2e/automated/temp/a02-users.rest-e2e.js b/test/e2e/automated/a02-users.rest-e2e.js similarity index 99% rename from test/e2e/automated/temp/a02-users.rest-e2e.js rename to test/e2e/automated/a02-users.rest-e2e.js index 5ecea89..8fcbef0 100644 --- a/test/e2e/automated/temp/a02-users.rest-e2e.js +++ b/test/e2e/automated/a02-users.rest-e2e.js @@ -11,7 +11,7 @@ const LOCALHOST = `http://localhost:${config.port}` const context = {} -const UserController = require('../../../src/modules/users/controller') +const UserController = require('../../../src/controllers/rest-api/users/controller') let uut let sandbox diff --git a/test/unit/rest-api/a02-users.rest-unit.js b/test/unit/rest-api/a02-users.rest-unit.js index 0ec57b2..ef87e32 100644 --- a/test/unit/rest-api/a02-users.rest-unit.js +++ b/test/unit/rest-api/a02-users.rest-unit.js @@ -12,7 +12,7 @@ const config = require('../../../config') const testUtils = require('../../utils/test-utils') const User = require('../../../src/models/users') -const UserController = require('../../../src/modules/users/controller') +const UserController = require('../../../src/controllers/rest-api/users/controller') let uut let sandbox let ctx