From da1fbd4d9ee3e1e0621046d39010ea41b1454cb9 Mon Sep 17 00:00:00 2001 From: Sergey Peshkov Date: Thu, 6 Feb 2020 17:39:21 +0300 Subject: [PATCH] feat(test): testing user details --- middlewares/generic.js | 6 +-- test/api/users-details.test.js | 85 ++++++++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+), 3 deletions(-) create mode 100644 test/api/users-details.test.js diff --git a/middlewares/generic.js b/middlewares/generic.js index c3b7ac65..3b8683df 100644 --- a/middlewares/generic.js +++ b/middlewares/generic.js @@ -9,7 +9,7 @@ const { Circle, AccessToken } = require('../models'); - +const { Sequelize } = require('../lib/sequelize'); const packageInfo = require('../package'); exports.maybeAuthorize = async (req, res, next) => { @@ -65,7 +65,7 @@ exports.fetchUser = async (req, res, next) => { } // searching the user by url - let where = { url: req.params.user_id }; + let where = { username: { [Sequelize.Op.iLike]: req.params.user_id } }; // searching the user by id if it's numeric if (helpers.isNumber(req.params.user_id)) { @@ -74,7 +74,7 @@ exports.fetchUser = async (req, res, next) => { const user = await User.findOne({ where }); if (!user) { - return errors.makeNotFoundError(req, 'User is not found.'); + return errors.makeNotFoundError(res, 'User is not found.'); } req.currentUser = user; diff --git a/test/api/users-details.test.js b/test/api/users-details.test.js new file mode 100644 index 00000000..35a481a7 --- /dev/null +++ b/test/api/users-details.test.js @@ -0,0 +1,85 @@ +const { startServer, stopServer } = require('../../lib/server.js'); +const { request } = require('../scripts/helpers'); +const generator = require('../scripts/generator'); + +describe('User details', () => { + beforeAll(async () => { + await startServer(); + }); + + afterAll(async () => { + await stopServer(); + }); + + afterEach(async () => { + await generator.clearAll(); + }); + + test('should return 404 if the user is not found', async () => { + const user = await generator.createUser({ username: 'test', mail_confirmed_at: new Date() }); + const token = await generator.createAccessToken({}, user); + + const res = await request({ + uri: '/members/1337', + method: 'GET', + headers: { 'X-Auth-Token': token.value } + }); + + expect(res.statusCode).toEqual(404); + expect(res.body.success).toEqual(false); + expect(res.body).not.toHaveProperty('data'); + expect(res.body).toHaveProperty('message'); + }); + + test('should find the user by username', async () => { + const user = await generator.createUser({ username: 'test', mail_confirmed_at: new Date() }); + const token = await generator.createAccessToken({}, user); + + const res = await request({ + uri: '/members/test', + method: 'GET', + headers: { 'X-Auth-Token': token.value } + }); + + expect(res.statusCode).toEqual(200); + expect(res.body.success).toEqual(true); + expect(res.body).toHaveProperty('data'); + expect(res.body).not.toHaveProperty('errors'); + expect(res.body.data.id).toEqual(user.id); + }); + + test('should find the user by username case-insensitive', async () => { + const user = await generator.createUser({ username: 'test', mail_confirmed_at: new Date() }); + const token = await generator.createAccessToken({}, user); + + const res = await request({ + uri: '/members/TEST', + method: 'GET', + headers: { 'X-Auth-Token': token.value } + }); + + expect(res.statusCode).toEqual(200); + expect(res.body.success).toEqual(true); + expect(res.body).toHaveProperty('data'); + expect(res.body).not.toHaveProperty('errors'); + expect(res.body.data.id).toEqual(user.id); + }); + + + test('should find the user by id', async () => { + const user = await generator.createUser({ mail_confirmed_at: new Date() }); + const token = await generator.createAccessToken({}, user); + + const res = await request({ + uri: '/members/' + user.id, + method: 'GET', + headers: { 'X-Auth-Token': token.value } + }); + + expect(res.statusCode).toEqual(200); + expect(res.body.success).toEqual(true); + expect(res.body).toHaveProperty('data'); + expect(res.body).not.toHaveProperty('errors'); + expect(res.body.data.id).toEqual(user.id); + }); +});