Skip to content

Commit

Permalink
Add more comprehensive error logging, add JWT_SECRET to github action…
Browse files Browse the repository at this point in the history
…s pipeline (#27)
  • Loading branch information
lyncasterc authored Mar 21, 2024
1 parent 356ae7f commit 97183b8
Show file tree
Hide file tree
Showing 7 changed files with 31 additions and 28 deletions.
2 changes: 2 additions & 0 deletions .github/workflows/pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ jobs:
echo CLOUDINARY_NAME=${{ secrets.CLOUDINARY_NAME }} >> .env
echo CLOUDINARY_API_KEY=${{ secrets.CLOUDINARY_API_KEY }} >> .env
echo CLOUDINARY_API_SECRET=${{ secrets.CLOUDINARY_API_SECRET }} >> .env
echo JWT_SECRET=${{ secrets.JWT_SECRET }} >> .env
- name: npm install
run: npm install
- name: lint
Expand Down Expand Up @@ -58,6 +59,7 @@ jobs:
echo CLOUDINARY_NAME=${{ secrets.CLOUDINARY_NAME }} >> .env
echo CLOUDINARY_API_KEY=${{ secrets.CLOUDINARY_API_KEY }} >> .env
echo CLOUDINARY_API_SECRET=${{ secrets.CLOUDINARY_API_SECRET }} >> .env
echo JWT_SECRET=${{ secrets.JWT_SECRET }} >> .env
npm install
- name: cypress tests
uses: cypress-io/github-action@v2
Expand Down
4 changes: 3 additions & 1 deletion backend/src/app.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import userRouter from './routes/users';
import authRouter from './routes/auth';
import testRouter from './routes/tests';
import likeRouter from './routes/likes';
import { errorHandler } from './utils/middleware';
import { errorHandler, logErrorCodes } from './utils/middleware';

const { NODE_ENV } = process.env;
const app = express();
Expand All @@ -22,6 +22,8 @@ if (NODE_ENV === 'development') {
})();
}

app.use(logErrorCodes);

