[web] Make SamlLogHandler.log() calls asynchronous (#17207)

* [web] Refactor exports in ErrorController

* [web] Make SamlLogHandler.log() async

* [web] await for SamlLogHandler.log() in ErrorController

* [web] await for SamlLogHandler.log() in SAMLMiddleware

* [web] await for SamlLogHandler.log() async controllers

* [web] await for SamlLogHandler.log() in SAMLManager

* [web] Remove explicit wait when testing SAML logs

After making the logs asynchronouse the wait
is no longer needed

* [web] Avoid using async with SamlLogHandler.log on callbacks

* Add expressifyErrorHandler to promise-utils

* Tighten assertion in SAMLMiddlewareTests

Co-authored-by: Jakob Ackermann <jakob.ackermann@overleaf.com>

* Updated SamlLogHandler.log to await for promise

---------

Co-authored-by: Jakob Ackermann <jakob.ackermann@overleaf.com>
GitOrigin-RevId: 3645923fae8096a9ba25dc9087f1a36231528569
This commit is contained in:
Miguel Serrano
2024-02-23 09:03:14 +00:00
committed by Copybot
co-authored by Jakob Ackermann
parent 680c9b9570
commit f4454cfe7e
5 changed files with 156 additions and 110 deletions
@@ -29,8 +29,8 @@ describe('SamlLogHandler', function () {
})
describe('with valid data object', function () {
beforeEach(function () {
SamlLogHandler.log(
beforeEach(async function () {
await SamlLogHandler.promises.log(
{
session: { saml: { universityId: providerId } },
sessionID: sessionId,
@@ -54,11 +54,11 @@ describe('SamlLogHandler', function () {
})
describe('when a json stringify error occurs', function () {
beforeEach(function () {
beforeEach(async function () {
const circularRef = {}
circularRef.circularRef = circularRef
SamlLogHandler.log(
await SamlLogHandler.promises.log(
{
session: { saml: { universityId: providerId } },
sessionID: sessionId,
@@ -81,10 +81,13 @@ describe('SamlLogHandler', function () {
})
describe('when logging error occurs', function () {
beforeEach(function () {
samlLog.save = sinon.stub().yields('error')
let err
SamlLogHandler.log(
beforeEach(async function () {
err = new Error()
samlLog.save = sinon.stub().rejects(err)
await SamlLogHandler.promises.log(
{
session: { saml: { universityId: providerId } },
sessionID: sessionId,
@@ -95,7 +98,10 @@ describe('SamlLogHandler', function () {
it('should log error', function () {
this.logger.error.should.have.been.calledOnce.and.calledWithMatch(
{ err: 'error', providerId, sessionId: sessionId.substr(0, 8) },
{
err,
sessionId: sessionId.substr(0, 8),
},
'SamlLog Error'
)
})