From 9880d4b8ade99538d1dfdc202c00493fd86ded56 Mon Sep 17 00:00:00 2001 From: Yaroslav Fedyshyn Date: Wed, 15 Jul 2020 21:34:40 +0300 Subject: [PATCH] add: add tsts for 3d facemapp error case --- .../api/__tests__/__util__/index.js | 18 ++++++++++++++++++ .../provider/__tests__/ZoomProvider.js | 14 ++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/src/server/verification/api/__tests__/__util__/index.js b/src/server/verification/api/__tests__/__util__/index.js index 2129204c..53c93959 100644 --- a/src/server/verification/api/__tests__/__util__/index.js +++ b/src/server/verification/api/__tests__/__util__/index.js @@ -1,6 +1,7 @@ export default zoomServiceMock => { const serviceErrorMessage = 'Request failed with status code 500' const failedEnrollmentMessage = 'The FaceMap was not enrolled because Liveness could not be determined.' + const failedLivenessMessage = '3D FaceMaps that are used with Search APIs must have had Liveness Proven.' const enrollmentDisposedMessage = 'The entry in the database for this enrollmentIdentifier was successfully deleted' const enrollmentFoundMessage = 'A FaceMap was found for that enrollmentIdentifier.' const enrollmentNotFoundMessage = 'No entry found in the database for this enrollmentIdentifier.' @@ -65,6 +66,21 @@ export default zoomServiceMock => { } }) + const mockLivenessError = () => + zoomServiceMock.onPost('/search').reply(400, { + meta: { + code: 400, + ok: false, + m: { zb: 2256, st: 1594565626.252231, bt: null, bp: null, zw: 2545, zp: 2528 }, + subCode: 'unableToProcess', + mode: 'dev', + message: '3D FaceMaps that are used with Search APIs must have had Liveness Proven.' + }, + data: { + isLive: false + } + }) + const mockSuccessEnrollment = enrollmentIdentifier => zoomServiceMock.onPost('/enrollment').reply(200, { meta: { @@ -175,7 +191,9 @@ export default zoomServiceMock => { mockSuccessEnrollment, mockFailedEnrollment, + mockLivenessError, failedEnrollmentMessage, + failedLivenessMessage, mockEnrollmentFound, mockEnrollmentNotFound, diff --git a/src/server/verification/processor/provider/__tests__/ZoomProvider.js b/src/server/verification/processor/provider/__tests__/ZoomProvider.js index 9279a6ef..f2954999 100644 --- a/src/server/verification/processor/provider/__tests__/ZoomProvider.js +++ b/src/server/verification/processor/provider/__tests__/ZoomProvider.js @@ -141,6 +141,20 @@ describe('ZoomProvider', () => { expect(onEnrollmentProcessing).toHaveBeenNthCalledWith(2, { isEnrolled: false, isLive: false }) }) + test('enroll() throws 3D Facemap liveness error', async () => { + helper.mockEmptyResultsFaceSearch() + helper.mockLivenessError() + + const onEnrollmentProcessing = jest.fn() + const wrappedResponse = expect(ZoomProvider.enroll(enrollmentIdentifier, payload, onEnrollmentProcessing)).rejects + + await wrappedResponse.toThrow(helper.failedLivenessMessage) + await wrappedResponse.toHaveProperty('response') + await wrappedResponse.toHaveProperty('response.isLive', false) + + expect(onEnrollmentProcessing).toHaveBeenNthCalledWith(1, { isLive: false }) + }) + test('enroll() throws on any Zoom service error and terminates without returning any response or calling callback', async () => { zoomServiceMock .onPost('/search')