Skip to content
This repository has been archived by the owner on Sep 3, 2024. It is now read-only.

Commit

Permalink
Upgrading to latest integration sdk
Browse files Browse the repository at this point in the history
  • Loading branch information
Darrius Wright committed Jun 5, 2020
1 parent 3ce21da commit d4a4cfa
Show file tree
Hide file tree
Showing 33 changed files with 1,574 additions and 171 deletions.
25 changes: 4 additions & 21 deletions .eslintrc
Original file line number Diff line number Diff line change
@@ -1,23 +1,6 @@
{
"root": true,
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"plugin:jest/recommended",
"plugin:prettier/recommended"
],
"env": {
"node": true,
"es6": true
},
"parserOptions": {
"project": "./tsconfig.json"
},
"rules": {
"@typescript-eslint/no-use-before-define": [
"error",
{
"functions": false
}
]
}
}
"./node_modules/@jupiterone/integration-sdk-dev-tools/config/eslint.json"
]
}
5 changes: 0 additions & 5 deletions .huskyrc

This file was deleted.

3 changes: 0 additions & 3 deletions .lintstagedrc

This file was deleted.

5 changes: 0 additions & 5 deletions .prettierrc

This file was deleted.

1 change: 1 addition & 0 deletions husky.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
module.exports = require('@jupiterone/integration-sdk-dev-tools/config/husky');
10 changes: 1 addition & 9 deletions jest.config.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,4 @@
module.exports = {
clearMocks: true,
...require('@jupiterone/integration-sdk-dev-tools/config/jest'),
setupFiles: ['./testSetup.ts'],
preset: 'ts-jest',
testMatch: ['**/__tests__/**/*test.(js|ts)'],
testPathIgnorePatterns: ['<rootDir>/dist/', '<rootDir>/node_modules/'],
globals: {
'ts-jest': {
isolatedModules: true,
},
},
};
1 change: 1 addition & 0 deletions lint-staged.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
module.exports = require('@jupiterone/integration-sdk-dev-tools/config/lint-staged');
10 changes: 8 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,19 +16,22 @@
"graph": "j1-integration visualize",
"lint": "eslint . --cache --fix --ext .ts,.tsx",
"format": "prettier --write '**/*.{ts,js,json,css,md,yml}'",
"type-check": "tsc --noEmit",
"type-check": "tsc",
"test": "jest --passWithNoTests",
"test:ci": "yarn lint && yarn type-check && yarn test",
"prebuild": "yarn test:ci",
"prepush": "yarn test:ci",
"build": "tsc -p tsconfig.dist.json --declaration",
"prepublishOnly": "yarn build"
},
"dependencies": {
"@jupiterone/integration-sdk": "^1.0.0",
"@lifeomic/attempt": "^3.0.0",
"node-fetch": "^2.6.0"
},
"devDependencies": {
"@jupiterone/integration-sdk-core": "^1.1.0",
"@jupiterone/integration-sdk-dev-tools": "^1.1.0",
"@jupiterone/integration-sdk-testing": "^1.1.0",
"@types/jest": "^25.2.1",
"@types/node": "^13.11.1",
"@typescript-eslint/eslint-plugin": "^2.28.0",
Expand All @@ -47,5 +50,8 @@
"type-fest": "^0.13.1",
"typescript": "^3.8.3",
"wait-for-expect": "^3.0.2"
},
"peerDependencies": {
"@jupiterone/integration-sdk-core": "^1.1.0"
}
}
1 change: 1 addition & 0 deletions prettier.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
module.exports = require('@jupiterone/integration-sdk-dev-tools/config/prettier');
11 changes: 6 additions & 5 deletions src/__tests__/validateInvocation.test.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import { createMockExecutionContext } from '@jupiterone/integration-sdk/testing';
import { createMockExecutionContext } from '@jupiterone/integration-sdk-testing';

import validateInvocation from '../validateInvocation';

import fetchMock from 'jest-fetch-mock';
import { TrendMicroIntegrationConfig } from '../types';

