From 87d98d744120f58757162912cc8ef5656a0edd88 Mon Sep 17 00:00:00 2001 From: Yoan VALLET <ext.sopra.yvallet@grandlyon.com> Date: Fri, 13 Nov 2020 14:50:07 +0100 Subject: [PATCH] feat: test for connection service --- src/services/connection.service.spec.ts | 98 +++++++++++++++++++++++++ src/services/connection.service.ts | 2 +- 2 files changed, 99 insertions(+), 1 deletion(-) create mode 100644 src/services/connection.service.spec.ts diff --git a/src/services/connection.service.spec.ts b/src/services/connection.service.spec.ts new file mode 100644 index 000000000..80abf8afd --- /dev/null +++ b/src/services/connection.service.spec.ts @@ -0,0 +1,98 @@ +import ConnectionService from './connection.service' +import mockClient from './__mocks__/client' +import konnectorsData from './__mocks__/konnectorsData.json' +import accountsData from './__mocks__/accountsData.json' +import triggerData from './__mocks__/triggersData.json' + +const mockGetKonnector = jest.fn() +jest.mock('./konnector.service', () => { + return jest.fn(() => { + return { + getKonnector: mockGetKonnector, + } + }) +}) + +const mockCreateAccount = jest.fn() +jest.mock('./account.service', () => { + return jest.fn(() => { + return { + createAccount: mockCreateAccount, + } + }) +}) + +const mockCreateTrigger = jest.fn() +jest.mock('./triggers.service', () => { + return jest.fn(() => { + return { + createTrigger: mockCreateTrigger, + } + }) +}) + +describe('Connection service', () => { + const connectionService = new ConnectionService(mockClient) + + describe('connectNewUser method', () => { + it('shoud return created Trigger', async () => { + mockGetKonnector.mockResolvedValueOnce(konnectorsData[0]) + mockCreateAccount.mockResolvedValueOnce(accountsData[0]) + mockCreateTrigger.mockResolvedValueOnce(triggerData[0]) + const mockResult = { account: accountsData[0], trigger: triggerData[0] } + const result = await connectionService.connectNewUser( + konnectorsData[0]._id, + 'login', + 'password' + ) + expect(result).toEqual(mockResult) + }) + + it('shoud throw error when konnector is not found', async () => { + let error + try { + await connectionService.connectNewUser( + konnectorsData[0]._id, + 'login', + 'password' + ) + } catch (err) { + error = err + } + expect(error).toEqual( + new Error(`Could not find konnector for ${konnectorsData[0]._id}`) + ) + }) + + it('shoud throw error when account is not created', async () => { + mockGetKonnector.mockResolvedValueOnce(konnectorsData[0]) + let error + try { + await connectionService.connectNewUser( + konnectorsData[0]._id, + 'login', + 'password' + ) + } catch (err) { + error = err + } + expect(error).toEqual(new Error(`Error during account creation`)) + }) + + it('shoud throw error when trigger is not created', async () => { + mockGetKonnector.mockResolvedValueOnce(konnectorsData[0]) + mockCreateAccount.mockResolvedValueOnce(accountsData[0]) + let error + try { + await connectionService.connectNewUser( + konnectorsData[0]._id, + 'login', + 'password' + ) + } catch (err) { + error = err + } + expect(error).toEqual(new Error(`Error during trigger creation`)) + }) + }) +}) diff --git a/src/services/connection.service.ts b/src/services/connection.service.ts index 3c22206fc..280a2e06b 100644 --- a/src/services/connection.service.ts +++ b/src/services/connection.service.ts @@ -15,7 +15,7 @@ export default class ConnectionService { konnectorId: string, login: string, password: string - ) { + ): Promise<{ account: Account; trigger: Trigger }> { // Retrieve konnector const konnectorService = new KonnectorService(this._client) const konnector: Konnector = await konnectorService.getKonnector( -- GitLab