From cac49c711a59876d0767ee51b76c5458089cc045 Mon Sep 17 00:00:00 2001 From: rijkvanzanten Date: Tue, 27 Oct 2020 17:05:18 +0100 Subject: [PATCH] Add me.read / me.update --- packages/sdk-js/readme.md | 2 +- packages/sdk-js/src/handlers/users.ts | 12 +++++++++ packages/sdk-js/tests/handlers/users.ts | 36 +++++++++++++++++++++++++ 3 files changed, 49 insertions(+), 1 deletion(-) diff --git a/packages/sdk-js/readme.md b/packages/sdk-js/readme.md index d63b161ede..977b9bc7be 100644 --- a/packages/sdk-js/readme.md +++ b/packages/sdk-js/readme.md @@ -92,7 +92,7 @@ Research private class property used in extended class. - [x] Accept Invite - [x] Enable TFA - [x] Disable TFA - - [ ] Me + - [x] Me - [x] Utils - [x] Get random string - [x] Hash a value diff --git a/packages/sdk-js/src/handlers/users.ts b/packages/sdk-js/src/handlers/users.ts index b4683abf94..9fbd083ed4 100644 --- a/packages/sdk-js/src/handlers/users.ts +++ b/packages/sdk-js/src/handlers/users.ts @@ -1,5 +1,6 @@ import { AxiosInstance } from 'axios'; import { ItemsHandler } from './items'; +import { Query, Payload } from '../types'; export class UsersHandler extends ItemsHandler { constructor(axios: AxiosInstance) { @@ -22,4 +23,15 @@ export class UsersHandler extends ItemsHandler { await this.axios.post('/users/tfa/disable', { otp }); }, }; + + me = { + read: async (query?: Query) => { + const response = await this.axios.get('/users/me', { params: query }); + return response.data; + }, + update: async (payload: Payload, query?: Query) => { + const response = await this.axios.patch('/users/me', payload, { params: query }); + return response.data; + }, + }; } diff --git a/packages/sdk-js/tests/handlers/users.ts b/packages/sdk-js/tests/handlers/users.ts index af87201639..d308d5309c 100644 --- a/packages/sdk-js/tests/handlers/users.ts +++ b/packages/sdk-js/tests/handlers/users.ts @@ -79,4 +79,40 @@ describe('UsersHandler', () => { }); }); }); + + describe('me.read', () => { + it('Calls the /users/me endpoint', async () => { + const stub = sandbox.stub(handler.axios, 'get').resolves(Promise.resolve({ data: {} })); + + await handler.me.read(); + expect(stub).to.have.been.calledWith('/users/me'); + + await handler.me.read({ fields: ['first_name'] }); + expect(stub).to.have.been.calledWith('/users/me', { + params: { fields: ['first_name'] }, + }); + }); + }); + + describe('me.update', () => { + it('Calls the /users/me endpoint', async () => { + const stub = sandbox + .stub(handler.axios, 'patch') + .resolves(Promise.resolve({ data: {} })); + + await handler.me.update({ first_name: 'Rijk' }); + expect(stub).to.have.been.calledWith( + '/users/me', + { first_name: 'Rijk' }, + { params: undefined } + ); + + await handler.me.update({ first_name: 'Rijk' }, { fields: ['first_name'] }); + expect(stub).to.have.been.calledWith( + '/users/me', + { first_name: 'Rijk' }, + { params: { fields: ['first_name'] } } + ); + }); + }); });