Skip to content

Commit 6042c12

Browse files
authored
Unify environment variable usage. (#71)
* Unify environment variable usage. * Tests were failing because nslookup non-existing-domain.orkes.io resolves to an A record
1 parent d324604 commit 6042c12

File tree

13 files changed

+55
-69
lines changed

13 files changed

+55
-69
lines changed

.github/workflows/pull_request.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@ jobs:
3131
- name: Run Tests
3232
run: yarn test --ci --reporters=default --reporters=jest-junit
3333
env:
34-
KEY_ID: ${{ secrets.KEY_ID }}
35-
KEY_SECRET: ${{ secrets.KEY_SECRET }}
36-
SERVER_URL: ${{ secrets.SERVER_URL }}
34+
CONDUCTOR_SERVER_URL: ${{ secrets.SERVER_URL }}
35+
CONDUCTOR_AUTH_KEY: ${{ secrets.KEY_ID }}
36+
CONDUCTOR_AUTH_SECRET: ${{ secrets.KEY_SECRET }}
3737
- name: Publish Test Results
3838
if: always()
3939
uses: dorny/test-reporter@v1

src/__test__/readme.test.ts

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,11 @@
11
import { expect, describe, test, jest } from "@jest/globals";
2-
import { OrkesApiConfig, orkesConductorClient } from "../orkes";
2+
import { orkesConductorClient } from "../orkes";
33
import { WorkflowExecutor, simpleTask, generate } from "../core";
44
import { TaskType } from "../common";
55
import { TaskRunner } from "../task";
66

7-
const config: Partial<OrkesApiConfig> = {
8-
keyId: `${process.env.KEY_ID}`,
9-
keySecret: `${process.env.KEY_SECRET}`,
10-
serverUrl: `${process.env.SERVER_URL}`,
11-
refreshTokenInterval: 0,
12-
};
13-
147
describe("TaskManager", () => {
15-
const clientPromise = orkesConductorClient(config);
8+
const clientPromise = orkesConductorClient({ useEnvVars: true });
169

1710
jest.setTimeout(20000);
1811
test("worker example ", async () => {

src/common/open-api/ConductorClient.ts

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ import { WorkflowBulkResourceService } from "./services/WorkflowBulkResourceServ
1414
import { WorkflowResourceService } from "./services/WorkflowResourceService";
1515
import { request as baseRequest } from "./core/request";
1616
import { ConductorHttpRequest } from "../RequestCustomizer";
17-
import { HumanTaskService } from './services/HumanTaskService';
18-
import { HumanTaskResourceService } from './services/HumanTaskResourceService';
17+
import { HumanTaskService } from "./services/HumanTaskService";
18+
import { HumanTaskResourceService } from "./services/HumanTaskResourceService";
1919

2020
export const defaultRequestHandler: ConductorHttpRequest = (
2121
request,
@@ -25,8 +25,23 @@ export const defaultRequestHandler: ConductorHttpRequest = (
2525

2626
export interface ConductorClientAPIConfig extends Omit<OpenAPIConfig, "BASE"> {
2727
serverUrl: string;
28+
useEnvVars: boolean;
2829
}
2930

31+
const getServerBaseURL = (config?: Partial<ConductorClientAPIConfig>) => {
32+
if (config?.useEnvVars) {
33+
if(!process.env.CONDUCTOR_SERVER_URL) {
34+
throw new Error(
35+
"Environment variable CONDUCTOR_SERVER_URL is not defined."
36+
);
37+
}
38+
39+
return process.env.CONDUCTOR_SERVER_URL;
40+
}
41+
42+
return config?.serverUrl ?? "http://localhost:8080";
43+
};
44+
3045
export class ConductorClient {
3146
public readonly eventResource: EventResourceService;
3247
public readonly healthCheckResource: HealthCheckResourceService;
@@ -48,7 +63,7 @@ export class ConductorClient {
4863
requestHandler: ConductorHttpRequest = defaultRequestHandler
4964
) {
5065
const resolvedConfig = {
51-
BASE: config?.serverUrl ?? "http://localhost:8080",
66+
BASE: getServerBaseURL(config),
5267
VERSION: config?.VERSION ?? "0",
5368
WITH_CREDENTIALS: config?.WITH_CREDENTIALS ?? false,
5469
CREDENTIALS: config?.CREDENTIALS ?? "include",

src/common/open-api/__test__/WorkflowResourceService.test.ts

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,11 @@ import { simpleTask, workflow } from "../../../core/sdk";
44
import { orkesConductorClient } from "../../../orkes";
55
import { TaskDefTypes } from "../../types";
66

7-
const config = {
8-
keyId: `${process.env.KEY_ID}`,
9-
keySecret: `${process.env.KEY_SECRET}`,
10-
serverUrl: `${process.env.SERVER_URL}`,
11-
};
12-
137
describe("WorkflowResourceService", () => {
148
jest.setTimeout(120000);
159

1610
test("Should test a workflow", async () => {
17-
const client = await orkesConductorClient(config);
11+
const client = await orkesConductorClient({ useEnvVars: true });
1812
const metadataClient = new MetadataClient(client);
1913
const tasks: TaskDefTypes[] = [
2014
simpleTask("simple_ref", "le_simple_task", {}),
@@ -23,14 +17,14 @@ describe("WorkflowResourceService", () => {
2317
const wfDef = workflow("unit_test_wf", tasks);
2418
wfDef.outputParameters = { message: "${simple_ref.output.message}" };
2519
metadataClient.registerWorkflowDef(wfDef, true);
26-
20+
2721
const status = "COMPLETED";
2822
const output = { message: "Mocked message" };
2923

3024
const wf = await client.workflowResource.testWorkflow({
3125
name: wfDef.name,
3226
taskRefToMockOutput: {
33-
"simple_ref": [{ status, output }],
27+
simple_ref: [{ status, output }],
3428
},
3529
});
3630

src/core/__test__/MetadataClient.test.ts

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,10 @@
11
import { expect, describe, test, jest } from "@jest/globals";
22
import { MetadataClient } from "../metadataClient";
33
import { taskDefinition } from "../sdk";
4-
import { orkesConductorClient, OrkesApiConfig } from "../../orkes";
5-
6-
const playConfig: Partial<OrkesApiConfig> = {
7-
keyId: `${process.env.KEY_ID}`,
8-
keySecret: `${process.env.KEY_SECRET}`,
9-
serverUrl: `${process.env.SERVER_URL}`,
10-
refreshTokenInterval: 0,
11-
};
4+
import { orkesConductorClient } from "../../orkes";
125

136
describe("MetadataClient", () => {
14-
const clientPromise = orkesConductorClient(playConfig);
7+
const clientPromise = orkesConductorClient({ useEnvVars: true });
158

169
jest.setTimeout(15000);
1710
test("Should register a task definition", async () => {

src/core/__test__/executor.test.ts

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,11 @@
11
import { expect, describe, test, jest } from "@jest/globals";
22
import { SetVariableTaskDef, TaskType, WorkflowDef } from "../../common";
3-
import { OrkesApiConfig, orkesConductorClient } from "../../orkes";
3+
import { orkesConductorClient } from "../../orkes";
44
import { WorkflowExecutor } from "../executor";
55
import { v4 as uuidv4 } from "uuid";
66

7-
const playConfig: Partial<OrkesApiConfig> = {
8-
keyId: `${process.env.KEY_ID}`,
9-
keySecret: `${process.env.KEY_SECRET}`,
10-
serverUrl: `${process.env.SERVER_URL}`,
11-
};
12-
137
describe("Executor", () => {
14-
const clientPromise = orkesConductorClient(playConfig);
8+
const clientPromise = orkesConductorClient({ useEnvVars: true });
159

1610
jest.setTimeout(15000);
1711
const name = `testWorkflow-${Date.now()}`;

src/core/__test__/schedulerExecutor.test.ts

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,10 @@
11
import { expect, describe, test, jest } from "@jest/globals";
2-
import { OrkesApiConfig, orkesConductorClient } from "../../orkes";
2+
import { orkesConductorClient } from "../../orkes";
33
import { SchedulerClient } from "../schedulerClient";
44
import { SaveScheduleRequest, TaskType, WorkflowDef } from "../../common";
55

6-
const playConfig: Partial<OrkesApiConfig> = {
7-
keyId: `${process.env.KEY_ID}`,
8-
keySecret: `${process.env.KEY_SECRET}`,
9-
serverUrl: `${process.env.SERVER_URL}`,
10-
};
11-
126
describe("ScheduleExecutor", () => {
13-
const clientPromise = orkesConductorClient(playConfig);
7+
const clientPromise = orkesConductorClient({ useEnvVars: true });
148
jest.setTimeout(15000);
159

1610
const name = `testSchedule_${Date.now()}`;

src/orkes/BaseOrkesConductorClient.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,18 @@ export const baseOrkesConductorClient = <
5656
config?: Partial<OrkesApiConfig>,
5757
requestHandler: ConductorHttpRequest = baseRequestHandler
5858
): Promise<ConductorClient> => {
59+
if (config?.useEnvVars) {
60+
if (!process.env.CONDUCTOR_SERVER_URL) {
61+
throw new Error(
62+
"Environment variable CONDUCTOR_SERVER_URL is not defined."
63+
);
64+
}
65+
66+
config.serverUrl = process.env.CONDUCTOR_SERVER_URL;
67+
config.keyId = process.env.CONDUCTOR_AUTH_KEY;
68+
config.keySecret = process.env.CONDUCTOR_AUTH_SECRET;
69+
}
70+
5971
if (config?.keySecret != null && config?.keyId != null) {
6072
const {
6173
serverUrl,

src/orkes/request/fetchCatchDns/__test__/DnsCache.test.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { expect, describe, test } from "@jest/globals";
22
import { DnsCacheResolver } from "../DnsCache";
33

44
const sampleDomain = "orkes.io";
5-
const nonExistingDomain = "non-existing-domain.orkes.io";
5+
const nonExistingDomain = "non-existing-domain.orkesdemo.io";
66

77
describe("dnsResolver", () => {
88
test("Should resolve dns", async () => {
@@ -15,6 +15,7 @@ describe("dnsResolver", () => {
1515
test("Should return empty if domain could not be resolved", async () => {
1616
const dnsCacheResolver2 = new DnsCacheResolver();
1717
const ip = await dnsCacheResolver2.resolve(nonExistingDomain);
18+
1819
expect(ip).not.toBeDefined();
1920
expect(dnsCacheResolver2.cache.size).toBe(0);
2021
});

src/orkes/request/fetchCatchDns/__test__/DnsResolver.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { expect, describe, test } from "@jest/globals";
22
import { dnsResolver } from "../DnsResolver";
33

44
const sampleDomain = "orkes.io";
5-
const nonExistingDomain = "non-existing-domain.orkes.io";
5+
const nonExistingDomain = "non-existing-domain.orkesdemo.io";
66

77
describe("dnsResolver", () => {
88
test("should resolve dns", async () => {

0 commit comments

Comments
 (0)