@unito/integration-cli
Version:
Integration CLI
192 lines (191 loc) • 8.67 kB
JavaScript
"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',
});
});
});