@blokjs/trigger-grpc 0.6.18 → 0.6.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/GRpcTrigger.js +22 -2
- package/dist/GRpcTrigger.js.map +1 -1
- package/package.json +7 -6
- package/.env.example +0 -8
- package/CHANGELOG.md +0 -143
- package/__tests__/unit/GRpcTrigger.test.ts +0 -313
- package/__tests__/unit/GrpcClient.test.ts +0 -138
- package/__tests__/unit/GrpcServer.test.ts +0 -127
- package/__tests__/unit/MessageDecode.test.ts +0 -314
- package/__tests__/unit/NanoSDK.test.ts +0 -162
- package/__tests__/unit/Nodes.test.ts +0 -16
- package/buf.gen.yaml +0 -11
- package/buf.yaml +0 -9
- package/localhost+2-key.pem +0 -28
- package/localhost+2.pem +0 -27
- package/proto/workflow.proto +0 -33
- package/src/GRpcTrigger.ts +0 -265
- package/src/GrpcClient.ts +0 -87
- package/src/GrpcServer.ts +0 -63
- package/src/MessageDecode.ts +0 -142
- package/src/NanoSDK.ts +0 -146
- package/src/Nodes.ts +0 -10
- package/src/Workflows.ts +0 -5
- package/src/gen/workflow_pb.ts +0 -142
- package/src/index.ts +0 -22
- package/src/opentelemetry_metrics.ts +0 -26
- package/src/server.ts +0 -8
- package/src/types/Message.ts +0 -0
- package/src/types/RuntimeWorkflow.ts +0 -7
- package/src/types/Workflows.ts +0 -7
- package/tsconfig.json +0 -34
- package/vitest.config.ts +0 -29
- package/workflows/countries.json +0 -31
package/dist/GRpcTrigger.js
CHANGED
|
@@ -47,6 +47,15 @@ export default class GRpcTrigger extends TriggerBase {
|
|
|
47
47
|
this.nodeMap.workflows = workflows;
|
|
48
48
|
}
|
|
49
49
|
processRequest(router, trigger) {
|
|
50
|
+
// F5/F6/F14 · gRPC boots via `GrpcServer.start()` → `processRequest`
|
|
51
|
+
// (its `listen()` is a no-op that returns 0). Run the shared boot
|
|
52
|
+
// setup here so a gRPC-only process gets crash/orphan/janitor/shutdown
|
|
53
|
+
// handlers, a populated WorkflowRegistry (subworkflow + middleware
|
|
54
|
+
// resolution), and `BLOK_GLOBAL_MIDDLEWARE` env seeding — parity with
|
|
55
|
+
// HTTP/Worker. All three helpers are idempotent.
|
|
56
|
+
trigger.installOperationalHandlers(trigger.logger);
|
|
57
|
+
trigger.registerWorkflowsFromNodeMap(trigger.logger);
|
|
58
|
+
trigger.seedGlobalMiddlewareFromEnv(trigger.logger);
|
|
50
59
|
router.service(WorkflowService, {
|
|
51
60
|
executeWorkflow: (request) => trigger.executeWorkflow(request),
|
|
52
61
|
});
|
|
@@ -102,6 +111,12 @@ export default class GRpcTrigger extends TriggerBase {
|
|
|
102
111
|
let ctx = this.createContext(undefined, name, id);
|
|
103
112
|
ctx.request = messageContext.request;
|
|
104
113
|
ctx.logger.log(`Workflow: ${name}, Version: ${this.configuration.version}`);
|
|
114
|
+
// F1 · apply the merged middleware chain (process-global →
|
|
115
|
+
// workflow-level → trigger-level) before the main workflow
|
|
116
|
+
// body, after ctx.request is populated. A throwing middleware
|
|
117
|
+
// propagates to the outer catch (error encode). Pre-fix gRPC
|
|
118
|
+
// silently skipped ALL middleware — including auth gates.
|
|
119
|
+
await this.applyMiddlewareChain(ctx, this.nodeMap);
|
|
105
120
|
const response = await this.run(ctx);
|
|
106
121
|
ctx = response.ctx;
|
|
107
122
|
const average = response.metrics;
|
|
@@ -109,10 +124,15 @@ export default class GRpcTrigger extends TriggerBase {
|
|
|
109
124
|
// and runtime adapter nodes (raw data without wrapper)
|
|
110
125
|
const hasWrapper = ctx.response && typeof ctx.response === "object" && "data" in ctx.response && "contentType" in ctx.response;
|
|
111
126
|
if (!hasWrapper) {
|
|
112
|
-
// Runtime adapter node: ctx.response is raw data, wrap it
|
|
127
|
+
// Runtime adapter node: ctx.response is raw data, wrap it.
|
|
128
|
+
// The content-type comes from the SDK's proto `content_type`
|
|
129
|
+
// via the `_stepContentType` side-channel (set by
|
|
130
|
+
// RuntimeAdapterNode, reset per-step by RunnerSteps), so it
|
|
131
|
+
// travels alongside the body rather than inside it.
|
|
132
|
+
const resolvedContentType = ctx._stepContentType || "application/json";
|
|
113
133
|
ctx.response = {
|
|
114
134
|
data: ctx.response,
|
|
115
|
-
contentType:
|
|
135
|
+
contentType: resolvedContentType,
|
|
116
136
|
success: true,
|
|
117
137
|
error: null,
|
|
118
138
|
};
|
package/dist/GRpcTrigger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GRpcTrigger.js","sourceRoot":"","sources":["../src/GRpcTrigger.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"GRpcTrigger.js","sourceRoot":"","sources":["../src/GRpcTrigger.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blokjs/trigger-grpc",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.20",
|
|
4
|
+
"files": ["dist"],
|
|
4
5
|
"description": "",
|
|
5
6
|
"type": "module",
|
|
6
7
|
"engines": {
|
|
@@ -35,11 +36,11 @@
|
|
|
35
36
|
"@connectrpc/connect": "^2.1.1",
|
|
36
37
|
"@connectrpc/connect-fastify": "^2.1.1",
|
|
37
38
|
"@connectrpc/connect-node": "^2.1.1",
|
|
38
|
-
"@blokjs/api-call": "^0.6.
|
|
39
|
-
"@blokjs/helper": "^0.6.
|
|
40
|
-
"@blokjs/if-else": "^0.6.
|
|
41
|
-
"@blokjs/runner": "^0.6.
|
|
42
|
-
"@blokjs/shared": "^0.6.
|
|
39
|
+
"@blokjs/api-call": "^0.6.20",
|
|
40
|
+
"@blokjs/helper": "^0.6.20",
|
|
41
|
+
"@blokjs/if-else": "^0.6.20",
|
|
42
|
+
"@blokjs/runner": "^0.6.20",
|
|
43
|
+
"@blokjs/shared": "^0.6.20",
|
|
43
44
|
"@opentelemetry/api": "^1.9.0",
|
|
44
45
|
"@opentelemetry/exporter-prometheus": "^0.57.2",
|
|
45
46
|
"@opentelemetry/resources": "^1.30.1",
|
package/.env.example
DELETED
package/CHANGELOG.md
DELETED
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
# @blokjs/trigger-grpc
|
|
2
|
-
|
|
3
|
-
## 0.2.0
|
|
4
|
-
|
|
5
|
-
### Minor Changes
|
|
6
|
-
|
|
7
|
-
- Initial public release of Blok packages.
|
|
8
|
-
|
|
9
|
-
This release includes:
|
|
10
|
-
|
|
11
|
-
- Core packages: @blokjs/shared, @blokjs/helper, @blokjs/runner
|
|
12
|
-
- Node packages: @blokjs/api-call, @blokjs/if-else, @blokjs/react
|
|
13
|
-
- Trigger packages: pubsub, queue, webhook, websocket, worker, cron, grpc
|
|
14
|
-
- CLI tool: blokctl
|
|
15
|
-
- Editor support: @blokjs/lsp-server, @blokjs/syntax
|
|
16
|
-
|
|
17
|
-
### Patch Changes
|
|
18
|
-
|
|
19
|
-
- Updated dependencies
|
|
20
|
-
- @blokjs/shared@0.2.0
|
|
21
|
-
- @blokjs/helper@0.2.0
|
|
22
|
-
- @blokjs/runner@0.2.0
|
|
23
|
-
- @blokjs/api-call@0.2.0
|
|
24
|
-
- @blokjs/if-else@0.2.0
|
|
25
|
-
|
|
26
|
-
## 0.0.14
|
|
27
|
-
|
|
28
|
-
### Patch Changes
|
|
29
|
-
|
|
30
|
-
- Updated dependencies
|
|
31
|
-
- @blokjs/runner@0.1.26
|
|
32
|
-
- @blokjs/if-else@0.0.30
|
|
33
|
-
- @blokjs/api-call@0.1.29
|
|
34
|
-
|
|
35
|
-
## 0.0.13
|
|
36
|
-
|
|
37
|
-
### Patch Changes
|
|
38
|
-
|
|
39
|
-
- Updated dependencies
|
|
40
|
-
- @blokjs/runner@0.1.25
|
|
41
|
-
- @blokjs/if-else@0.0.29
|
|
42
|
-
- @blokjs/api-call@0.1.28
|
|
43
|
-
|
|
44
|
-
## 0.0.12
|
|
45
|
-
|
|
46
|
-
### Patch Changes
|
|
47
|
-
|
|
48
|
-
- Updated dependencies
|
|
49
|
-
- @blokjs/runner@0.1.24
|
|
50
|
-
- @blokjs/if-else@0.0.28
|
|
51
|
-
- @blokjs/api-call@0.1.27
|
|
52
|
-
|
|
53
|
-
## 0.0.11
|
|
54
|
-
|
|
55
|
-
### Patch Changes
|
|
56
|
-
|
|
57
|
-
- Updated dependencies
|
|
58
|
-
- @blokjs/runner@0.1.23
|
|
59
|
-
- @blokjs/if-else@0.0.27
|
|
60
|
-
- @blokjs/api-call@0.1.26
|
|
61
|
-
|
|
62
|
-
## 0.0.10
|
|
63
|
-
|
|
64
|
-
### Patch Changes
|
|
65
|
-
|
|
66
|
-
- Updated dependencies
|
|
67
|
-
- @blokjs/runner@0.1.22
|
|
68
|
-
- @blokjs/if-else@0.0.26
|
|
69
|
-
- @blokjs/api-call@0.1.25
|
|
70
|
-
|
|
71
|
-
## 0.0.9
|
|
72
|
-
|
|
73
|
-
### Patch Changes
|
|
74
|
-
|
|
75
|
-
- Updated dependencies
|
|
76
|
-
- @blokjs/runner@0.1.21
|
|
77
|
-
- @blokjs/if-else@0.0.25
|
|
78
|
-
- @blokjs/api-call@0.1.24
|
|
79
|
-
|
|
80
|
-
## 0.0.8
|
|
81
|
-
|
|
82
|
-
### Patch Changes
|
|
83
|
-
|
|
84
|
-
- added GRPC remote node execution server and client (NodeJS)
|
|
85
|
-
- Updated dependencies
|
|
86
|
-
- @blokjs/helper@0.1.5
|
|
87
|
-
- @blokjs/runner@0.1.20
|
|
88
|
-
- @blokjs/if-else@0.0.24
|
|
89
|
-
- @blokjs/api-call@0.1.23
|
|
90
|
-
|
|
91
|
-
## 0.0.7
|
|
92
|
-
|
|
93
|
-
### Patch Changes
|
|
94
|
-
|
|
95
|
-
- Updated dependencies
|
|
96
|
-
- @blokjs/runner@0.1.19
|
|
97
|
-
- @blokjs/shared@0.0.9
|
|
98
|
-
- @blokjs/if-else@0.0.23
|
|
99
|
-
- @blokjs/api-call@0.1.22
|
|
100
|
-
|
|
101
|
-
## 0.0.6
|
|
102
|
-
|
|
103
|
-
### Patch Changes
|
|
104
|
-
|
|
105
|
-
- Added examples and create project' command to include examples and 'create node' command with options for type ('module' or 'class') and template ('class' or 'ui')
|
|
106
|
-
- Updated dependencies
|
|
107
|
-
- @blokjs/if-else@0.0.22
|
|
108
|
-
- @blokjs/api-call@0.1.21
|
|
109
|
-
- @blokjs/runner@0.1.18
|
|
110
|
-
- @blokjs/shared@0.0.8
|
|
111
|
-
|
|
112
|
-
## 0.0.5
|
|
113
|
-
|
|
114
|
-
### Patch Changes
|
|
115
|
-
|
|
116
|
-
- Successfully implemented all the enhancements and improvements identified during our internal hackathon.
|
|
117
|
-
|
|
118
|
-
## 0.0.4
|
|
119
|
-
|
|
120
|
-
### Patch Changes
|
|
121
|
-
|
|
122
|
-
- Updated dependencies
|
|
123
|
-
- @blokjs/runner@0.1.17
|
|
124
|
-
- @blokjs/if-else@0.0.21
|
|
125
|
-
- @blokjs/api-call@0.1.20
|
|
126
|
-
|
|
127
|
-
## 0.0.3
|
|
128
|
-
|
|
129
|
-
### Patch Changes
|
|
130
|
-
|
|
131
|
-
- Added support for YAML, XML and TOML in the workflow file. Upgraded package version recommended by Dependabot.
|
|
132
|
-
- Updated dependencies
|
|
133
|
-
- @blokjs/if-else@0.0.20
|
|
134
|
-
- @blokjs/api-call@0.1.19
|
|
135
|
-
- @blokjs/helper@0.1.4
|
|
136
|
-
- @blokjs/runner@0.1.16
|
|
137
|
-
- @blokjs/shared@0.0.7
|
|
138
|
-
|
|
139
|
-
## 0.0.2
|
|
140
|
-
|
|
141
|
-
### Patch Changes
|
|
142
|
-
|
|
143
|
-
- Implemented grpc client library
|
|
@@ -1,313 +0,0 @@
|
|
|
1
|
-
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
2
|
-
|
|
3
|
-
// Mock OpenTelemetry
|
|
4
|
-
vi.mock("@opentelemetry/api", () => ({
|
|
5
|
-
trace: {
|
|
6
|
-
getTracer: () => ({
|
|
7
|
-
startActiveSpan: (_name: string, fn: (span: any) => any) =>
|
|
8
|
-
fn({
|
|
9
|
-
setAttribute: vi.fn(),
|
|
10
|
-
setStatus: vi.fn(),
|
|
11
|
-
recordException: vi.fn(),
|
|
12
|
-
end: vi.fn(),
|
|
13
|
-
}),
|
|
14
|
-
}),
|
|
15
|
-
},
|
|
16
|
-
metrics: {
|
|
17
|
-
getMeter: () => ({
|
|
18
|
-
createCounter: () => ({ add: vi.fn() }),
|
|
19
|
-
createGauge: () => ({ record: vi.fn() }),
|
|
20
|
-
}),
|
|
21
|
-
},
|
|
22
|
-
SpanStatusCode: { OK: 0, ERROR: 1 },
|
|
23
|
-
}));
|
|
24
|
-
|
|
25
|
-
// Mock fastify — must be a callable function (not arrow, since source may use `new`)
|
|
26
|
-
vi.mock("fastify", () => ({
|
|
27
|
-
default: () => ({
|
|
28
|
-
register: vi.fn(),
|
|
29
|
-
listen: vi.fn(),
|
|
30
|
-
use: vi.fn(),
|
|
31
|
-
}),
|
|
32
|
-
}));
|
|
33
|
-
|
|
34
|
-
// Mock uuid
|
|
35
|
-
vi.mock("uuid", () => ({ v4: () => "test-uuid-1234" }));
|
|
36
|
-
|
|
37
|
-
// Mock Nodes and Workflows
|
|
38
|
-
vi.mock("../../src/Nodes", () => ({ default: {} }));
|
|
39
|
-
vi.mock("../../src/Workflows", () => ({ default: {} }));
|
|
40
|
-
|
|
41
|
-
// Mock runner — TriggerBase and other classes must be constructable
|
|
42
|
-
vi.mock("@blokjs/runner", () => {
|
|
43
|
-
class MockNodeMap {
|
|
44
|
-
nodes: Record<string, any> = {};
|
|
45
|
-
addNode(key: string, val: any) {
|
|
46
|
-
this.nodes[key] = val;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
class MockTriggerBase {
|
|
51
|
-
configuration: any;
|
|
52
|
-
nodeMap: any;
|
|
53
|
-
constructor() {
|
|
54
|
-
this.configuration = {
|
|
55
|
-
name: "test-workflow",
|
|
56
|
-
version: "1.0.0",
|
|
57
|
-
init: vi.fn().mockResolvedValue(undefined),
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
createContext(_: any, name: string, id: string) {
|
|
61
|
-
return {
|
|
62
|
-
id,
|
|
63
|
-
request: { body: {}, headers: {}, query: {}, params: {} },
|
|
64
|
-
response: { data: { ok: true }, error: null, success: true, contentType: "application/json" },
|
|
65
|
-
error: { message: "" },
|
|
66
|
-
logger: { log: vi.fn(), error: vi.fn() },
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
async run(ctx: any) {
|
|
70
|
-
return {
|
|
71
|
-
ctx,
|
|
72
|
-
metrics: {
|
|
73
|
-
memory: { total: 10, min: 5, max: 15 },
|
|
74
|
-
cpu: { average: 50, total: 100, usage: 75, model: "test-cpu" },
|
|
75
|
-
},
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
return {
|
|
81
|
-
DefaultLogger: class {
|
|
82
|
-
log() {}
|
|
83
|
-
error() {}
|
|
84
|
-
},
|
|
85
|
-
NodeMap: MockNodeMap,
|
|
86
|
-
TriggerBase: MockTriggerBase,
|
|
87
|
-
};
|
|
88
|
-
});
|
|
89
|
-
|
|
90
|
-
// Mock helper
|
|
91
|
-
vi.mock("@blokjs/helper", () => ({
|
|
92
|
-
Workflow: vi.fn().mockReturnValue({
|
|
93
|
-
addTrigger: vi.fn().mockReturnValue({
|
|
94
|
-
addStep: vi.fn().mockReturnValue({ name: "Remote Node", steps: [] }),
|
|
95
|
-
}),
|
|
96
|
-
}),
|
|
97
|
-
}));
|
|
98
|
-
|
|
99
|
-
// Mock shared — GlobalError must be a class
|
|
100
|
-
vi.mock("@blokjs/shared", () => ({
|
|
101
|
-
GlobalError: class GlobalError extends Error {
|
|
102
|
-
context: any;
|
|
103
|
-
constructor(message: string) {
|
|
104
|
-
super(message);
|
|
105
|
-
this.context = { message, code: undefined, json: null };
|
|
106
|
-
}
|
|
107
|
-
setCode(code: number) {
|
|
108
|
-
this.context.code = code;
|
|
109
|
-
}
|
|
110
|
-
hasJson() {
|
|
111
|
-
return this.context.json !== null && this.context.json !== undefined;
|
|
112
|
-
}
|
|
113
|
-
},
|
|
114
|
-
}));
|
|
115
|
-
|
|
116
|
-
import GRpcTrigger from "../../src/GRpcTrigger";
|
|
117
|
-
import { MessageEncoding, MessageType } from "../../src/gen/workflow_pb";
|
|
118
|
-
|
|
119
|
-
describe("GRpcTrigger", () => {
|
|
120
|
-
let trigger: GRpcTrigger;
|
|
121
|
-
|
|
122
|
-
beforeEach(() => {
|
|
123
|
-
vi.clearAllMocks();
|
|
124
|
-
trigger = new GRpcTrigger();
|
|
125
|
-
});
|
|
126
|
-
|
|
127
|
-
describe("constructor()", () => {
|
|
128
|
-
it("should create instance without errors", () => {
|
|
129
|
-
expect(trigger).toBeDefined();
|
|
130
|
-
});
|
|
131
|
-
|
|
132
|
-
it("should call loadNodes and loadWorkflows", () => {
|
|
133
|
-
expect(trigger.getApp()).toBeDefined();
|
|
134
|
-
});
|
|
135
|
-
});
|
|
136
|
-
|
|
137
|
-
describe("getApp()", () => {
|
|
138
|
-
it("should return fastify instance", () => {
|
|
139
|
-
const app = trigger.getApp();
|
|
140
|
-
expect(app).toBeDefined();
|
|
141
|
-
expect(typeof app.register).toBe("function");
|
|
142
|
-
});
|
|
143
|
-
});
|
|
144
|
-
|
|
145
|
-
describe("listen()", () => {
|
|
146
|
-
it("should return 0", async () => {
|
|
147
|
-
const result = await trigger.listen();
|
|
148
|
-
expect(result).toBe(0);
|
|
149
|
-
});
|
|
150
|
-
});
|
|
151
|
-
|
|
152
|
-
describe("processRequest()", () => {
|
|
153
|
-
it("should register WorkflowService on the router", () => {
|
|
154
|
-
const mockService = vi.fn();
|
|
155
|
-
const mockRouter = { service: mockService };
|
|
156
|
-
trigger.processRequest(mockRouter as any, trigger);
|
|
157
|
-
expect(mockService).toHaveBeenCalled();
|
|
158
|
-
});
|
|
159
|
-
});
|
|
160
|
-
|
|
161
|
-
describe("executeWorkflow()", () => {
|
|
162
|
-
it("should execute workflow and return encoded response", async () => {
|
|
163
|
-
const payload = {
|
|
164
|
-
request: { body: {}, headers: {}, query: {}, params: {} },
|
|
165
|
-
response: { data: null, error: null, success: true },
|
|
166
|
-
};
|
|
167
|
-
const base64 = Buffer.from(JSON.stringify(payload)).toString("base64");
|
|
168
|
-
const request = {
|
|
169
|
-
Name: "test-workflow",
|
|
170
|
-
Message: base64,
|
|
171
|
-
Encoding: MessageEncoding[MessageEncoding.BASE64],
|
|
172
|
-
Type: MessageType[MessageType.JSON],
|
|
173
|
-
};
|
|
174
|
-
|
|
175
|
-
const result = await trigger.executeWorkflow(request as any);
|
|
176
|
-
expect(result).toBeDefined();
|
|
177
|
-
expect(result.Encoding).toBeDefined();
|
|
178
|
-
});
|
|
179
|
-
|
|
180
|
-
it("should use requestId from query when available", async () => {
|
|
181
|
-
const payload = {
|
|
182
|
-
request: { body: {}, headers: {}, query: { requestId: "custom-req-id" }, params: {} },
|
|
183
|
-
response: { data: null, error: null, success: true },
|
|
184
|
-
};
|
|
185
|
-
const base64 = Buffer.from(JSON.stringify(payload)).toString("base64");
|
|
186
|
-
const request = {
|
|
187
|
-
Name: "test-workflow",
|
|
188
|
-
Message: base64,
|
|
189
|
-
Encoding: MessageEncoding[MessageEncoding.BASE64],
|
|
190
|
-
Type: MessageType[MessageType.JSON],
|
|
191
|
-
};
|
|
192
|
-
|
|
193
|
-
const result = await trigger.executeWorkflow(request as any);
|
|
194
|
-
expect(result).toBeDefined();
|
|
195
|
-
});
|
|
196
|
-
|
|
197
|
-
it("should handle remote node execution with workflow model", async () => {
|
|
198
|
-
const payload = {
|
|
199
|
-
request: { body: {}, headers: {}, query: {}, params: {} },
|
|
200
|
-
workflow: {
|
|
201
|
-
name: "Remote Node",
|
|
202
|
-
version: "1.0.0",
|
|
203
|
-
description: "Test",
|
|
204
|
-
trigger: { grpc: {} },
|
|
205
|
-
steps: [{ name: "node", node: "test-node", type: "module" }],
|
|
206
|
-
nodes: { node: { inputs: {} } },
|
|
207
|
-
},
|
|
208
|
-
};
|
|
209
|
-
const base64 = Buffer.from(JSON.stringify(payload)).toString("base64");
|
|
210
|
-
const request = {
|
|
211
|
-
Name: "test-node",
|
|
212
|
-
Message: base64,
|
|
213
|
-
Encoding: MessageEncoding[MessageEncoding.BASE64],
|
|
214
|
-
Type: MessageType[MessageType.JSON],
|
|
215
|
-
};
|
|
216
|
-
|
|
217
|
-
const result = await trigger.executeWorkflow(request as any);
|
|
218
|
-
expect(result).toBeDefined();
|
|
219
|
-
});
|
|
220
|
-
|
|
221
|
-
it("should handle runtime.python3 node type", async () => {
|
|
222
|
-
const payload = {
|
|
223
|
-
request: { body: {}, headers: {}, query: {}, params: {} },
|
|
224
|
-
workflow: {
|
|
225
|
-
name: "Remote Node",
|
|
226
|
-
version: "1.0.0",
|
|
227
|
-
description: "Test",
|
|
228
|
-
trigger: { grpc: {} },
|
|
229
|
-
steps: [{ name: "node", node: "py-node", type: "runtime.python3" }],
|
|
230
|
-
nodes: { node: { inputs: {} } },
|
|
231
|
-
},
|
|
232
|
-
};
|
|
233
|
-
const base64 = Buffer.from(JSON.stringify(payload)).toString("base64");
|
|
234
|
-
const request = {
|
|
235
|
-
Name: "py-node",
|
|
236
|
-
Message: base64,
|
|
237
|
-
Encoding: MessageEncoding[MessageEncoding.BASE64],
|
|
238
|
-
Type: MessageType[MessageType.JSON],
|
|
239
|
-
};
|
|
240
|
-
|
|
241
|
-
const result = await trigger.executeWorkflow(request as any);
|
|
242
|
-
expect(result).toBeDefined();
|
|
243
|
-
});
|
|
244
|
-
|
|
245
|
-
it("should handle local node type", async () => {
|
|
246
|
-
const payload = {
|
|
247
|
-
request: { body: {}, headers: {}, query: {}, params: {} },
|
|
248
|
-
workflow: {
|
|
249
|
-
name: "Remote Node",
|
|
250
|
-
version: "1.0.0",
|
|
251
|
-
description: "Test",
|
|
252
|
-
trigger: { grpc: {} },
|
|
253
|
-
steps: [{ name: "node", node: "local-node", type: "local" }],
|
|
254
|
-
nodes: { node: { inputs: {} } },
|
|
255
|
-
},
|
|
256
|
-
};
|
|
257
|
-
const base64 = Buffer.from(JSON.stringify(payload)).toString("base64");
|
|
258
|
-
const request = {
|
|
259
|
-
Name: "local-node",
|
|
260
|
-
Message: base64,
|
|
261
|
-
Encoding: MessageEncoding[MessageEncoding.BASE64],
|
|
262
|
-
Type: MessageType[MessageType.JSON],
|
|
263
|
-
};
|
|
264
|
-
|
|
265
|
-
const result = await trigger.executeWorkflow(request as any);
|
|
266
|
-
expect(result).toBeDefined();
|
|
267
|
-
});
|
|
268
|
-
|
|
269
|
-
it("should handle generic Error during execution", async () => {
|
|
270
|
-
const failTrigger = new GRpcTrigger();
|
|
271
|
-
(failTrigger as any).configuration.init = vi.fn().mockRejectedValue(new Error("Init failed"));
|
|
272
|
-
|
|
273
|
-
const payload = {
|
|
274
|
-
request: { body: {}, headers: {}, query: {}, params: {} },
|
|
275
|
-
};
|
|
276
|
-
const base64 = Buffer.from(JSON.stringify(payload)).toString("base64");
|
|
277
|
-
const request = {
|
|
278
|
-
Name: "fail-workflow",
|
|
279
|
-
Message: base64,
|
|
280
|
-
Encoding: MessageEncoding[MessageEncoding.BASE64],
|
|
281
|
-
Type: MessageType[MessageType.JSON],
|
|
282
|
-
};
|
|
283
|
-
|
|
284
|
-
const result = await failTrigger.executeWorkflow(request as any);
|
|
285
|
-
expect(result).toBeDefined();
|
|
286
|
-
expect(result.Encoding).toBe(MessageEncoding[MessageEncoding.BASE64]);
|
|
287
|
-
});
|
|
288
|
-
|
|
289
|
-
it("should set default contentType when empty", async () => {
|
|
290
|
-
const payload = {
|
|
291
|
-
request: { body: {}, headers: {}, query: {}, params: {} },
|
|
292
|
-
};
|
|
293
|
-
const base64 = Buffer.from(JSON.stringify(payload)).toString("base64");
|
|
294
|
-
const request = {
|
|
295
|
-
Name: "test-workflow",
|
|
296
|
-
Message: base64,
|
|
297
|
-
Encoding: MessageEncoding[MessageEncoding.BASE64],
|
|
298
|
-
Type: MessageType[MessageType.JSON],
|
|
299
|
-
};
|
|
300
|
-
|
|
301
|
-
// Override createContext to return empty contentType
|
|
302
|
-
const origCreateContext = (trigger as any).createContext.bind(trigger);
|
|
303
|
-
(trigger as any).createContext = (_: any, name: string, id: string) => {
|
|
304
|
-
const ctx = origCreateContext(_, name, id);
|
|
305
|
-
ctx.response.contentType = "";
|
|
306
|
-
return ctx;
|
|
307
|
-
};
|
|
308
|
-
|
|
309
|
-
const result = await trigger.executeWorkflow(request as any);
|
|
310
|
-
expect(result).toBeDefined();
|
|
311
|
-
});
|
|
312
|
-
});
|
|
313
|
-
});
|