Skip to content

Commit

Permalink
test: jestify plugin-import-with-npm-install test
Browse files Browse the repository at this point in the history
Migrated test from Tap to Jest.

File Path:
packages/cactus-test-cmd-api-server/src/test/typescript/
integration/plugin-import-with-npm-install.test.ts

This is a PARTIAL resolution to issue #238

Signed-off-by: awadhana <awadhana0825@gmail.com>
Signed-off-by: Peter Somogyvari <peter.somogyvari@accenture.com>
  • Loading branch information
awadhana authored and petermetz committed Nov 25, 2022
1 parent 0b34ca3 commit 0006132
Show file tree
Hide file tree
Showing 4 changed files with 66 additions and 71 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -995,7 +995,7 @@ jobs:
FULL_BUILD_DISABLED: true
JEST_TEST_PATTERN: packages/cactus-test-cmd-api-server/src/test/typescript/(unit|integration|benchmark)/.*/*.test.ts
JEST_TEST_RUNNER_DISABLED: false
TAPE_TEST_PATTERN: '--files={./packages/cactus-test-cmd-api-server/src/test/typescript/integration/plugin-import-with-npm-install-version-selection.test.ts,./packages/cactus-test-cmd-api-server/src/test/typescript/integration/plugin-import-with-npm-install.test.ts}'
TAPE_TEST_PATTERN: ./packages/cactus-test-cmd-api-server/src/test/typescript/integration/plugin-import-with-npm-install-version-selection.test.ts
TAPE_TEST_RUNNER_DISABLED: false
needs: build-dev
runs-on: ubuntu-20.04
Expand Down
2 changes: 1 addition & 1 deletion .taprc
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ files:
- ./packages/cactus-test-plugin-htlc-eth-besu-erc20/src/test/typescript/integration/plugin-htlc-eth-besu-erc20/get-single-status-endpoint-invalid.test.ts
- ./packages/cactus-test-plugin-htlc-eth-besu-erc20/src/test/typescript/integration/plugin-htlc-eth-besu-erc20/openapi/openapi-validation.test.ts
- ./packages/cactus-test-plugin-htlc-eth-besu-erc20/src/test/typescript/integration/plugin-htlc-eth-besu-erc20/refund-endpoint.test.ts
- ./packages/cactus-test-cmd-api-server/src/test/typescript/integration/plugin-import-with-npm-install.test.ts
- ./packages/cactus-test-cmd-api-server/src/test/typescript/integration/remote-plugin-imports.test.ts
- ./packages/cactus-test-cmd-api-server/src/test/typescript/integration/plugin-import-with-npm-install-version-selection.test.ts
- ./packages/cactus-plugin-ledger-connector-corda/src/test/typescript/integration/openapi/openapi-validation.test.ts
- ./packages/cactus-plugin-ledger-connector-corda/src/test/typescript/integration/deploy-cordapp-jars-to-nodes-v4.7.test.ts
Expand Down
2 changes: 1 addition & 1 deletion jest.config.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import path from "path";
import test, { Test } from "tape-promise/tape";
import "jest-extended";
import { v4 as uuidv4 } from "uuid";
import { generateKeyPair, exportPKCS8 } from "jose";

Expand All @@ -18,80 +18,75 @@ import {
} from "@hyperledger/cactus-cmd-api-server";

const logLevel: LogLevelDesc = "TRACE";
const testcase = "can instal plugins at runtime based on imports";

test("can instal plugins at runtime based on imports", async (t: Test) => {
// Adding a new plugin to update the prometheus metric K_CACTUS_API_SERVER_TOTAL_PLUGIN_IMPORTS
const keyPair = await generateKeyPair("ES256K");
const keyPairPem = await exportPKCS8(keyPair.privateKey);
const db: ConsortiumDatabase = {
cactusNode: [],
consortium: [],
consortiumMember: [],
ledger: [],
pluginInstance: [],
};
describe(testcase, () => {
let apiServer: ApiServer;

const pluginsPath = path.join(
__dirname,
"../../../../../../", // walk back up to the project root
".tmp/test/test-cmd-api-server/plugin-import-with-npm-install_test/", // the dir path from the root
uuidv4(), // then a random directory to ensure proper isolation
);
const pluginManagerOptionsJson = JSON.stringify({ pluginsPath });
beforeAll(async () => {
// Adding a new plugin to update the prometheus metric K_CACTUS_API_SERVER_TOTAL_PLUGIN_IMPORTS
const keyPair = await generateKeyPair("ES256K");
const keyPairPem = await exportPKCS8(keyPair.privateKey);
const db: ConsortiumDatabase = {
cactusNode: [],
consortium: [],
consortiumMember: [],
ledger: [],
pluginInstance: [],
};
const pluginsPath = path.join(
__dirname,
"../../../../../../", // walk back up to the project root
".tmp/test/test-cmd-api-server/plugin-import-with-npm-install_test/", // the dir path from the root
uuidv4(), // then a random directory to ensure proper isolation
);
const pluginManagerOptionsJson = JSON.stringify({ pluginsPath });

const configService = new ConfigService();
const configService = new ConfigService();

const apiServerOptions = await configService.newExampleConfig();
apiServerOptions.pluginManagerOptionsJson = pluginManagerOptionsJson;
apiServerOptions.authorizationProtocol = AuthorizationProtocol.NONE;
apiServerOptions.configFile = "";
apiServerOptions.apiCorsDomainCsv = "*";
apiServerOptions.apiPort = 0;
apiServerOptions.cockpitPort = 0;
apiServerOptions.grpcPort = 0;
apiServerOptions.apiTlsEnabled = false;
apiServerOptions.plugins = [
{
packageName: "@hyperledger/cactus-plugin-keychain-memory",
type: PluginImportType.Local,
action: PluginImportAction.Install,
options: {
instanceId: uuidv4(),
keychainId: uuidv4(),
logLevel,
const apiServerOptions = await configService.newExampleConfig();
apiServerOptions.pluginManagerOptionsJson = pluginManagerOptionsJson;
apiServerOptions.authorizationProtocol = AuthorizationProtocol.NONE;
apiServerOptions.configFile = "";
apiServerOptions.apiCorsDomainCsv = "*";
apiServerOptions.apiPort = 0;
apiServerOptions.cockpitPort = 0;
apiServerOptions.grpcPort = 0;
apiServerOptions.apiTlsEnabled = false;
apiServerOptions.plugins = [
{
packageName: "@hyperledger/cactus-plugin-keychain-memory",
type: PluginImportType.Local,
action: PluginImportAction.Install,
options: {
instanceId: uuidv4(),
keychainId: uuidv4(),
logLevel,
},
},
},
{
packageName: "@hyperledger/cactus-plugin-consortium-manual",
type: PluginImportType.Local,
action: PluginImportAction.Install,
options: {
instanceId: uuidv4(),
keyPairPem: keyPairPem,
consortiumDatabase: db,
{
packageName: "@hyperledger/cactus-plugin-consortium-manual",
type: PluginImportType.Local,
action: PluginImportAction.Install,
options: {
instanceId: uuidv4(),
keyPairPem: keyPairPem,
consortiumDatabase: db,
},
},
},
];
const config = await configService.newExampleConfigConvict(apiServerOptions);
];
const config = await configService.newExampleConfigConvict(
apiServerOptions,
);

const apiServer = new ApiServer({
config: config.getProperties(),
apiServer = new ApiServer({
config: config.getProperties(),
});
});
afterAll(() => apiServer.shutdown());

const startResponse = apiServer.start();
await t.doesNotReject(
startResponse,
"failed to start API server with dynamic plugin imports configured for it...",
);
t.ok(startResponse, "startResponse truthy OK");

const addressInfoApi = (await startResponse).addressInfoApi;
const protocol = apiServerOptions.apiTlsEnabled ? "https" : "http";
const { address, port } = addressInfoApi;
const apiHost = `${protocol}://${address}:${port}`;
t.comment(
`Metrics URL: ${apiHost}/api/v1/api-server/get-prometheus-exporter-metrics`,
);

test.onFinish(() => apiServer.shutdown());
test(testcase, async () => {
const startResponse = apiServer.start();
await expect(startResponse).resolves.toBeTruthy();
});
});

0 comments on commit 0006132

Please sign in to comment.