@stratum-hq/sdk 0.3.0 → 1.0.0
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/client.d.ts +2 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js.map +1 -1
- package/dist/context.d.ts +5 -5
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/dist/middleware/fastify.js.map +1 -1
- package/dist/types.d.ts +2 -2
- package/dist/types.d.ts.map +1 -1
- package/package.json +10 -2
- package/dist/__tests__/client.test.d.ts +0 -2
- package/dist/__tests__/client.test.d.ts.map +0 -1
- package/dist/__tests__/client.test.js +0 -303
- package/dist/__tests__/client.test.js.map +0 -1
- package/dist/__tests__/context.test.d.ts +0 -2
- package/dist/__tests__/context.test.d.ts.map +0 -1
- package/dist/__tests__/context.test.js +0 -117
- package/dist/__tests__/context.test.js.map +0 -1
- package/dist/__tests__/middleware-express.test.d.ts +0 -2
- package/dist/__tests__/middleware-express.test.d.ts.map +0 -1
- package/dist/__tests__/middleware-express.test.js +0 -339
- package/dist/__tests__/middleware-express.test.js.map +0 -1
- package/dist/__tests__/middleware-fastify.test.d.ts +0 -2
- package/dist/__tests__/middleware-fastify.test.d.ts.map +0 -1
- package/dist/__tests__/middleware-fastify.test.js +0 -266
- package/dist/__tests__/middleware-fastify.test.js.map +0 -1
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const vitest_1 = require("vitest");
|
|
4
|
-
const context_js_1 = require("../context.js");
|
|
5
|
-
const core_1 = require("@stratum-hq/core");
|
|
6
|
-
const makeContext = (tenantId) => ({
|
|
7
|
-
tenant_id: tenantId,
|
|
8
|
-
ancestry_path: `/${tenantId}`,
|
|
9
|
-
depth: 1,
|
|
10
|
-
resolved_config: {},
|
|
11
|
-
resolved_permissions: {},
|
|
12
|
-
isolation_strategy: "SHARED_RLS",
|
|
13
|
-
});
|
|
14
|
-
(0, vitest_1.describe)("tenant context utilities", () => {
|
|
15
|
-
(0, vitest_1.describe)("getTenantContext", () => {
|
|
16
|
-
(0, vitest_1.it)("throws TenantContextNotFoundError when called outside a run", () => {
|
|
17
|
-
// AsyncLocalStorage store is undefined outside of a run() call
|
|
18
|
-
// (assuming no prior enterWith in this test fiber)
|
|
19
|
-
(0, vitest_1.expect)(() => {
|
|
20
|
-
// Run in a fresh async context via tenantStorage.run to ensure isolation,
|
|
21
|
-
// then call getTenantContext outside any store — we verify the error type.
|
|
22
|
-
const outside = () => {
|
|
23
|
-
// Deliberately do NOT set up a context — just call getTenantContext
|
|
24
|
-
// We can't guarantee the outer scope has no context, so use a nested
|
|
25
|
-
// storage run with undefined to simulate absence.
|
|
26
|
-
return context_js_1.tenantStorage.run(undefined, () => (0, context_js_1.getTenantContext)());
|
|
27
|
-
};
|
|
28
|
-
outside();
|
|
29
|
-
}).toThrow(core_1.TenantContextNotFoundError);
|
|
30
|
-
});
|
|
31
|
-
});
|
|
32
|
-
(0, vitest_1.describe)("runWithTenantContext", () => {
|
|
33
|
-
(0, vitest_1.it)("provides context within the callback", () => {
|
|
34
|
-
const ctx = makeContext("tenant-123");
|
|
35
|
-
(0, context_js_1.runWithTenantContext)(ctx, () => {
|
|
36
|
-
const stored = (0, context_js_1.getTenantContext)();
|
|
37
|
-
(0, vitest_1.expect)(stored).toEqual(ctx);
|
|
38
|
-
(0, vitest_1.expect)(stored.tenant_id).toBe("tenant-123");
|
|
39
|
-
});
|
|
40
|
-
});
|
|
41
|
-
(0, vitest_1.it)("context is no longer accessible after the callback returns", () => {
|
|
42
|
-
const ctx = makeContext("tenant-abc");
|
|
43
|
-
(0, context_js_1.runWithTenantContext)(ctx, () => {
|
|
44
|
-
// context is available inside
|
|
45
|
-
(0, vitest_1.expect)((0, context_js_1.getTenantContext)().tenant_id).toBe("tenant-abc");
|
|
46
|
-
});
|
|
47
|
-
// After the synchronous callback, we are back in the outer scope.
|
|
48
|
-
// The outer scope has its own store value — either undefined or a prior context.
|
|
49
|
-
// We verify by running a fresh undefined context.
|
|
50
|
-
const outsideCtx = context_js_1.tenantStorage.run(undefined, () => context_js_1.tenantStorage.getStore());
|
|
51
|
-
(0, vitest_1.expect)(outsideCtx).toBeUndefined();
|
|
52
|
-
});
|
|
53
|
-
(0, vitest_1.it)("returns the value from the callback", () => {
|
|
54
|
-
const ctx = makeContext("tenant-ret");
|
|
55
|
-
const result = (0, context_js_1.runWithTenantContext)(ctx, () => 42);
|
|
56
|
-
(0, vitest_1.expect)(result).toBe(42);
|
|
57
|
-
});
|
|
58
|
-
(0, vitest_1.it)("isolates contexts between concurrent async runs", async () => {
|
|
59
|
-
const results = [];
|
|
60
|
-
await Promise.all([
|
|
61
|
-
new Promise((resolve) => {
|
|
62
|
-
(0, context_js_1.runWithTenantContext)(makeContext("tenant-a"), async () => {
|
|
63
|
-
await new Promise((r) => setTimeout(r, 10));
|
|
64
|
-
results.push((0, context_js_1.getTenantContext)().tenant_id);
|
|
65
|
-
resolve();
|
|
66
|
-
});
|
|
67
|
-
}),
|
|
68
|
-
new Promise((resolve) => {
|
|
69
|
-
(0, context_js_1.runWithTenantContext)(makeContext("tenant-b"), async () => {
|
|
70
|
-
await new Promise((r) => setTimeout(r, 5));
|
|
71
|
-
results.push((0, context_js_1.getTenantContext)().tenant_id);
|
|
72
|
-
resolve();
|
|
73
|
-
});
|
|
74
|
-
}),
|
|
75
|
-
]);
|
|
76
|
-
(0, vitest_1.expect)(results).toContain("tenant-a");
|
|
77
|
-
(0, vitest_1.expect)(results).toContain("tenant-b");
|
|
78
|
-
(0, vitest_1.expect)(results).toHaveLength(2);
|
|
79
|
-
});
|
|
80
|
-
(0, vitest_1.it)("nested runWithTenantContext sees the inner context", () => {
|
|
81
|
-
const outer = makeContext("outer-tenant");
|
|
82
|
-
const inner = makeContext("inner-tenant");
|
|
83
|
-
(0, context_js_1.runWithTenantContext)(outer, () => {
|
|
84
|
-
(0, vitest_1.expect)((0, context_js_1.getTenantContext)().tenant_id).toBe("outer-tenant");
|
|
85
|
-
(0, context_js_1.runWithTenantContext)(inner, () => {
|
|
86
|
-
(0, vitest_1.expect)((0, context_js_1.getTenantContext)().tenant_id).toBe("inner-tenant");
|
|
87
|
-
});
|
|
88
|
-
// After inner run exits, outer context is restored
|
|
89
|
-
(0, vitest_1.expect)((0, context_js_1.getTenantContext)().tenant_id).toBe("outer-tenant");
|
|
90
|
-
});
|
|
91
|
-
});
|
|
92
|
-
});
|
|
93
|
-
(0, vitest_1.describe)("tenantStorage (AsyncLocalStorage)", () => {
|
|
94
|
-
(0, vitest_1.it)("getStore returns undefined outside a run", () => {
|
|
95
|
-
const val = context_js_1.tenantStorage.run(undefined, () => context_js_1.tenantStorage.getStore());
|
|
96
|
-
(0, vitest_1.expect)(val).toBeUndefined();
|
|
97
|
-
});
|
|
98
|
-
(0, vitest_1.it)("getStore returns the context inside a run", () => {
|
|
99
|
-
const ctx = makeContext("direct-store");
|
|
100
|
-
const val = context_js_1.tenantStorage.run(ctx, () => context_js_1.tenantStorage.getStore());
|
|
101
|
-
(0, vitest_1.expect)(val).toEqual(ctx);
|
|
102
|
-
});
|
|
103
|
-
});
|
|
104
|
-
(0, vitest_1.describe)("setTenantContext", () => {
|
|
105
|
-
(0, vitest_1.it)("sets context accessible via getTenantContext in the same execution context", () => {
|
|
106
|
-
const ctx = makeContext("entered-tenant");
|
|
107
|
-
// setTenantContext uses enterWith — affects the current async context.
|
|
108
|
-
// We isolate this via tenantStorage.run to avoid polluting other tests.
|
|
109
|
-
context_js_1.tenantStorage.run(undefined, () => {
|
|
110
|
-
(0, context_js_1.setTenantContext)(ctx);
|
|
111
|
-
const stored = (0, context_js_1.getTenantContext)();
|
|
112
|
-
(0, vitest_1.expect)(stored.tenant_id).toBe("entered-tenant");
|
|
113
|
-
});
|
|
114
|
-
});
|
|
115
|
-
});
|
|
116
|
-
});
|
|
117
|
-
//# sourceMappingURL=context.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"context.test.js","sourceRoot":"","sources":["../../src/__tests__/context.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"middleware-express.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/middleware-express.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,339 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const vitest_1 = require("vitest");
|
|
4
|
-
const express_js_1 = require("../middleware/express.js");
|
|
5
|
-
const core_1 = require("@stratum-hq/core");
|
|
6
|
-
// ---------------------------------------------------------------------------
|
|
7
|
-
// Helpers
|
|
8
|
-
// ---------------------------------------------------------------------------
|
|
9
|
-
function makeTenantContextLegacy(tenantId) {
|
|
10
|
-
return {
|
|
11
|
-
tenant_id: tenantId,
|
|
12
|
-
ancestry_path: `/${tenantId}`,
|
|
13
|
-
depth: 1,
|
|
14
|
-
resolved_config: {},
|
|
15
|
-
resolved_permissions: {},
|
|
16
|
-
isolation_strategy: "SHARED_RLS",
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
function makeReq(headers = {}) {
|
|
20
|
-
return {
|
|
21
|
-
headers: {
|
|
22
|
-
...headers,
|
|
23
|
-
},
|
|
24
|
-
tenant: undefined,
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
function makeRes() {
|
|
28
|
-
const res = {};
|
|
29
|
-
res.status = vitest_1.vi.fn().mockReturnValue(res);
|
|
30
|
-
res.json = vitest_1.vi.fn().mockReturnValue(res);
|
|
31
|
-
return res;
|
|
32
|
-
}
|
|
33
|
-
function makeClient(overrides = {}) {
|
|
34
|
-
return {
|
|
35
|
-
resolveTenant: overrides.resolveTenant ?? vitest_1.vi.fn().mockResolvedValue(makeTenantContextLegacy("default-tenant")),
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
// ---------------------------------------------------------------------------
|
|
39
|
-
// Tests
|
|
40
|
-
// ---------------------------------------------------------------------------
|
|
41
|
-
(0, vitest_1.describe)("expressMiddleware", () => {
|
|
42
|
-
let next;
|
|
43
|
-
(0, vitest_1.beforeEach)(() => {
|
|
44
|
-
next = vitest_1.vi.fn();
|
|
45
|
-
});
|
|
46
|
-
(0, vitest_1.describe)("tenant resolution from header", () => {
|
|
47
|
-
(0, vitest_1.it)("sets req.tenant from X-Tenant-ID header", async () => {
|
|
48
|
-
const ctx = makeTenantContextLegacy("tenant-from-header");
|
|
49
|
-
const client = makeClient({
|
|
50
|
-
resolveTenant: vitest_1.vi.fn().mockResolvedValue(ctx),
|
|
51
|
-
});
|
|
52
|
-
const middleware = (0, express_js_1.expressMiddleware)(client);
|
|
53
|
-
const req = makeReq({ "x-tenant-id": "tenant-from-header" });
|
|
54
|
-
const res = makeRes();
|
|
55
|
-
await middleware(req, res, next);
|
|
56
|
-
(0, vitest_1.expect)(req.tenant).toEqual(ctx);
|
|
57
|
-
(0, vitest_1.expect)(client.resolveTenant).toHaveBeenCalledWith("tenant-from-header");
|
|
58
|
-
});
|
|
59
|
-
(0, vitest_1.it)("calls next() on successful resolution", async () => {
|
|
60
|
-
const ctx = makeTenantContextLegacy("t-1");
|
|
61
|
-
const client = makeClient({
|
|
62
|
-
resolveTenant: vitest_1.vi.fn().mockResolvedValue(ctx),
|
|
63
|
-
});
|
|
64
|
-
const middleware = (0, express_js_1.expressMiddleware)(client);
|
|
65
|
-
const req = makeReq({ "x-tenant-id": "t-1" });
|
|
66
|
-
const res = makeRes();
|
|
67
|
-
await middleware(req, res, next);
|
|
68
|
-
(0, vitest_1.expect)(next).toHaveBeenCalledTimes(1);
|
|
69
|
-
// next() called without error argument
|
|
70
|
-
(0, vitest_1.expect)(next).toHaveBeenCalledWith();
|
|
71
|
-
});
|
|
72
|
-
});
|
|
73
|
-
(0, vitest_1.describe)("missing tenant", () => {
|
|
74
|
-
(0, vitest_1.it)("returns 400 when no tenant ID can be resolved", async () => {
|
|
75
|
-
const client = makeClient();
|
|
76
|
-
const middleware = (0, express_js_1.expressMiddleware)(client);
|
|
77
|
-
const req = makeReq(); // No tenant header
|
|
78
|
-
const res = makeRes();
|
|
79
|
-
await middleware(req, res, next);
|
|
80
|
-
(0, vitest_1.expect)(res.status).toHaveBeenCalledWith(400);
|
|
81
|
-
(0, vitest_1.expect)(res.json).toHaveBeenCalledWith(vitest_1.expect.objectContaining({
|
|
82
|
-
error: vitest_1.expect.objectContaining({
|
|
83
|
-
code: "MISSING_TENANT",
|
|
84
|
-
}),
|
|
85
|
-
}));
|
|
86
|
-
});
|
|
87
|
-
(0, vitest_1.it)("does not call next() when tenant is missing", async () => {
|
|
88
|
-
const client = makeClient();
|
|
89
|
-
const middleware = (0, express_js_1.expressMiddleware)(client);
|
|
90
|
-
const req = makeReq();
|
|
91
|
-
const res = makeRes();
|
|
92
|
-
await middleware(req, res, next);
|
|
93
|
-
(0, vitest_1.expect)(next).not.toHaveBeenCalled();
|
|
94
|
-
});
|
|
95
|
-
});
|
|
96
|
-
(0, vitest_1.describe)("tenant not found", () => {
|
|
97
|
-
(0, vitest_1.it)("returns 404 when resolveTenant throws TenantNotFoundError", async () => {
|
|
98
|
-
const client = makeClient({
|
|
99
|
-
resolveTenant: vitest_1.vi.fn().mockRejectedValue(new core_1.TenantNotFoundError("t-missing")),
|
|
100
|
-
});
|
|
101
|
-
const middleware = (0, express_js_1.expressMiddleware)(client);
|
|
102
|
-
const req = makeReq({ "x-tenant-id": "t-missing" });
|
|
103
|
-
const res = makeRes();
|
|
104
|
-
await middleware(req, res, next);
|
|
105
|
-
(0, vitest_1.expect)(res.status).toHaveBeenCalledWith(404);
|
|
106
|
-
(0, vitest_1.expect)(res.json).toHaveBeenCalledWith(vitest_1.expect.objectContaining({
|
|
107
|
-
error: vitest_1.expect.objectContaining({
|
|
108
|
-
code: "TENANT_NOT_FOUND",
|
|
109
|
-
}),
|
|
110
|
-
}));
|
|
111
|
-
});
|
|
112
|
-
(0, vitest_1.it)("does not call next() when tenant is not found", async () => {
|
|
113
|
-
const client = makeClient({
|
|
114
|
-
resolveTenant: vitest_1.vi.fn().mockRejectedValue(new core_1.TenantNotFoundError("t-missing")),
|
|
115
|
-
});
|
|
116
|
-
const middleware = (0, express_js_1.expressMiddleware)(client);
|
|
117
|
-
const req = makeReq({ "x-tenant-id": "t-missing" });
|
|
118
|
-
const res = makeRes();
|
|
119
|
-
await middleware(req, res, next);
|
|
120
|
-
(0, vitest_1.expect)(next).not.toHaveBeenCalled();
|
|
121
|
-
});
|
|
122
|
-
});
|
|
123
|
-
(0, vitest_1.describe)("error handling", () => {
|
|
124
|
-
(0, vitest_1.it)("calls next(err) when an unexpected error occurs", async () => {
|
|
125
|
-
const error = new Error("unexpected failure");
|
|
126
|
-
const client = makeClient({
|
|
127
|
-
resolveTenant: vitest_1.vi.fn().mockRejectedValue(error),
|
|
128
|
-
});
|
|
129
|
-
const middleware = (0, express_js_1.expressMiddleware)(client);
|
|
130
|
-
const req = makeReq({ "x-tenant-id": "t-1" });
|
|
131
|
-
const res = makeRes();
|
|
132
|
-
await middleware(req, res, next);
|
|
133
|
-
(0, vitest_1.expect)(next).toHaveBeenCalledWith(error);
|
|
134
|
-
});
|
|
135
|
-
(0, vitest_1.it)("calls onError callback when provided and error is thrown", async () => {
|
|
136
|
-
const error = new Error("unexpected");
|
|
137
|
-
const onError = vitest_1.vi.fn();
|
|
138
|
-
const client = makeClient({
|
|
139
|
-
resolveTenant: vitest_1.vi.fn().mockRejectedValue(error),
|
|
140
|
-
});
|
|
141
|
-
const middleware = (0, express_js_1.expressMiddleware)(client, { onError });
|
|
142
|
-
const req = makeReq({ "x-tenant-id": "t-1" });
|
|
143
|
-
const res = makeRes();
|
|
144
|
-
await middleware(req, res, next);
|
|
145
|
-
(0, vitest_1.expect)(onError).toHaveBeenCalledWith(error, req);
|
|
146
|
-
});
|
|
147
|
-
});
|
|
148
|
-
(0, vitest_1.describe)("custom resolvers", () => {
|
|
149
|
-
(0, vitest_1.it)("uses custom resolver when header resolution fails", async () => {
|
|
150
|
-
const ctx = makeTenantContextLegacy("custom-resolved");
|
|
151
|
-
const client = makeClient({
|
|
152
|
-
resolveTenant: vitest_1.vi.fn().mockResolvedValue(ctx),
|
|
153
|
-
});
|
|
154
|
-
const customResolver = {
|
|
155
|
-
resolve: vitest_1.vi.fn().mockResolvedValue("custom-resolved"),
|
|
156
|
-
};
|
|
157
|
-
const middleware = (0, express_js_1.expressMiddleware)(client, {
|
|
158
|
-
resolvers: [customResolver],
|
|
159
|
-
});
|
|
160
|
-
const req = makeReq(); // No header
|
|
161
|
-
const res = makeRes();
|
|
162
|
-
await middleware(req, res, next);
|
|
163
|
-
(0, vitest_1.expect)(customResolver.resolve).toHaveBeenCalledWith(req);
|
|
164
|
-
(0, vitest_1.expect)(req.tenant).toEqual(ctx);
|
|
165
|
-
(0, vitest_1.expect)(next).toHaveBeenCalled();
|
|
166
|
-
});
|
|
167
|
-
(0, vitest_1.it)("stops at the first resolver that returns a value", async () => {
|
|
168
|
-
const ctx = makeTenantContextLegacy("first-resolved");
|
|
169
|
-
const client = makeClient({
|
|
170
|
-
resolveTenant: vitest_1.vi.fn().mockResolvedValue(ctx),
|
|
171
|
-
});
|
|
172
|
-
const resolver1 = {
|
|
173
|
-
resolve: vitest_1.vi.fn().mockResolvedValue("first-resolved"),
|
|
174
|
-
};
|
|
175
|
-
const resolver2 = {
|
|
176
|
-
resolve: vitest_1.vi.fn().mockResolvedValue("second-resolved"),
|
|
177
|
-
};
|
|
178
|
-
const middleware = (0, express_js_1.expressMiddleware)(client, {
|
|
179
|
-
resolvers: [resolver1, resolver2],
|
|
180
|
-
});
|
|
181
|
-
const req = makeReq();
|
|
182
|
-
const res = makeRes();
|
|
183
|
-
await middleware(req, res, next);
|
|
184
|
-
(0, vitest_1.expect)(resolver1.resolve).toHaveBeenCalled();
|
|
185
|
-
(0, vitest_1.expect)(resolver2.resolve).not.toHaveBeenCalled();
|
|
186
|
-
});
|
|
187
|
-
});
|
|
188
|
-
(0, vitest_1.describe)("tenant impersonation", () => {
|
|
189
|
-
(0, vitest_1.it)("impersonates when authorized and header is present", async () => {
|
|
190
|
-
const callerCtx = makeTenantContextLegacy("caller-tenant");
|
|
191
|
-
const targetCtx = makeTenantContextLegacy("target-tenant");
|
|
192
|
-
const client = makeClient({
|
|
193
|
-
resolveTenant: vitest_1.vi
|
|
194
|
-
.fn()
|
|
195
|
-
.mockResolvedValueOnce(callerCtx)
|
|
196
|
-
.mockResolvedValueOnce(targetCtx),
|
|
197
|
-
});
|
|
198
|
-
const authorize = vitest_1.vi.fn().mockReturnValue(true);
|
|
199
|
-
const onImpersonate = vitest_1.vi.fn();
|
|
200
|
-
const middleware = (0, express_js_1.expressMiddleware)(client, {
|
|
201
|
-
impersonation: {
|
|
202
|
-
enabled: true,
|
|
203
|
-
authorize,
|
|
204
|
-
onImpersonate,
|
|
205
|
-
},
|
|
206
|
-
});
|
|
207
|
-
const req = makeReq({
|
|
208
|
-
"x-tenant-id": "caller-tenant",
|
|
209
|
-
"x-impersonate-tenant": "target-tenant",
|
|
210
|
-
});
|
|
211
|
-
const res = makeRes();
|
|
212
|
-
await middleware(req, res, next);
|
|
213
|
-
(0, vitest_1.expect)(req.tenant).toEqual(targetCtx);
|
|
214
|
-
(0, vitest_1.expect)(req.impersonating).toBe(true);
|
|
215
|
-
(0, vitest_1.expect)(req.originalTenantId).toBe("caller-tenant");
|
|
216
|
-
(0, vitest_1.expect)(authorize).toHaveBeenCalledWith(req, "caller-tenant", "target-tenant");
|
|
217
|
-
(0, vitest_1.expect)(onImpersonate).toHaveBeenCalledWith(req, "caller-tenant", "target-tenant");
|
|
218
|
-
(0, vitest_1.expect)(next).toHaveBeenCalled();
|
|
219
|
-
});
|
|
220
|
-
(0, vitest_1.it)("returns 403 when impersonation is denied", async () => {
|
|
221
|
-
const callerCtx = makeTenantContextLegacy("caller-tenant");
|
|
222
|
-
const client = makeClient({
|
|
223
|
-
resolveTenant: vitest_1.vi.fn().mockResolvedValue(callerCtx),
|
|
224
|
-
});
|
|
225
|
-
const authorize = vitest_1.vi.fn().mockReturnValue(false);
|
|
226
|
-
const middleware = (0, express_js_1.expressMiddleware)(client, {
|
|
227
|
-
impersonation: {
|
|
228
|
-
enabled: true,
|
|
229
|
-
authorize,
|
|
230
|
-
},
|
|
231
|
-
});
|
|
232
|
-
const req = makeReq({
|
|
233
|
-
"x-tenant-id": "caller-tenant",
|
|
234
|
-
"x-impersonate-tenant": "target-tenant",
|
|
235
|
-
});
|
|
236
|
-
const res = makeRes();
|
|
237
|
-
await middleware(req, res, next);
|
|
238
|
-
(0, vitest_1.expect)(res.status).toHaveBeenCalledWith(403);
|
|
239
|
-
(0, vitest_1.expect)(res.json).toHaveBeenCalledWith(vitest_1.expect.objectContaining({
|
|
240
|
-
error: vitest_1.expect.objectContaining({
|
|
241
|
-
code: "IMPERSONATION_DENIED",
|
|
242
|
-
}),
|
|
243
|
-
}));
|
|
244
|
-
(0, vitest_1.expect)(next).not.toHaveBeenCalled();
|
|
245
|
-
});
|
|
246
|
-
(0, vitest_1.it)("skips impersonation when header matches own tenant", async () => {
|
|
247
|
-
const ctx = makeTenantContextLegacy("same-tenant");
|
|
248
|
-
const client = makeClient({
|
|
249
|
-
resolveTenant: vitest_1.vi.fn().mockResolvedValue(ctx),
|
|
250
|
-
});
|
|
251
|
-
const authorize = vitest_1.vi.fn();
|
|
252
|
-
const middleware = (0, express_js_1.expressMiddleware)(client, {
|
|
253
|
-
impersonation: {
|
|
254
|
-
enabled: true,
|
|
255
|
-
authorize,
|
|
256
|
-
},
|
|
257
|
-
});
|
|
258
|
-
const req = makeReq({
|
|
259
|
-
"x-tenant-id": "same-tenant",
|
|
260
|
-
"x-impersonate-tenant": "same-tenant",
|
|
261
|
-
});
|
|
262
|
-
const res = makeRes();
|
|
263
|
-
await middleware(req, res, next);
|
|
264
|
-
// Should NOT call authorize — same tenant, no impersonation needed
|
|
265
|
-
(0, vitest_1.expect)(authorize).not.toHaveBeenCalled();
|
|
266
|
-
(0, vitest_1.expect)(req.tenant).toEqual(ctx);
|
|
267
|
-
(0, vitest_1.expect)(req.impersonating).toBe(false);
|
|
268
|
-
(0, vitest_1.expect)(next).toHaveBeenCalled();
|
|
269
|
-
});
|
|
270
|
-
(0, vitest_1.it)("skips impersonation when not enabled", async () => {
|
|
271
|
-
const ctx = makeTenantContextLegacy("caller");
|
|
272
|
-
const client = makeClient({
|
|
273
|
-
resolveTenant: vitest_1.vi.fn().mockResolvedValue(ctx),
|
|
274
|
-
});
|
|
275
|
-
const middleware = (0, express_js_1.expressMiddleware)(client);
|
|
276
|
-
const req = makeReq({
|
|
277
|
-
"x-tenant-id": "caller",
|
|
278
|
-
"x-impersonate-tenant": "target",
|
|
279
|
-
});
|
|
280
|
-
const res = makeRes();
|
|
281
|
-
await middleware(req, res, next);
|
|
282
|
-
// No impersonation config — header ignored
|
|
283
|
-
(0, vitest_1.expect)(req.tenant).toEqual(ctx);
|
|
284
|
-
(0, vitest_1.expect)(req.impersonating).toBe(false);
|
|
285
|
-
(0, vitest_1.expect)(next).toHaveBeenCalled();
|
|
286
|
-
});
|
|
287
|
-
(0, vitest_1.it)("supports custom impersonation header name", async () => {
|
|
288
|
-
const callerCtx = makeTenantContextLegacy("caller");
|
|
289
|
-
const targetCtx = makeTenantContextLegacy("target");
|
|
290
|
-
const client = makeClient({
|
|
291
|
-
resolveTenant: vitest_1.vi
|
|
292
|
-
.fn()
|
|
293
|
-
.mockResolvedValueOnce(callerCtx)
|
|
294
|
-
.mockResolvedValueOnce(targetCtx),
|
|
295
|
-
});
|
|
296
|
-
const middleware = (0, express_js_1.expressMiddleware)(client, {
|
|
297
|
-
impersonation: {
|
|
298
|
-
enabled: true,
|
|
299
|
-
headerName: "X-View-As",
|
|
300
|
-
authorize: () => true,
|
|
301
|
-
},
|
|
302
|
-
});
|
|
303
|
-
const req = makeReq({
|
|
304
|
-
"x-tenant-id": "caller",
|
|
305
|
-
"x-view-as": "target",
|
|
306
|
-
});
|
|
307
|
-
const res = makeRes();
|
|
308
|
-
await middleware(req, res, next);
|
|
309
|
-
(0, vitest_1.expect)(req.tenant).toEqual(targetCtx);
|
|
310
|
-
(0, vitest_1.expect)(req.impersonating).toBe(true);
|
|
311
|
-
});
|
|
312
|
-
(0, vitest_1.it)("supports async authorize function", async () => {
|
|
313
|
-
const callerCtx = makeTenantContextLegacy("caller");
|
|
314
|
-
const targetCtx = makeTenantContextLegacy("target");
|
|
315
|
-
const client = makeClient({
|
|
316
|
-
resolveTenant: vitest_1.vi
|
|
317
|
-
.fn()
|
|
318
|
-
.mockResolvedValueOnce(callerCtx)
|
|
319
|
-
.mockResolvedValueOnce(targetCtx),
|
|
320
|
-
});
|
|
321
|
-
const authorize = vitest_1.vi.fn().mockResolvedValue(true);
|
|
322
|
-
const middleware = (0, express_js_1.expressMiddleware)(client, {
|
|
323
|
-
impersonation: {
|
|
324
|
-
enabled: true,
|
|
325
|
-
authorize,
|
|
326
|
-
},
|
|
327
|
-
});
|
|
328
|
-
const req = makeReq({
|
|
329
|
-
"x-tenant-id": "caller",
|
|
330
|
-
"x-impersonate-tenant": "target",
|
|
331
|
-
});
|
|
332
|
-
const res = makeRes();
|
|
333
|
-
await middleware(req, res, next);
|
|
334
|
-
(0, vitest_1.expect)(req.impersonating).toBe(true);
|
|
335
|
-
(0, vitest_1.expect)(authorize).toHaveBeenCalled();
|
|
336
|
-
});
|
|
337
|
-
});
|
|
338
|
-
});
|
|
339
|
-
//# sourceMappingURL=middleware-express.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"middleware-express.test.js","sourceRoot":"","sources":["../../src/__tests__/middleware-express.test.ts"],"names":[],"mappings":";;AAAA,mCAA8D;AAC9D,yDAA6D;AAE7D,2CAAuD;AAEvD,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,SAAS,uBAAuB,CAAC,QAAgB;IAC/C,OAAO;QACL,SAAS,EAAE,QAAQ;QACnB,aAAa,EAAE,IAAI,QAAQ,EAAE;QAC7B,KAAK,EAAE,CAAC;QACR,eAAe,EAAE,EAAE;QACnB,oBAAoB,EAAE,EAAE;QACxB,kBAAkB,EAAE,YAAY;KACjC,CAAC;AACJ,CAAC;AAED,SAAS,OAAO,CAAC,UAAkC,EAAE;IACnD,OAAO;QACL,OAAO,EAAE;YACP,GAAG,OAAO;SACX;QACD,MAAM,EAAE,SAA4C;KACrD,CAAC;AACJ,CAAC;AAED,SAAS,OAAO;IACd,MAAM,GAAG,GAA4B,EAAE,CAAC;IACxC,GAAG,CAAC,MAAM,GAAG,WAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IAC1C,GAAG,CAAC,IAAI,GAAG,WAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IACxC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,UAAU,CAAC,YAAkE,EAAE;IACtF,OAAO;QACL,aAAa,EACX,SAAS,CAAC,aAAa,IAAI,WAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,CAAC;KAC/C,CAAC;AACvD,CAAC;AAED,8EAA8E;AAC9E,QAAQ;AACR,8EAA8E;AAE9E,IAAA,iBAAQ,EAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,IAAI,IAA8B,CAAC;IAEnC,IAAA,mBAAU,EAAC,GAAG,EAAE;QACd,IAAI,GAAG,WAAE,CAAC,EAAE,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,+BAA+B,EAAE,GAAG,EAAE;QAC7C,IAAA,WAAE,EAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;YACvD,MAAM,GAAG,GAAG,uBAAuB,CAAC,oBAAoB,CAAC,CAAC;YAC1D,MAAM,MAAM,GAAG,UAAU,CAAC;gBACxB,aAAa,EAAE,WAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC;aAC9C,CAAC,CAAC;YACH,MAAM,UAAU,GAAG,IAAA,8BAAiB,EAAC,MAAM,CAAC,CAAC;YAC7C,MAAM,GAAG,GAAG,OAAO,CAAC,EAAE,aAAa,EAAE,oBAAoB,EAAE,CAAC,CAAC;YAC7D,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;YAEtB,MAAM,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAEjC,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAChC,IAAA,eAAM,EAAC,MAAM,CAAC,aAAa,CAAC,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;YACrD,MAAM,GAAG,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;YAC3C,MAAM,MAAM,GAAG,UAAU,CAAC;gBACxB,aAAa,EAAE,WAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC;aAC9C,CAAC,CAAC;YACH,MAAM,UAAU,GAAG,IAAA,8BAAiB,EAAC,MAAM,CAAC,CAAC;YAC7C,MAAM,GAAG,GAAG,OAAO,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;YAC9C,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;YAEtB,MAAM,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAEjC,IAAA,eAAM,EAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YACtC,uCAAuC;YACvC,IAAA,eAAM,EAAC,IAAI,CAAC,CAAC,oBAAoB,EAAE,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,IAAA,WAAE,EAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;YAC5B,MAAM,UAAU,GAAG,IAAA,8BAAiB,EAAC,MAAM,CAAC,CAAC;YAC7C,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC,CAAC,mBAAmB;YAC1C,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;YAEtB,MAAM,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAEjC,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;YAC7C,IAAA,eAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,oBAAoB,CACnC,eAAM,CAAC,gBAAgB,CAAC;gBACtB,KAAK,EAAE,eAAM,CAAC,gBAAgB,CAAC;oBAC7B,IAAI,EAAE,gBAAgB;iBACvB,CAAC;aACH,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAC3D,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;YAC5B,MAAM,UAAU,GAAG,IAAA,8BAAiB,EAAC,MAAM,CAAC,CAAC;YAC7C,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;YAEtB,MAAM,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAEjC,IAAA,eAAM,EAAC,IAAI,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,IAAA,WAAE,EAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;YACzE,MAAM,MAAM,GAAG,UAAU,CAAC;gBACxB,aAAa,EAAE,WAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,0BAAmB,CAAC,WAAW,CAAC,CAAC;aAC/E,CAAC,CAAC;YACH,MAAM,UAAU,GAAG,IAAA,8BAAiB,EAAC,MAAM,CAAC,CAAC;YAC7C,MAAM,GAAG,GAAG,OAAO,CAAC,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC,CAAC;YACpD,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;YAEtB,MAAM,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAEjC,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;YAC7C,IAAA,eAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,oBAAoB,CACnC,eAAM,CAAC,gBAAgB,CAAC;gBACtB,KAAK,EAAE,eAAM,CAAC,gBAAgB,CAAC;oBAC7B,IAAI,EAAE,kBAAkB;iBACzB,CAAC;aACH,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,MAAM,GAAG,UAAU,CAAC;gBACxB,aAAa,EAAE,WAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,0BAAmB,CAAC,WAAW,CAAC,CAAC;aAC/E,CAAC,CAAC;YACH,MAAM,UAAU,GAAG,IAAA,8BAAiB,EAAC,MAAM,CAAC,CAAC;YAC7C,MAAM,GAAG,GAAG,OAAO,CAAC,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC,CAAC;YACpD,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;YAEtB,MAAM,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAEjC,IAAA,eAAM,EAAC,IAAI,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,IAAA,WAAE,EAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAC/D,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;YAC9C,MAAM,MAAM,GAAG,UAAU,CAAC;gBACxB,aAAa,EAAE,WAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC;aAChD,CAAC,CAAC;YACH,MAAM,UAAU,GAAG,IAAA,8BAAiB,EAAC,MAAM,CAAC,CAAC;YAC7C,MAAM,GAAG,GAAG,OAAO,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;YAC9C,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;YAEtB,MAAM,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAEjC,IAAA,eAAM,EAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;YACxE,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;YACtC,MAAM,OAAO,GAAG,WAAE,CAAC,EAAE,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,UAAU,CAAC;gBACxB,aAAa,EAAE,WAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC;aAChD,CAAC,CAAC;YACH,MAAM,UAAU,GAAG,IAAA,8BAAiB,EAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;YAC1D,MAAM,GAAG,GAAG,OAAO,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;YAC9C,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;YAEtB,MAAM,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAEjC,IAAA,eAAM,EAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,IAAA,WAAE,EAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;YACjE,MAAM,GAAG,GAAG,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;YACvD,MAAM,MAAM,GAAG,UAAU,CAAC;gBACxB,aAAa,EAAE,WAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC;aAC9C,CAAC,CAAC;YACH,MAAM,cAAc,GAAG;gBACrB,OAAO,EAAE,WAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,iBAAiB,CAAC;aACtD,CAAC;YACF,MAAM,UAAU,GAAG,IAAA,8BAAiB,EAAC,MAAM,EAAE;gBAC3C,SAAS,EAAE,CAAC,cAAc,CAAC;aAC5B,CAAC,CAAC;YACH,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC,CAAC,YAAY;YACnC,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;YAEtB,MAAM,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAEjC,IAAA,eAAM,EAAC,cAAc,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;YACzD,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAChC,IAAA,eAAM,EAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;YAChE,MAAM,GAAG,GAAG,uBAAuB,CAAC,gBAAgB,CAAC,CAAC;YACtD,MAAM,MAAM,GAAG,UAAU,CAAC;gBACxB,aAAa,EAAE,WAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC;aAC9C,CAAC,CAAC;YACH,MAAM,SAAS,GAAG;gBAChB,OAAO,EAAE,WAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,gBAAgB,CAAC;aACrD,CAAC;YACF,MAAM,SAAS,GAAG;gBAChB,OAAO,EAAE,WAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,iBAAiB,CAAC;aACtD,CAAC;YACF,MAAM,UAAU,GAAG,IAAA,8BAAiB,EAAC,MAAM,EAAE;gBAC3C,SAAS,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;aAClC,CAAC,CAAC;YACH,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;YAEtB,MAAM,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAEjC,IAAA,eAAM,EAAC,SAAS,CAAC,OAAO,CAAC,CAAC,gBAAgB,EAAE,CAAC;YAC7C,IAAA,eAAM,EAAC,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC,IAAA,WAAE,EAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;YAClE,MAAM,SAAS,GAAG,uBAAuB,CAAC,eAAe,CAAC,CAAC;YAC3D,MAAM,SAAS,GAAG,uBAAuB,CAAC,eAAe,CAAC,CAAC;YAC3D,MAAM,MAAM,GAAG,UAAU,CAAC;gBACxB,aAAa,EAAE,WAAE;qBACd,EAAE,EAAE;qBACJ,qBAAqB,CAAC,SAAS,CAAC;qBAChC,qBAAqB,CAAC,SAAS,CAAC;aACpC,CAAC,CAAC;YACH,MAAM,SAAS,GAAG,WAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAChD,MAAM,aAAa,GAAG,WAAE,CAAC,EAAE,EAAE,CAAC;YAC9B,MAAM,UAAU,GAAG,IAAA,8BAAiB,EAAC,MAAM,EAAE;gBAC3C,aAAa,EAAE;oBACb,OAAO,EAAE,IAAI;oBACb,SAAS;oBACT,aAAa;iBACd;aACF,CAAC,CAAC;YACH,MAAM,GAAG,GAAG,OAAO,CAAC;gBAClB,aAAa,EAAE,eAAe;gBAC9B,sBAAsB,EAAE,eAAe;aACxC,CAAQ,CAAC;YACV,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;YAEtB,MAAM,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAEjC,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACtC,IAAA,eAAM,EAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrC,IAAA,eAAM,EAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACnD,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,GAAG,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC;YAC9E,IAAA,eAAM,EAAC,aAAa,CAAC,CAAC,oBAAoB,CAAC,GAAG,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC;YAClF,IAAA,eAAM,EAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;YACxD,MAAM,SAAS,GAAG,uBAAuB,CAAC,eAAe,CAAC,CAAC;YAC3D,MAAM,MAAM,GAAG,UAAU,CAAC;gBACxB,aAAa,EAAE,WAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;aACpD,CAAC,CAAC;YACH,MAAM,SAAS,GAAG,WAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YACjD,MAAM,UAAU,GAAG,IAAA,8BAAiB,EAAC,MAAM,EAAE;gBAC3C,aAAa,EAAE;oBACb,OAAO,EAAE,IAAI;oBACb,SAAS;iBACV;aACF,CAAC,CAAC;YACH,MAAM,GAAG,GAAG,OAAO,CAAC;gBAClB,aAAa,EAAE,eAAe;gBAC9B,sBAAsB,EAAE,eAAe;aACxC,CAAC,CAAC;YACH,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;YAEtB,MAAM,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAEjC,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;YAC7C,IAAA,eAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,oBAAoB,CACnC,eAAM,CAAC,gBAAgB,CAAC;gBACtB,KAAK,EAAE,eAAM,CAAC,gBAAgB,CAAC;oBAC7B,IAAI,EAAE,sBAAsB;iBAC7B,CAAC;aACH,CAAC,CACH,CAAC;YACF,IAAA,eAAM,EAAC,IAAI,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;YAClE,MAAM,GAAG,GAAG,uBAAuB,CAAC,aAAa,CAAC,CAAC;YACnD,MAAM,MAAM,GAAG,UAAU,CAAC;gBACxB,aAAa,EAAE,WAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC;aAC9C,CAAC,CAAC;YACH,MAAM,SAAS,GAAG,WAAE,CAAC,EAAE,EAAE,CAAC;YAC1B,MAAM,UAAU,GAAG,IAAA,8BAAiB,EAAC,MAAM,EAAE;gBAC3C,aAAa,EAAE;oBACb,OAAO,EAAE,IAAI;oBACb,SAAS;iBACV;aACF,CAAC,CAAC;YACH,MAAM,GAAG,GAAG,OAAO,CAAC;gBAClB,aAAa,EAAE,aAAa;gBAC5B,sBAAsB,EAAE,aAAa;aACtC,CAAQ,CAAC;YACV,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;YAEtB,MAAM,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAEjC,mEAAmE;YACnE,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACzC,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAChC,IAAA,eAAM,EAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtC,IAAA,eAAM,EAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;YACpD,MAAM,GAAG,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;YAC9C,MAAM,MAAM,GAAG,UAAU,CAAC;gBACxB,aAAa,EAAE,WAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC;aAC9C,CAAC,CAAC;YACH,MAAM,UAAU,GAAG,IAAA,8BAAiB,EAAC,MAAM,CAAC,CAAC;YAC7C,MAAM,GAAG,GAAG,OAAO,CAAC;gBAClB,aAAa,EAAE,QAAQ;gBACvB,sBAAsB,EAAE,QAAQ;aACjC,CAAQ,CAAC;YACV,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;YAEtB,MAAM,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAEjC,2CAA2C;YAC3C,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAChC,IAAA,eAAM,EAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtC,IAAA,eAAM,EAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;YACzD,MAAM,SAAS,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;YACpD,MAAM,SAAS,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;YACpD,MAAM,MAAM,GAAG,UAAU,CAAC;gBACxB,aAAa,EAAE,WAAE;qBACd,EAAE,EAAE;qBACJ,qBAAqB,CAAC,SAAS,CAAC;qBAChC,qBAAqB,CAAC,SAAS,CAAC;aACpC,CAAC,CAAC;YACH,MAAM,UAAU,GAAG,IAAA,8BAAiB,EAAC,MAAM,EAAE;gBAC3C,aAAa,EAAE;oBACb,OAAO,EAAE,IAAI;oBACb,UAAU,EAAE,WAAW;oBACvB,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI;iBACtB;aACF,CAAC,CAAC;YACH,MAAM,GAAG,GAAG,OAAO,CAAC;gBAClB,aAAa,EAAE,QAAQ;gBACvB,WAAW,EAAE,QAAQ;aACtB,CAAQ,CAAC;YACV,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;YAEtB,MAAM,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAEjC,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACtC,IAAA,eAAM,EAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;YACjD,MAAM,SAAS,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;YACpD,MAAM,SAAS,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;YACpD,MAAM,MAAM,GAAG,UAAU,CAAC;gBACxB,aAAa,EAAE,WAAE;qBACd,EAAE,EAAE;qBACJ,qBAAqB,CAAC,SAAS,CAAC;qBAChC,qBAAqB,CAAC,SAAS,CAAC;aACpC,CAAC,CAAC;YACH,MAAM,SAAS,GAAG,WAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAClD,MAAM,UAAU,GAAG,IAAA,8BAAiB,EAAC,MAAM,EAAE;gBAC3C,aAAa,EAAE;oBACb,OAAO,EAAE,IAAI;oBACb,SAAS;iBACV;aACF,CAAC,CAAC;YACH,MAAM,GAAG,GAAG,OAAO,CAAC;gBAClB,aAAa,EAAE,QAAQ;gBACvB,sBAAsB,EAAE,QAAQ;aACjC,CAAQ,CAAC;YACV,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;YAEtB,MAAM,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAEjC,IAAA,eAAM,EAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrC,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,gBAAgB,EAAE,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"middleware-fastify.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/middleware-fastify.test.ts"],"names":[],"mappings":""}
|