diff --git a/server/controllers/UserCtl.ts b/server/controllers/UserCtl.ts index 427f348..bbe750a 100644 --- a/server/controllers/UserCtl.ts +++ b/server/controllers/UserCtl.ts @@ -5,16 +5,18 @@ import { StatusCode } from '../util/types'; const UserInstance = new User(); export default class UserCtl { - ok?: boolean - code?: number - async getAll() { try { - const users = await UserInstance.getAllUsers(); + // attempt to get users from database + const users: IUser[] | null = await UserInstance.getAllUsers(); + + // construct controller response const ok: boolean = users !== null; const code: StatusCode = ok ? StatusCode.OK : StatusCode.NotFound; - const data = ok ? users : "No users found."; - return new ControllerResponse(ok, code, data) + const data: IUser[] | string = ok ? users! : "No users found."; + + // send formatted response with either data or informative error message + return new ControllerResponse(ok, code, data) } catch (error: any) { throw new Error(error); } @@ -23,7 +25,7 @@ export default class UserCtl { async post(body: IUser) { try { const response = await UserInstance.post(body); - const ok: boolean = response !== null; + const ok = response !== null; const code = ok ? StatusCode.NewContent : StatusCode.BadRequest const data = ok ? response : "Bad request" return new ControllerResponse(ok, code, data); @@ -35,7 +37,7 @@ export default class UserCtl { async getOne(id: number | string) { try { const user = await UserInstance.getOneByID(id); - const ok: boolean = user !== null; + const ok = user !== null; const code = ok ? StatusCode.OK : StatusCode.NotFound; const data = ok ? user : "User by this ID not found"; return new ControllerResponse(ok, code, data); diff --git a/server/jest/helpers/loginUser.ts b/server/jest/helpers/loginUser.ts new file mode 100644 index 0000000..996359e --- /dev/null +++ b/server/jest/helpers/loginUser.ts @@ -0,0 +1,19 @@ +import request from 'supertest'; + +const agent = request('localhost:8080'); + +export default async function loginUser(auth: { token: any }) { + const onResponse = (err: any, res: any) => { + if (err) throw err; + auth.token = res.body.token; + } + + agent.post('/auth/login') + .send({ + email: "verifieduser@test.com", + password: "verifieduser" + }) + .end(onResponse); + + return auth; +} \ No newline at end of file diff --git a/server/jest/tests/util/loginUser.test.ts b/server/jest/tests/util/loginUser.test.ts new file mode 100644 index 0000000..320d643 --- /dev/null +++ b/server/jest/tests/util/loginUser.test.ts @@ -0,0 +1,13 @@ +import loginUser from "../../helpers/loginUser" + +describe('login user', () => { + let auth = { token: undefined } + beforeAll(async () => { + auth = await loginUser(auth); + }) + + it('authenticates a hard-coded user', () => { + console.log(auth); + expect(auth.token).toBeDefined(); + }) +}) \ No newline at end of file diff --git a/server/routes/recipe.ts b/server/routes/recipe.ts index 2db554f..71bfca8 100644 --- a/server/routes/recipe.ts +++ b/server/routes/recipe.ts @@ -26,7 +26,7 @@ export const recipeRoute = (app: Express) => { const { filterby } = req.query; try { - let result: CtlResponse; + let result: CtlResponse; switch (filterby) { case "allaccessible": // result = await recipectl.getAllAccessible(user.id); diff --git a/server/routes/users.ts b/server/routes/users.ts index 878f6e5..417f3d0 100644 --- a/server/routes/users.ts +++ b/server/routes/users.ts @@ -10,7 +10,7 @@ export const userRoute = (app: Express) => { // get all users router.get('/', async (req, res) => { - const result: CtlResponse = await userCtl.getAll(); + const result: CtlResponse = await userCtl.getAll(); res.status(result.code).send(result.data); })