app.get('/health', (_req, res) => {
res.send('ok');
});
Expand Down
4 changes: 0 additions & 4 deletions backend/src/routes/comments.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ router.get('/', async (req, res, next) => {
return res.send(comments);
} catch (error) {
const errorMessage = logger.getErrorMessage(error);
logger.error(errorMessage);

if (/not found/i.test(errorMessage)) {
return res.status(404).send({ error: errorMessage });
Expand All @@ -51,7 +50,6 @@ router.get('/:parentCommentId', async (req, res, next) => {
return res.send(replies);
} catch (error) {
const errorMessage = logger.getErrorMessage(error);
logger.error(errorMessage);

if (/not found/i.test(errorMessage)) {
return res.status(404).send({ error: errorMessage });
Expand All @@ -77,7 +75,6 @@ router.post('/', authenticator(), async (req, res, next) => {
return res.status(201).end();
} catch (error) {
const errorMessage = logger.getErrorMessage(error);
logger.error(errorMessage);

if (/not found/i.test(errorMessage)) {
return res.status(404).send({ error: errorMessage });
Expand All @@ -100,7 +97,6 @@ router.delete('/:commentId', authenticator(), async (req, res, next) => {
return res.status(204).end();
} catch (error) {
const errorMessage = logger.getErrorMessage(error);
logger.error(errorMessage);

if (/not found/i.test(errorMessage)) {
return res.status(404).send({ error: errorMessage });
Expand Down
13 changes: 0 additions & 13 deletions backend/src/routes/likes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ router.post('/', authenticator(), async (req, res, next) => {
return res.status(201).end();
} catch (error) {
const errorMessage = logger.getErrorMessage(error);
logger.error(errorMessage);

if (/not found/i.test(errorMessage)) {
return res.status(404).send({ error: errorMessage });
Expand All @@ -44,9 +43,6 @@ router.delete('/:entityId', authenticator(), async (req, res, next) => {

return res.status(204).end();
} catch (error) {
const errorMessage = logger.getErrorMessage(error);
logger.error(errorMessage);

return next(error);
}
});
Expand All @@ -59,9 +55,6 @@ router.get('/:entityId/likeCount', async (req, res, next) => {

return res.status(200).send({ likeCount });
} catch (error) {
const errorMessage = logger.getErrorMessage(error);
logger.error(errorMessage);

return next(error);
}
});
Expand All @@ -74,9 +67,6 @@ router.get('/:entityId/likes', async (req, res, next) => {

return res.status(200).send({ likes });
} catch (error) {
const errorMessage = logger.getErrorMessage(error);
logger.error(errorMessage);

return next(error);
}
});
Expand All @@ -90,9 +80,6 @@ router.get('/:entityId/hasLiked', authenticator(), async (req, res, next) => {

return res.status(200).send({ hasLiked });
} catch (error) {
const errorMessage = logger.getErrorMessage(error);
logger.error(errorMessage);

return next(error);
}
});
Expand Down
7 changes: 1 addition & 6 deletions backend/src/routes/posts.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,14 +26,12 @@ router.post('/', authenticator(), async (req, res, next) => {
try {
newPostFields = fieldParsers.proofPostFields(req.body);
} catch (error) {
logger.error(logger.getErrorMessage(error));
return res.status(400).send({ error: logger.getErrorMessage(error) });
}

try {
image = await cloudinary.upload(newPostFields.imageDataUrl);
} catch (error) {
logger.error(logger.getErrorMessage(error));
return res.status(500).send({ error: 'Something went wrong uploading the photo!' });
}

Expand All @@ -46,7 +44,6 @@ router.post('/', authenticator(), async (req, res, next) => {
await user.save();
return res.status(201).send(savedPost);
} catch (error) {
logger.error(logger.getErrorMessage(error));
return next(error);
}
});
Expand All @@ -57,7 +54,6 @@ router.put('/:id', authenticator(), async (req, res, next) => {
try {
if (updatedPostFields.caption) updatedPostFields.caption = parseStringField(updatedPostFields.caption, 'caption');
} catch (error) {
logger.error(logger.getErrorMessage(error));
return res.status(400).send({ error: logger.getErrorMessage(error) });
}

Expand All @@ -70,7 +66,7 @@ router.put('/:id', authenticator(), async (req, res, next) => {
return res.status(200).send(updatedPost);
} catch (error) {
const errorMessage = logger.getErrorMessage(error);
logger.error(errorMessage);

if (errorMessage === 'Unauthorized') return res.status(401).send({ error: errorMessage });

return next(error);
Expand All @@ -83,7 +79,6 @@ router.delete('/:id', authenticator(), async (req, res, next) => {
return res.status(204).end();
} catch (error) {
const errorMessage = logger.getErrorMessage(error);
logger.error(errorMessage);

if (/unauthorized/i.test(errorMessage)) {
return res.status(401).send({ error: errorMessage });
Expand Down
1 change: 0 additions & 1 deletion backend/src/routes/users.ts
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,6 @@ router.put('/:id/follow', authenticator(), async (req, res, next) => {
return res.status(200).end();
} catch (error) {
const errorMessage = logger.getErrorMessage(error);
logger.error(errorMessage);
const errorResponseObj = { error: errorMessage };

if (/user not found/i.test(errorMessage)) return res.status(404).send(errorResponseObj);
Expand Down
28 changes: 25 additions & 3 deletions backend/src/utils/middleware.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,12 @@ export const authenticator = () => (
export const errorHandler = (error: Error, _req: Request, res: Response, next: NextFunction) => {
const errorMessage = logger.getErrorMessage(error);

if (process.env.NODE_ENV !== 'test') {
logger.error(errorMessage);
}
logger.error({
errorMessage,
name: error.name,
message: error.message,
stack: error.stack,
});

if (error.name === 'CastError') {
return res.status(400).send({ error: 'malformatted id' });
Expand All @@ -65,3 +68,22 @@ export const errorHandler = (error: Error, _req: Request, res: Response, next: N

return next(error);
};

export function logErrorCodes(req: Request, res:Response, next: NextFunction) {
const originalSend = res.send.bind(res);

res.send = function logIfError(data) {
if (res.statusCode >= 400) {
logger.error({
method: req.method,
url: req.originalUrl,
statusCode: res.statusCode,
errorMessage: data,
});
}

return originalSend(data);
};

next();
}

0 comments on commit 97183b8

Please sign in to comment.