@shipfox/api-triggers 10.2.0 → 12.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/.turbo/turbo-build.log +4 -4
- package/CHANGELOG.md +67 -0
- package/README.md +12 -12
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +3 -3
- package/dist/core/config.js.map +1 -1
- package/dist/core/dispatch-integration-event.d.ts.map +1 -1
- package/dist/core/dispatch-integration-event.js +2 -0
- package/dist/core/dispatch-integration-event.js.map +1 -1
- package/dist/core/route-event-to-job-listeners.d.ts +1 -0
- package/dist/core/route-event-to-job-listeners.d.ts.map +1 -1
- package/dist/core/route-event-to-job-listeners.js +21 -4
- package/dist/core/route-event-to-job-listeners.js.map +1 -1
- package/dist/core/workflows-client.d.ts +10 -1
- package/dist/core/workflows-client.d.ts.map +1 -1
- package/dist/presentation/routes/fire-manual.d.ts.map +1 -1
- package/dist/presentation/routes/fire-manual.js +11 -3
- package/dist/presentation/routes/fire-manual.js.map +1 -1
- package/dist/presentation/routes/get-trigger-event.d.ts.map +1 -1
- package/dist/presentation/routes/get-trigger-event.js +11 -4
- package/dist/presentation/routes/get-trigger-event.js.map +1 -1
- package/dist/presentation/routes/list-trigger-event-facets.d.ts.map +1 -1
- package/dist/presentation/routes/list-trigger-event-facets.js +6 -8
- package/dist/presentation/routes/list-trigger-event-facets.js.map +1 -1
- package/dist/presentation/routes/list-trigger-events.d.ts.map +1 -1
- package/dist/presentation/routes/list-trigger-events.js +5 -7
- package/dist/presentation/routes/list-trigger-events.js.map +1 -1
- package/dist/tsconfig.test.tsbuildinfo +1 -1
- package/package.json +13 -13
- package/src/core/config.test.ts +23 -0
- package/src/core/config.ts +3 -2
- package/src/core/dispatch-integration-event.history-failure.test.ts +5 -0
- package/src/core/dispatch-integration-event.test.ts +8 -1
- package/src/core/dispatch-integration-event.ts +2 -0
- package/src/core/route-event-to-job-listeners.test.ts +99 -0
- package/src/core/route-event-to-job-listeners.ts +29 -2
- package/src/core/workflows-client.test.ts +8 -0
- package/src/presentation/routes/fire-manual.test.ts +22 -2
- package/src/presentation/routes/fire-manual.ts +11 -3
- package/src/presentation/routes/get-trigger-event.test.ts +16 -2
- package/src/presentation/routes/get-trigger-event.ts +9 -4
- package/src/presentation/routes/list-trigger-event-facets.test.ts +18 -2
- package/src/presentation/routes/list-trigger-event-facets.ts +3 -6
- package/src/presentation/routes/list-trigger-events.test.ts +18 -2
- package/src/presentation/routes/list-trigger-events.ts +2 -5
- package/tsconfig.build.tsbuildinfo +1 -1
|
@@ -12,7 +12,11 @@ const eventIds = (res: {json: () => {trigger_events: Array<{id: string}>}}) =>
|
|
|
12
12
|
describe('GET /trigger-events', () => {
|
|
13
13
|
let app: FastifyInstance;
|
|
14
14
|
let workspaceId: string;
|
|
15
|
-
let memberships: Array<{
|
|
15
|
+
let memberships: Array<{
|
|
16
|
+
workspaceId: string;
|
|
17
|
+
role: 'admin';
|
|
18
|
+
workspaceStatus: 'active' | 'suspended' | 'deleted';
|
|
19
|
+
}>;
|
|
16
20
|
|
|
17
21
|
beforeAll(async () => {
|
|
18
22
|
app = Fastify();
|
|
@@ -31,7 +35,7 @@ describe('GET /trigger-events', () => {
|
|
|
31
35
|
|
|
32
36
|
beforeEach(() => {
|
|
33
37
|
workspaceId = crypto.randomUUID();
|
|
34
|
-
memberships = [{workspaceId, role: 'admin'}];
|
|
38
|
+
memberships = [{workspaceId, role: 'admin', workspaceStatus: 'active'}];
|
|
35
39
|
});
|
|
36
40
|
|
|
37
41
|
test('returns a workspace events newest first, isolated and payload-free', async () => {
|
|
@@ -318,6 +322,18 @@ describe('GET /trigger-events', () => {
|
|
|
318
322
|
expect(res.json()).toEqual({trigger_events: [], next_cursor: null});
|
|
319
323
|
});
|
|
320
324
|
|
|
325
|
+
test('returns workspace-suspended for a suspended membership claim', async () => {
|
|
326
|
+
memberships = [{workspaceId, role: 'admin', workspaceStatus: 'suspended'}];
|
|
327
|
+
|
|
328
|
+
const res = await app.inject({
|
|
329
|
+
method: 'GET',
|
|
330
|
+
url: `/trigger-events?workspace_id=${workspaceId}`,
|
|
331
|
+
});
|
|
332
|
+
|
|
333
|
+
expect(res.statusCode).toBe(409);
|
|
334
|
+
expect(res.json().code).toBe('workspace-suspended');
|
|
335
|
+
});
|
|
336
|
+
|
|
321
337
|
test('denies a workspace the caller does not belong to', async () => {
|
|
322
338
|
const otherWorkspaceId = crypto.randomUUID();
|
|
323
339
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {requireWorkspaceAccess} from '@shipfox/api-auth-context';
|
|
2
2
|
import {
|
|
3
3
|
triggerEventListQuerySchema,
|
|
4
4
|
triggerEventListResponseSchema,
|
|
@@ -30,10 +30,7 @@ export const listTriggerEventsRoute = defineRoute({
|
|
|
30
30
|
cursor,
|
|
31
31
|
} = request.query;
|
|
32
32
|
|
|
33
|
-
|
|
34
|
-
if (!userContext.canAccess(workspaceId)) {
|
|
35
|
-
throw new ClientError('Not a member of this workspace', 'forbidden', {status: 403});
|
|
36
|
-
}
|
|
33
|
+
requireWorkspaceAccess({request, workspaceId});
|
|
37
34
|
|
|
38
35
|
const decodedCursor = decodeTimestampIdCursor(cursor);
|
|
39
36
|
if (cursor && !decodedCursor) {
|