From db01406e909e85c7692bd063f264a9ece9c63e1d Mon Sep 17 00:00:00 2001 From: Lewis Chen Date: Mon, 10 Feb 2025 17:37:15 -0800 Subject: [PATCH] mockBCeIDAccountUserFound and not found --- ....createInstitutionUserWithAuth.e2e-spec.ts | 12 ++-- .../api/src/testHelpers/auth/bceid-helpers.ts | 56 +++++++++++++------ 2 files changed, 44 insertions(+), 24 deletions(-) diff --git a/sources/packages/backend/apps/api/src/route-controllers/institution-user/_tests_/e2e/institution-user.institutions.controller.createInstitutionUserWithAuth.e2e-spec.ts b/sources/packages/backend/apps/api/src/route-controllers/institution-user/_tests_/e2e/institution-user.institutions.controller.createInstitutionUserWithAuth.e2e-spec.ts index e0f3a18070..84c3b1ccc1 100644 --- a/sources/packages/backend/apps/api/src/route-controllers/institution-user/_tests_/e2e/institution-user.institutions.controller.createInstitutionUserWithAuth.e2e-spec.ts +++ b/sources/packages/backend/apps/api/src/route-controllers/institution-user/_tests_/e2e/institution-user.institutions.controller.createInstitutionUserWithAuth.e2e-spec.ts @@ -8,7 +8,8 @@ import { getAuthRelatedEntities, getInstitutionToken, InstitutionTokenTypes, - mockBCeIDAccountDetails, + mockBCeIDAccountUserFound, + mockBCeIDAccountUserNotFound, } from "../../../../testHelpers"; import { E2EDataSources, @@ -70,7 +71,6 @@ describe("InstitutionUserInstitutionsController(e2e)-createInstitutionUserWithAu it("Should throw an UnprocessableEntityException error when the user passed in the payload is not found on BCeID.", async () => { // Arrange - const user = createFakeUser(); const payload = { bceidUserId: faker.random.alpha({ count: 5 }), permissions: [ @@ -82,7 +82,7 @@ describe("InstitutionUserInstitutionsController(e2e)-createInstitutionUserWithAu }; // Mock BCeID account method to return null response. - await mockBCeIDAccountDetails(appModule, user, collegeFInstitution, true); + await mockBCeIDAccountUserNotFound(appModule); // Institution token. const token = await getInstitutionToken(InstitutionTokenTypes.CollegeFUser); @@ -121,7 +121,7 @@ describe("InstitutionUserInstitutionsController(e2e)-createInstitutionUserWithAu }); // Mock BCeID account details. - await mockBCeIDAccountDetails( + await mockBCeIDAccountUserFound( appModule, user, collegeDLocation.institution, @@ -163,7 +163,7 @@ describe("InstitutionUserInstitutionsController(e2e)-createInstitutionUserWithAu }; // Mock get BCeID account details with the initial userName. - await mockBCeIDAccountDetails( + await mockBCeIDAccountUserFound( appModule, { ...user, userName: userGuid }, collegeFInstitution, @@ -203,7 +203,7 @@ describe("InstitutionUserInstitutionsController(e2e)-createInstitutionUserWithAu }; // Mock get BCeID account details - await mockBCeIDAccountDetails(appModule, user, collegeFInstitution); + await mockBCeIDAccountUserFound(appModule, user, collegeFInstitution); // Institution token. const token = await getInstitutionToken(InstitutionTokenTypes.CollegeFUser); const endpoint = "/institutions/institution-user"; diff --git a/sources/packages/backend/apps/api/src/testHelpers/auth/bceid-helpers.ts b/sources/packages/backend/apps/api/src/testHelpers/auth/bceid-helpers.ts index 03a27589cf..0ddd17e68a 100644 --- a/sources/packages/backend/apps/api/src/testHelpers/auth/bceid-helpers.ts +++ b/sources/packages/backend/apps/api/src/testHelpers/auth/bceid-helpers.ts @@ -10,14 +10,12 @@ import { BCeIDService } from "../../services"; * @param user a persisted user object. * @param displayName a persisted display name for user login. * @param institution a persisted institution object. - * @param returnsNull indicates whether mocks a null response. * @returns a persisted BCeID account object. */ -export async function mockBCeIDAccountDetails( +export async function mockBCeIDAccountUserFound( testingModule: TestingModule, user: User, institution: Institution, - returnsNull?: boolean, ): Promise { const bceIDService = await getProviderInstanceForModule( testingModule, @@ -27,21 +25,43 @@ export async function mockBCeIDAccountDetails( return jest .spyOn(bceIDService, "getAccountDetails") .mockImplementation(() => { - const response = returnsNull - ? null - : { - user: { - guid: user.userName, - displayName: `${user.firstName}_${user.lastName}`, - firstname: user.firstName, - surname: user.lastName, - email: user.email, - }, - institution: { - guid: institution.businessGuid, - legalName: institution.legalOperatingName, - }, - }; + const response = { + user: { + guid: user.userName, + displayName: `${user.firstName}_${user.lastName}`, + firstname: user.firstName, + surname: user.lastName, + email: user.email, + }, + institution: { + guid: institution.businessGuid, + legalName: institution.legalOperatingName, + }, + }; + return Promise.resolve(response); + }); +} + +/** + * Mocks BCeID account info from BCeID service to return null. + * @param testingModule nest testing module. + * @param user a persisted user object. + * @param displayName a persisted display name for user login. + * @param institution a persisted institution object. + * @returns a persisted BCeID account object. + */ +export async function mockBCeIDAccountUserNotFound( + testingModule: TestingModule, +): Promise { + const bceIDService = await getProviderInstanceForModule( + testingModule, + AppInstitutionsModule, + BCeIDService, + ); + return jest + .spyOn(bceIDService, "getAccountDetails") + .mockImplementation(() => { + const response = null; return Promise.resolve(response); }); }