Merge pull request #31736 from overleaf/jel-find-group-only-if-domain-confirmed

[web] Only query group with domain capture if domain is confirmed

GitOrigin-RevId: 612a711730b1f090f3e47410fd4ad68df33eca93
This commit is contained in:
Jessica Lawshe
2026-02-26 08:21:33 -06:00
committed by Copybot
parent 0c9382e36a
commit 1efc67ae9b
2 changed files with 47 additions and 11 deletions
@@ -163,18 +163,21 @@ function getUserAffiliations(userId, callback) {
if (body?.length > 0) {
const concurrencyLimit = 10
await promiseMapWithLimit(concurrencyLimit, body, async affiliation => {
const group = (
await Modules.promises.hooks.fire(
'getGroupWithDomainCaptureByV1Id',
affiliation.institution.id
)
)?.[0]
if (affiliation.institution.confirmed) {
// only check groups if domain is confirmed
const group = (
await Modules.promises.hooks.fire(
'getGroupWithDomainCaptureByV1Id',
affiliation.institution.id
)
)?.[0]
if (group) {
affiliation.group = {
_id: group._id,
managedUsersEnabled: Boolean(group.managedUsersEnabled),
domainCaptureEnabled: Boolean(group.domainCaptureEnabled),
if (group) {
affiliation.group = {
_id: group._id,
managedUsersEnabled: Boolean(group.managedUsersEnabled),
domainCaptureEnabled: Boolean(group.domainCaptureEnabled),
}
}
}
@@ -148,6 +148,7 @@ describe('InstitutionsAPI', function () {
foo: 'bar',
institution: {
commonsAccount: true,
confirmed: true,
},
},
]
@@ -173,6 +174,7 @@ describe('InstitutionsAPI', function () {
foo: 'bar',
institution: {
commonsAccount: false,
confirmed: true,
},
},
]
@@ -212,6 +214,37 @@ describe('InstitutionsAPI', function () {
])
})
it('does not query for group with domain capture if domain is not confirmed', async function (ctx) {
const responseBody = [
{
id: '123abc',
foo: 'bar',
institution: {
commonsAccount: false,
confirmed: false,
},
},
]
ctx.request.callsArgWith(1, null, { statusCode: 201 }, responseBody)
const body = await ctx.InstitutionsAPI.promises.getUserAffiliations(
ctx.stubbedUser._id
)
ctx.request.calledOnce.should.equal(true)
const requestOptions = ctx.request.lastCall.args[0]
const expectedUrl = `v1.url/api/v2/users/${ctx.stubbedUser._id}/affiliations`
requestOptions.url.should.equal(expectedUrl)
requestOptions.method.should.equal('GET')
requestOptions.maxAttempts.should.equal(3)
ctx.Modules.promises.hooks.fire.should.not.have.been.called
expect(requestOptions.body).not.to.exist
expect(body).to.deep.equal([
{
...responseBody[0],
},
])
})
it('handle error', async function (ctx) {
const body = { errors: 'affiliation error message' }
ctx.request.callsArgWith(1, null, { statusCode: 503 }, body)