UNPKG

@unito/integration-cli

Version:

Integration CLI

192 lines (191 loc) 8.67 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const strict_1 = tslib_1.__importDefault(require("node:assert/strict")); const sinon = tslib_1.__importStar(require("sinon")); const IntegrationsPlatformClient = tslib_1.__importStar(require("../../src/services/integrationsPlatformClient")); const IntegrationsPlatform = tslib_1.__importStar(require("../../src/services/integrationsPlatform")); const globalConfiguration_1 = require("../../src/resources/globalConfiguration"); const configurationTypes_1 = require("../../src/configurationTypes"); describe('integrations platform', function () { const user = { id: 1, apiKey: 'foo', email: 'foo@bar.com', role: 'unitoAdministrator', createdAt: '', updatedAt: '', archivedAt: '', termsAcceptedAt: null, defaultUnitoOrganizationId: '', }; const integrationSummary = { id: 1, name: '', baseUrl: '', graphRelativeUrl: '', credentialAccountRelativeUrl: '', visibility: 'private', unitoOrganizationIds: [], ui: { displayName: '', logo: '', }, createdAt: '', updatedAt: '', archivedAt: '', }; const integration = { ...integrationSummary, authorizations: [], userIds: [], }; afterEach(function () { sinon.restore(); }); it('environment', function () { IntegrationsPlatform.setEnvironment(globalConfiguration_1.Environment.Local); strict_1.default.equal(IntegrationsPlatformClient.defaults.baseUrl, IntegrationsPlatformClient.servers.local); IntegrationsPlatform.setEnvironment(globalConfiguration_1.Environment.Production); strict_1.default.equal(IntegrationsPlatformClient.defaults.baseUrl, IntegrationsPlatformClient.servers.production); }); it('apiKey', function () { IntegrationsPlatform.setApiKey('foo'); strict_1.default.equal(IntegrationsPlatform.getApiKey(), 'foo'); strict_1.default.deepEqual(IntegrationsPlatformClient.defaults.headers, { Authorization: 'Bearer foo', }); IntegrationsPlatform.setApiKey(undefined); strict_1.default.equal(IntegrationsPlatform.getApiKey(), undefined); strict_1.default.deepEqual(IntegrationsPlatformClient.defaults.headers, {}); }); it('getProfile', async function () { sinon.stub(IntegrationsPlatformClient, 'getProfile').resolves(user); strict_1.default.deepEqual(await IntegrationsPlatform.getProfile(), user); }); it('getIntegration', async function () { sinon.stub(IntegrationsPlatformClient, 'getIntegrationById').resolves(integration); strict_1.default.deepEqual(await IntegrationsPlatform.getIntegration(1), integration); }); it('getIntegrationByName', async function () { sinon.stub(IntegrationsPlatformClient, 'getIntegrationByName').resolves(integration); strict_1.default.deepEqual(await IntegrationsPlatform.getIntegrationByName('foo'), integration); }); it('getIntegrations', async function () { sinon.stub(IntegrationsPlatformClient, 'getIntegrations').resolves({ total: 1, data: [integrationSummary] }); strict_1.default.deepEqual(await IntegrationsPlatform.getIntegrations(), [integrationSummary]); }); it('createIntegration', async function () { sinon.stub(IntegrationsPlatformClient, 'createIntegration').resolves(integration); sinon.stub(IntegrationsPlatformClient, 'getIntegrationById').resolves(integration); sinon.stub(IntegrationsPlatformClient, 'updateIntegration').resolves(integration); strict_1.default.deepEqual(await IntegrationsPlatform.createIntegration({ name: 'foo' }), integration); }); it('updateIntegration', async function () { sinon.stub(IntegrationsPlatformClient, 'getIntegrationById').resolves(integration); sinon.stub(IntegrationsPlatformClient, 'updateIntegration').resolves(integration); strict_1.default.deepEqual(await IntegrationsPlatform.updateIntegration(1, { name: 'foo' }), integration); }); it('updateIntegration - create / archive authorization', async function () { sinon.stub(IntegrationsPlatformClient, 'getIntegrationById').resolves({ ...integration, authorizations: [ { id: 1, name: 'spam', method: configurationTypes_1.Method.CUSTOM, createdAt: '', updatedAt: '', archivedAt: null, integrationId: 1, oauth2: null, variables: {}, }, ], }); sinon.stub(IntegrationsPlatformClient, 'updateIntegration').resolves(integration); strict_1.default.deepEqual(await IntegrationsPlatform.updateIntegration(1, { name: 'foo', authorizations: [{ name: 'bar', method: configurationTypes_1.Method.CUSTOM }], }), integration); }); it('updateIntegration - update authorization', async function () { sinon.stub(IntegrationsPlatformClient, 'getIntegrationById').resolves({ ...integration, authorizations: [ { id: 1, name: 'bar', method: configurationTypes_1.Method.CUSTOM, createdAt: '', updatedAt: '', archivedAt: null, integrationId: 1, oauth2: null, variables: {}, }, ], }); sinon.stub(IntegrationsPlatformClient, 'updateIntegration').resolves(integration); strict_1.default.deepEqual(await IntegrationsPlatform.updateIntegration(1, { name: 'foo' }), integration); strict_1.default.deepEqual(await IntegrationsPlatform.updateIntegration(1, { name: 'foo', authorizations: [{ name: 'bar', method: configurationTypes_1.Method.CUSTOM }], }), integration); }); it('updateIntegration - update secrets', async function () { sinon.stub(IntegrationsPlatformClient, 'getIntegrationById').resolves({ ...integration }); const mockUpdateIntegration = sinon.stub(IntegrationsPlatformClient, 'updateIntegration'); const integrationId = 1; const configuration = { name: 'foo', secrets: { foo: 'bar', }, }; await IntegrationsPlatform.updateIntegration(integrationId, configuration); strict_1.default.deepEqual(mockUpdateIntegration.getCall(0).args.at(1), { ui: undefined, authorizations: [], baseUrl: undefined, credentialAccountRelativeUrl: '/me', graphRelativeUrl: '/', secrets: configuration.secrets, webhookAcknowledgeRelativeUrl: undefined, webhookParsingRelativeUrl: undefined, webhookSubscriptionsRelativeUrl: undefined, archived: undefined, }); }); it('updateIntegration - unarchive', async function () { sinon.stub(IntegrationsPlatformClient, 'getIntegrationById').resolves({ ...integration }); const mockUpdateIntegration = sinon.stub(IntegrationsPlatformClient, 'updateIntegration'); const integrationId = 1; const archived = false; const configuration = { name: 'foo', secrets: { foo: 'bar', }, }; await IntegrationsPlatform.updateIntegration(integrationId, { ...configuration, archived }); strict_1.default.deepEqual(mockUpdateIntegration.getCall(0).args.at(1), { ui: undefined, authorizations: [], baseUrl: undefined, credentialAccountRelativeUrl: '/me', graphRelativeUrl: '/', secrets: configuration.secrets, webhookAcknowledgeRelativeUrl: undefined, webhookParsingRelativeUrl: undefined, webhookSubscriptionsRelativeUrl: undefined, archived: false, // what matters }); }); it('encryptData', async function () { sinon.stub(IntegrationsPlatformClient, 'encryptData').resolves({ encryptedData: 'encryptedFoo' }); strict_1.default.deepEqual(await IntegrationsPlatform.encryptData('mySuperIntegration', 'foo', false), { encryptedData: 'encryptedFoo', }); }); });