From 93bdd508928e62ffcdd465e89266c6c13eb3f9c2 Mon Sep 17 00:00:00 2001 From: rijkvanzanten Date: Tue, 27 Oct 2020 16:53:10 +0100 Subject: [PATCH] Add user invite --- packages/sdk-js/readme.md | 30 ++++++++++++------------- packages/sdk-js/src/handlers/items.ts | 2 +- packages/sdk-js/src/handlers/users.ts | 4 ++++ packages/sdk-js/tests/handlers/users.ts | 18 +++++++++++++++ 4 files changed, 38 insertions(+), 16 deletions(-) diff --git a/packages/sdk-js/readme.md b/packages/sdk-js/readme.md index e947b0bf19..3322f80a44 100644 --- a/packages/sdk-js/readme.md +++ b/packages/sdk-js/readme.md @@ -4,6 +4,10 @@ ## To-Do +Research private class property used in extended class. + +`ItemsService.axios` is privé, maar moet publiek om 't te kunnen gebruiken in andere classes met extend, zoals users + - [x] Items - [x] Create - [x] Read @@ -14,8 +18,6 @@ - [x] Create Comment - [x] Update Comment - [x] Delete Comment -- [ ] Assets??? (not sure if needed) - - [ ] Read - [ ] Auth - [ ] Login - [ ] Refresh @@ -25,18 +27,16 @@ - [ ] oAuth - [ ] Get available providers - [ ] Login with provider -- [ ] Collections - - [ ] Create - - [ ] Read - - [ ] Update - - [ ] Delete -- [ ] Extensions??? (not sure if needed) - - [ ] Read -- [ ] Fields - - [ ] Create - - [ ] Read - - [ ] Update - - [ ] Delete +- [x] Collections + - [x] Create + - [x] Read + - [x] Update + - [x] Delete +- [x] Fields + - [x] Create + - [x] Read + - [x] Update + - [x] Delete - [x] Files - [x] Create - [x] Read @@ -88,7 +88,7 @@ - [x] Read - [x] Update - [x] Delete - - [ ] Invite + - [x] Invite - [ ] Accept Invite - [ ] Enable TFA - [ ] Disable TFA diff --git a/packages/sdk-js/src/handlers/items.ts b/packages/sdk-js/src/handlers/items.ts index 63719f0154..fcd57ab18a 100644 --- a/packages/sdk-js/src/handlers/items.ts +++ b/packages/sdk-js/src/handlers/items.ts @@ -2,7 +2,7 @@ import { Query, Item, Payload, Response, PrimaryKey } from '../types'; import { AxiosInstance } from 'axios'; export class ItemsHandler { - private axios: AxiosInstance; + axios: AxiosInstance; private endpoint: string; constructor(collection: string, axios: AxiosInstance) { diff --git a/packages/sdk-js/src/handlers/users.ts b/packages/sdk-js/src/handlers/users.ts index b58b60d019..ac6906ac4f 100644 --- a/packages/sdk-js/src/handlers/users.ts +++ b/packages/sdk-js/src/handlers/users.ts @@ -5,4 +5,8 @@ export class UsersHandler extends ItemsHandler { constructor(axios: AxiosInstance) { super('directus_users', axios); } + + async invite(email: string | string[], role: string) { + await this.axios.post('/users/invite', { email, role }); + } } diff --git a/packages/sdk-js/tests/handlers/users.ts b/packages/sdk-js/tests/handlers/users.ts index 16b72c86ad..eb22292233 100644 --- a/packages/sdk-js/tests/handlers/users.ts +++ b/packages/sdk-js/tests/handlers/users.ts @@ -24,4 +24,22 @@ describe('UsersHandler', () => { it('Extends ItemsHandler', () => { expect(handler).to.be.instanceOf(ItemsHandler); }); + + describe('invite', () => { + it('Calls the /users/invite endpoint', async () => { + const stub = sandbox.stub(handler.axios, 'post').resolves(Promise.resolve()); + + await handler.invite('admin@example.com', 'abc'); + expect(stub).to.have.been.calledWith('/users/invite', { + email: 'admin@example.com', + role: 'abc', + }); + + await handler.invite(['admin@example.com', 'user@example.com'], 'abc'); + expect(stub).to.have.been.calledWith('/users/invite', { + email: ['admin@example.com', 'user@example.com'], + role: 'abc', + }); + }); + }); });