beforeEach(() => {
fetchMock.doMock();
Expand All @@ -11,8 +12,8 @@ beforeEach(() => {
test('rejects if apiKey is not present', async () => {
fetchMock.mockResponse(JSON.stringify({ computers: [] }));

const context = createMockExecutionContext({
instanceConfig: {},
const context = createMockExecutionContext<TrendMicroIntegrationConfig>({
instanceConfig: {} as TrendMicroIntegrationConfig,
});

await expect(validateInvocation(context)).rejects.toThrow(
Expand All @@ -28,7 +29,7 @@ test('rejects if unable to hit provider apis', async () => {
}),
);

const context = createMockExecutionContext();
const context = createMockExecutionContext<TrendMicroIntegrationConfig>();
context.instance.config = { apiKey: 'test' };

await expect(validateInvocation(context)).rejects.toThrow(
Expand All @@ -39,7 +40,7 @@ test('rejects if unable to hit provider apis', async () => {
test('performs sample list computers call to ensure api can be hit', async () => {
fetchMock.mockResponse(JSON.stringify({ computers: [] }));

const context = createMockExecutionContext();
const context = createMockExecutionContext<TrendMicroIntegrationConfig>();
context.instance.config = { apiKey: 'test' };

await expect(validateInvocation(context)).resolves.toBe(undefined);
Expand Down
5 changes: 3 additions & 2 deletions src/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { IntegrationInvocationConfig } from '@jupiterone/integration-sdk';
import { IntegrationInvocationConfig } from '@jupiterone/integration-sdk-core';

import instanceConfigFields from './instanceConfigFields';
import validateInvocation from './validateInvocation';
Expand All @@ -10,8 +10,9 @@ import fetchAdministratorRoles from './steps/fetch-administrator-roles';
import fetchApiKeys from './steps/fetch-api-keys';
import fetchComputers from './steps/fetch-computers';
import fetchComputerGroups from './steps/fetch-computer-groups';
import { TrendMicroIntegrationConfig } from './types';

export const invocationConfig: IntegrationInvocationConfig = {
export const invocationConfig: IntegrationInvocationConfig<TrendMicroIntegrationConfig> = {
instanceConfigFields,
validateInvocation,
integrationSteps: [
Expand Down
2 changes: 1 addition & 1 deletion src/instanceConfigFields.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { IntegrationInstanceConfigFieldMap } from '@jupiterone/integration-sdk';
import { IntegrationInstanceConfigFieldMap } from '@jupiterone/integration-sdk-core';

const instanceConfigFields: IntegrationInstanceConfigFieldMap = {
apiKey: {
Expand Down
5 changes: 3 additions & 2 deletions src/provider/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { IntegrationInstance } from '@jupiterone/integration-sdk';
import { IntegrationInstance } from '@jupiterone/integration-sdk-core';
import { DeepSecurityClient } from './DeepSecurityClient';
import { TrendMicroIntegrationConfig } from '../types';

export * from './types';

Expand All @@ -8,7 +9,7 @@ export * from './types';
* api key.
*/
export function createDeepSecurityClient(
instance: IntegrationInstance,
instance: IntegrationInstance<TrendMicroIntegrationConfig>,
): DeepSecurityClient {
const apiKey = instance.config?.apiKey;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,16 @@
import { createMockStepExecutionContext } from 'test';
import { createMockStepExecutionContext } from '../../../../test';

import step from '../index';

import entities from './__fixtures__/entities.json';

test('step data collection', async () => {
const context = createMockStepExecutionContext({ entities });
const context = createMockStepExecutionContext({
entities,
instanceConfig: {
apiKey: 'apiKey',
},
});
await step.executionHandler(context);

expect(context.jobState.collectedEntities).toHaveLength(0);
Expand Down
2 changes: 1 addition & 1 deletion src/steps/build-administrator-role-relationships/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import {
IntegrationStep,
IntegrationStepExecutionContext,
createIntegrationRelationship,
} from '@jupiterone/integration-sdk';
} from '@jupiterone/integration-sdk-core';

import { STEP_ID as ADMIN_STEP, ADMIN_TYPE } from '../fetch-administrators';
import { STEP_ID as ROLE_STEP, ROLE_TYPE } from '../fetch-administrator-roles';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,16 @@
import { createMockStepExecutionContext } from 'test';
import { createMockStepExecutionContext } from '../../../../test';

import step from '../index';

import entities from './__fixtures__/entities.json';

test('step data collection', async () => {
const context = createMockStepExecutionContext({ entities });
const context = createMockStepExecutionContext({
entities,
instanceConfig: {
apiKey: 'apiKey',
},
});
await step.executionHandler(context);

expect(context.jobState.collectedEntities).toHaveLength(0);
Expand Down
2 changes: 1 addition & 1 deletion src/steps/build-computer-group-relationships/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import {
IntegrationStep,
IntegrationStepExecutionContext,
createIntegrationRelationship,
} from '@jupiterone/integration-sdk';
} from '@jupiterone/integration-sdk-core';

import { STEP_ID as COMPUTER_STEP, COMPUTER_TYPE } from '../fetch-computers';
import {
Expand Down
15 changes: 12 additions & 3 deletions src/steps/fetch-administrator-roles/__tests__/index.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,14 @@ import {
Recording,
setupRecording,
createMockStepExecutionContext,
} from 'test';
} from '../../../../test';

import step, { createAdministratorRoleEntity } from '../index';
import {
createDeepSecurityClient,
DeepSecurityAdministratorRole,
} from '../../../provider';
import { TrendMicroIntegrationConfig } from '../../../types';

let recording: Recording;

Expand All @@ -24,7 +25,11 @@ afterEach(async () => {
});

test('administratorRole fetching', async () => {
const context = createMockStepExecutionContext();
const context = createMockStepExecutionContext<TrendMicroIntegrationConfig>({
instanceConfig: {
apiKey: 'apiKey',
},
});
const provider = createDeepSecurityClient(context.instance);

const results = await provider.listAdministratorRoles();
Expand Down Expand Up @@ -112,7 +117,11 @@ test('administator role entity conversion', async () => {
});

test('step data collection', async () => {
const context = createMockStepExecutionContext();
const context = createMockStepExecutionContext<TrendMicroIntegrationConfig>({
instanceConfig: {
apiKey: 'apiKey',
},
});
await step.executionHandler(context);

expect(context.jobState.collectedEntities).toHaveLength(4);
Expand Down
11 changes: 4 additions & 7 deletions src/steps/fetch-administrator-roles/index.ts
Original file line number Diff line number Diff line change
@@ -1,26 +1,23 @@
import {
Entity,
IntegrationStep,
IntegrationStepExecutionContext,
createIntegrationEntity,
} from '@jupiterone/integration-sdk';
} from '@jupiterone/integration-sdk-core';

import {
createDeepSecurityClient,
DeepSecurityAdministratorRole,
} from '../../provider';
import { TrendMicroIntegrationConfig } from '../../types';

export const STEP_ID = 'fetch-administrator-roles';
export const ROLE_TYPE = 'trend_micro_administrator_role';

const step: IntegrationStep = {
const step: IntegrationStep<TrendMicroIntegrationConfig> = {
id: STEP_ID,
name: 'Fetch administrator roles',
types: [ROLE_TYPE],
async executionHandler({
instance,
jobState,
}: IntegrationStepExecutionContext) {
async executionHandler({ instance, jobState }) {
const client = createDeepSecurityClient(instance);

const { roles } = await client.listAdministratorRoles();
Expand Down
15 changes: 12 additions & 3 deletions src/steps/fetch-administrators/__tests__/index.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,14 @@ import {
Recording,
setupRecording,
createMockStepExecutionContext,
} from 'test';
} from '../../../../test';

import step, { createAdministratorEntity } from '../index';
import {
createDeepSecurityClient,
DeepSecurityAdministrator,
} from '../../../provider';
import { TrendMicroIntegrationConfig } from '../../../types';

let recording: Recording;

Expand All @@ -24,7 +25,11 @@ afterEach(async () => {
});

test('administrator fetching', async () => {
const context = createMockStepExecutionContext();
const context = createMockStepExecutionContext<TrendMicroIntegrationConfig>({
instanceConfig: {
apiKey: 'apiKey',
},
});
const provider = createDeepSecurityClient(context.instance);

const results = await provider.listAdministrators();
Expand Down Expand Up @@ -142,7 +147,11 @@ test('administator entity conversion', async () => {
});

test('step data collection', async () => {
const context = createMockStepExecutionContext();
const context = createMockStepExecutionContext<TrendMicroIntegrationConfig>({
instanceConfig: {
apiKey: 'apiKey',
},
});
await step.executionHandler(context);

expect(context.jobState.collectedEntities).toHaveLength(2);
Expand Down
11 changes: 4 additions & 7 deletions src/steps/fetch-administrators/index.ts
Original file line number Diff line number Diff line change
@@ -1,26 +1,23 @@
import {
Entity,
IntegrationStep,
IntegrationStepExecutionContext,
createIntegrationEntity,
} from '@jupiterone/integration-sdk';
} from '@jupiterone/integration-sdk-core';

import {
createDeepSecurityClient,
DeepSecurityAdministrator,
} from '../../provider';
import { TrendMicroIntegrationConfig } from '../../types';

export const STEP_ID = 'fetch-administrators';
export const ADMIN_TYPE = 'trend_micro_administrator';

const step: IntegrationStep = {
const step: IntegrationStep<TrendMicroIntegrationConfig> = {
id: STEP_ID,
name: 'Fetch administrators',
types: [ADMIN_TYPE],
async executionHandler({
instance,
jobState,
}: IntegrationStepExecutionContext) {
async executionHandler({ instance, jobState }) {
const client = createDeepSecurityClient(instance);

const { administrators } = await client.listAdministrators();
Expand Down
Loading

0 comments on commit d4a4cfa

Please sign in to comment.