Skip to content

Commit

Permalink
idv: added deleteSessionTrackedDevices in both client and service
Browse files Browse the repository at this point in the history
  • Loading branch information
laurent-yoti committed Sep 12, 2024
1 parent 04b4212 commit 068ba7b
Show file tree
Hide file tree
Showing 6 changed files with 126 additions and 0 deletions.
11 changes: 11 additions & 0 deletions src/client/idv.client.js
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,17 @@ class IDVClient {
getSessionTrackedDevices(sessionId) {
return this.idvService.getSessionTrackedDevices(sessionId);
}

/**
* Deletes the tracked devices for given sessionID.
*
* @param {string} sessionId
*
* @returns {Promise<void>}
*/
deleteSessionTrackedDevices(sessionId) {
return this.idvService.deleteSessionTrackedDevices(sessionId);
}
}

module.exports = IDVClient;
29 changes: 29 additions & 0 deletions src/idv_service/idv.service.js
Original file line number Diff line number Diff line change
Expand Up @@ -310,6 +310,8 @@ class IDVService {
* @returns {Promise<SessionConfigurationResponse>}
*/
getSessionConfiguration(sessionId) {
Validation.isString(sessionId, 'sessionId');

const request = new RequestBuilder()
.withPemString(this.pem.toString())
.withBaseUrl(this.apiUrl)
Expand All @@ -331,6 +333,8 @@ class IDVService {
* @returns {Promise<SessionTrackedDevicesResponse>}
*/
getSessionTrackedDevices(sessionId) {
Validation.isString(sessionId, 'sessionId');

const request = new RequestBuilder()
.withPemString(this.pem.toString())
.withBaseUrl(this.apiUrl)
Expand All @@ -346,6 +350,31 @@ class IDVService {
.catch((err) => reject(new IDVError(err)));
});
}

/**
* Deletes tracked devices for a given session
*
* @param {string} sessionId
*
* @returns {Promise}
*/
deleteSessionTrackedDevices(sessionId) {
Validation.isString(sessionId, 'sessionId');

const request = new RequestBuilder()
.withPemString(this.pem.toString())
.withBaseUrl(this.apiUrl)
.withEndpoint(`/sessions/${sessionId}/tracked-devices`)
.withQueryParam('sdkId', this.sdkId)
.withMethod('DELETE')
.build();

return new Promise((resolve, reject) => {
request.execute(true)
.then(() => resolve())
.catch((err) => reject(new IDVError(err)));
});
}
}

module.exports = IDVService;
22 changes: 22 additions & 0 deletions tests/client/idv.client.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -313,6 +313,28 @@ describe.each([
});
});

describe('#deleteSessionTrackedDevices', () => {
const setupResponse = (responseStatusCode = 204) => {
nock(apiUrlDomain)
.delete(sessionTrackedDevicesUriRegExp)
.reply(responseStatusCode);
};

beforeEach(() => {
setupResponse();
});

it('should have no response', (done) => {
idvClient
.deleteSessionTrackedDevices(SESSION_ID, MEDIA_ID)
.then((result) => {
expect(result).toBeUndefined();
done();
})
.catch(done);
});
});

describe('#createFaceCaptureResource', () => {
const createFaceCaptureResourcePayload = new CreateFaceCaptureResourcePayloadBuilder().withRequirementId('abc').build();

Expand Down
48 changes: 48 additions & 0 deletions tests/idv_service/idv.service.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -659,6 +659,54 @@ describe('IDVService', () => {
});
});

describe('#deleteSessionTrackedDevices', () => {
describe('when a valid response is returned', () => {
it('should have no response', (done) => {
nock(config.yoti.idvApi)
.delete(SESSION_TRACKED_DEVICES_URI)
.reply(204);

idvService
.deleteSessionTrackedDevices(SESSION_ID)
.then((result) => {
expect(result).toBeUndefined();
done();
})
.catch(done);
});
});
describe('when response code is invalid', () => {
it('should reject', (done) => {
nock(config.yoti.idvApi)
.delete(SESSION_TRACKED_DEVICES_URI)
.reply(400);

idvService
.deleteSessionTrackedDevices(SESSION_ID)
.catch((err) => {
expect(err.message).toBe('Bad Request');
done();
})
.catch(done);
});
});
describe('when response code is invalid with response body', () => {
it('should reject with response message and body', (done) => {
nock(config.yoti.idvApi)
.delete(SESSION_TRACKED_DEVICES_URI)
.reply(400, SOME_ERROR_RESPONSE, JSON_RESPONSE_HEADERS);

idvService
.deleteSessionTrackedDevices(SESSION_ID)
.catch((err) => {
expect(err.message).toBe(SOME_ERROR_MESSAGE);
done();
})
.catch(done);
});
});
});

describe('#createFaceCaptureResource', () => {
let createFaceCaptureResourcePayload;

Expand Down
8 changes: 8 additions & 0 deletions types/src/client/idv.client.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -125,4 +125,12 @@ declare class IDVClient {
* @returns {Promise<SessionTrackedDevicesResponse>}
*/
getSessionTrackedDevices(sessionId: string): Promise<import("../idv_service/session/retrieve/devices/session.tracked.devices.response")>;
/**
* Deletes the tracked devices for given sessionID.
*
* @param {string} sessionId
*
* @returns {Promise<void>}
*/
deleteSessionTrackedDevices(sessionId: string): Promise<void>;
}
8 changes: 8 additions & 0 deletions types/src/idv_service/idv.service.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,14 @@ declare class IDVService {
* @returns {Promise<SessionTrackedDevicesResponse>}
*/
getSessionTrackedDevices(sessionId: string): Promise<SessionTrackedDevicesResponse>;
/**
* Deletes tracked devices for a given session
*
* @param {string} sessionId
*
* @returns {Promise}
*/
deleteSessionTrackedDevices(sessionId: string): Promise<any>;
}
import SessionSpecification = require("./session/create/session.specification");
import CreateSessionResult = require("./session/create/create.session.result");
Expand Down

0 comments on commit 068ba7b

Please sign in to comment.