@grantex/conformance 0.1.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/README.md +115 -0
- package/dist/cleanup.d.ts +15 -0
- package/dist/cleanup.d.ts.map +1 -0
- package/dist/cleanup.js +62 -0
- package/dist/cleanup.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +41 -0
- package/dist/cli.js.map +1 -0
- package/dist/flow.d.ts +29 -0
- package/dist/flow.d.ts.map +1 -0
- package/dist/flow.js +77 -0
- package/dist/flow.js.map +1 -0
- package/dist/helpers.d.ts +15 -0
- package/dist/helpers.d.ts.map +1 -0
- package/dist/helpers.js +70 -0
- package/dist/helpers.js.map +1 -0
- package/dist/http-client.d.ts +15 -0
- package/dist/http-client.d.ts.map +1 -0
- package/dist/http-client.js +71 -0
- package/dist/http-client.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/reporter.d.ts +4 -0
- package/dist/reporter.d.ts.map +1 -0
- package/dist/reporter.js +72 -0
- package/dist/reporter.js.map +1 -0
- package/dist/runner.d.ts +3 -0
- package/dist/runner.d.ts.map +1 -0
- package/dist/runner.js +160 -0
- package/dist/runner.js.map +1 -0
- package/dist/suites/agents.d.ts +3 -0
- package/dist/suites/agents.d.ts.map +1 -0
- package/dist/suites/agents.js +53 -0
- package/dist/suites/agents.js.map +1 -0
- package/dist/suites/anomalies.d.ts +3 -0
- package/dist/suites/anomalies.d.ts.map +1 -0
- package/dist/suites/anomalies.js +27 -0
- package/dist/suites/anomalies.js.map +1 -0
- package/dist/suites/audit.d.ts +3 -0
- package/dist/suites/audit.d.ts.map +1 -0
- package/dist/suites/audit.js +70 -0
- package/dist/suites/audit.js.map +1 -0
- package/dist/suites/authorize.d.ts +3 -0
- package/dist/suites/authorize.d.ts.map +1 -0
- package/dist/suites/authorize.js +54 -0
- package/dist/suites/authorize.js.map +1 -0
- package/dist/suites/compliance.d.ts +3 -0
- package/dist/suites/compliance.d.ts.map +1 -0
- package/dist/suites/compliance.js +33 -0
- package/dist/suites/compliance.js.map +1 -0
- package/dist/suites/delegation.d.ts +3 -0
- package/dist/suites/delegation.d.ts.map +1 -0
- package/dist/suites/delegation.js +120 -0
- package/dist/suites/delegation.js.map +1 -0
- package/dist/suites/grants.d.ts +3 -0
- package/dist/suites/grants.d.ts.map +1 -0
- package/dist/suites/grants.js +34 -0
- package/dist/suites/grants.js.map +1 -0
- package/dist/suites/health.d.ts +3 -0
- package/dist/suites/health.d.ts.map +1 -0
- package/dist/suites/health.js +30 -0
- package/dist/suites/health.js.map +1 -0
- package/dist/suites/policies.d.ts +3 -0
- package/dist/suites/policies.d.ts.map +1 -0
- package/dist/suites/policies.js +51 -0
- package/dist/suites/policies.js.map +1 -0
- package/dist/suites/scim.d.ts +3 -0
- package/dist/suites/scim.d.ts.map +1 -0
- package/dist/suites/scim.js +64 -0
- package/dist/suites/scim.js.map +1 -0
- package/dist/suites/security.d.ts +3 -0
- package/dist/suites/security.d.ts.map +1 -0
- package/dist/suites/security.js +69 -0
- package/dist/suites/security.js.map +1 -0
- package/dist/suites/sso.d.ts +3 -0
- package/dist/suites/sso.d.ts.map +1 -0
- package/dist/suites/sso.js +35 -0
- package/dist/suites/sso.js.map +1 -0
- package/dist/suites/token.d.ts +3 -0
- package/dist/suites/token.d.ts.map +1 -0
- package/dist/suites/token.js +61 -0
- package/dist/suites/token.js.map +1 -0
- package/dist/suites/tokens.d.ts +3 -0
- package/dist/suites/tokens.d.ts.map +1 -0
- package/dist/suites/tokens.js +43 -0
- package/dist/suites/tokens.js.map +1 -0
- package/dist/suites/webhooks.d.ts +3 -0
- package/dist/suites/webhooks.d.ts.map +1 -0
- package/dist/suites/webhooks.js +36 -0
- package/dist/suites/webhooks.js.map +1 -0
- package/dist/types.d.ts +60 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +49 -0
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { test, expectStatus, expectKeys, expectEqual, expectBoolean } from '../helpers.js';
|
|
2
|
+
export const tokensSuite = {
|
|
3
|
+
name: 'tokens',
|
|
4
|
+
description: 'Token verification and revocation',
|
|
5
|
+
optional: false,
|
|
6
|
+
run: async (ctx) => {
|
|
7
|
+
const results = [];
|
|
8
|
+
const { agentId, agentDid } = ctx.sharedAgent;
|
|
9
|
+
// Execute full flow to get tokens (reuse shared agent)
|
|
10
|
+
const flow = await ctx.flow.executeFullFlow({ agentId, agentDid });
|
|
11
|
+
const grantToken = flow.grantToken;
|
|
12
|
+
results.push(await test('POST /v1/tokens/verify returns valid=true for active token', '§7.2', async () => {
|
|
13
|
+
const res = await ctx.http.post('/v1/tokens/verify', { token: grantToken });
|
|
14
|
+
expectStatus(res, 200);
|
|
15
|
+
expectKeys(res.body, ['valid', 'grantId', 'scopes', 'principal', 'agent', 'expiresAt']);
|
|
16
|
+
expectEqual(res.body.valid, true, 'valid');
|
|
17
|
+
}));
|
|
18
|
+
results.push(await test('POST /v1/tokens/revoke returns 204', '§7.3', async () => {
|
|
19
|
+
// Decode the JWT to get jti
|
|
20
|
+
const parts = grantToken.split('.');
|
|
21
|
+
const payload = JSON.parse(atob(parts[1]));
|
|
22
|
+
const res = await ctx.http.post('/v1/tokens/revoke', { jti: payload.jti });
|
|
23
|
+
expectStatus(res, 204);
|
|
24
|
+
}));
|
|
25
|
+
results.push(await test('POST /v1/tokens/verify returns valid=false after revocation', '§7.3', async () => {
|
|
26
|
+
const res = await ctx.http.post('/v1/tokens/verify', {
|
|
27
|
+
token: grantToken,
|
|
28
|
+
});
|
|
29
|
+
expectStatus(res, 200);
|
|
30
|
+
expectEqual(res.body.valid, false, 'valid');
|
|
31
|
+
}));
|
|
32
|
+
results.push(await test('POST /v1/tokens/verify returns valid=false for garbage token', '§7.2', async () => {
|
|
33
|
+
const res = await ctx.http.post('/v1/tokens/verify', {
|
|
34
|
+
token: 'not.a.valid.jwt.token',
|
|
35
|
+
});
|
|
36
|
+
expectStatus(res, 200);
|
|
37
|
+
expectBoolean(res.body.valid, 'valid');
|
|
38
|
+
expectEqual(res.body.valid, false, 'valid');
|
|
39
|
+
}));
|
|
40
|
+
return results;
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=tokens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/suites/tokens.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../../src/suites/webhooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAA4B,MAAM,aAAa,CAAC;AAG7E,eAAO,MAAM,aAAa,EAAE,eA+C3B,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { test, expectStatus, expectKeys, expectString, expectArray } from '../helpers.js';
|
|
2
|
+
export const webhooksSuite = {
|
|
3
|
+
name: 'webhooks',
|
|
4
|
+
description: 'Webhook registration and management',
|
|
5
|
+
optional: true,
|
|
6
|
+
run: async (ctx) => {
|
|
7
|
+
const results = [];
|
|
8
|
+
let webhookId = '';
|
|
9
|
+
results.push(await test('POST /v1/webhooks creates webhook (201)', '§11', async () => {
|
|
10
|
+
const res = await ctx.http.post('/v1/webhooks', {
|
|
11
|
+
url: 'https://example.com/webhook',
|
|
12
|
+
events: ['grant.created', 'grant.revoked'],
|
|
13
|
+
});
|
|
14
|
+
expectStatus(res, 201);
|
|
15
|
+
expectKeys(res.body, ['id', 'url', 'events', 'secret']);
|
|
16
|
+
expectString(res.body.id, 'id');
|
|
17
|
+
expectString(res.body.secret, 'secret');
|
|
18
|
+
webhookId = res.body.id;
|
|
19
|
+
ctx.cleanup.trackWebhook(webhookId);
|
|
20
|
+
}));
|
|
21
|
+
results.push(await test('GET /v1/webhooks lists webhooks', '§11', async () => {
|
|
22
|
+
const res = await ctx.http.get('/v1/webhooks');
|
|
23
|
+
expectStatus(res, 200);
|
|
24
|
+
expectKeys(res.body, ['webhooks']);
|
|
25
|
+
expectArray(res.body.webhooks, 'webhooks');
|
|
26
|
+
}));
|
|
27
|
+
results.push(await test('DELETE /v1/webhooks/:id returns 204', '§11', async () => {
|
|
28
|
+
if (!webhookId)
|
|
29
|
+
throw new Error('No webhook created');
|
|
30
|
+
const res = await ctx.http.delete(`/v1/webhooks/${webhookId}`);
|
|
31
|
+
expectStatus(res, 204);
|
|
32
|
+
}));
|
|
33
|
+
return results;
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=webhooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../src/suites/webhooks.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE1F,MAAM,CAAC,MAAM,aAAa,GAAoB;IAC5C,IAAI,EAAE,UAAU;IAChB,WAAW,EAAE,qCAAqC;IAClD,QAAQ,EAAE,IAAI;IACd,GAAG,EAAE,KAAK,EAAE,GAAiB,EAAyB,EAAE;QACtD,MAAM,OAAO,GAAiB,EAAE,CAAC;QACjC,IAAI,SAAS,GAAG,EAAE,CAAC;QAEnB,OAAO,CAAC,IAAI,CACV,MAAM,IAAI,CAAC,yCAAyC,EAAE,KAAK,EAAE,KAAK,IAAI,EAAE;YACtE,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAK5B,cAAc,EAAE;gBACjB,GAAG,EAAE,6BAA6B;gBAClC,MAAM,EAAE,CAAC,eAAe,EAAE,eAAe,CAAC;aAC3C,CAAC,CAAC;YACH,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACvB,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;YACxD,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YAChC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YACxC,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QACtC,CAAC,CAAC,CACH,CAAC;QAEF,OAAO,CAAC,IAAI,CACV,MAAM,IAAI,CAAC,iCAAiC,EAAE,KAAK,EAAE,KAAK,IAAI,EAAE;YAC9D,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,CAA0B,cAAc,CAAC,CAAC;YACxE,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACvB,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;YACnC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC7C,CAAC,CAAC,CACH,CAAC;QAEF,OAAO,CAAC,IAAI,CACV,MAAM,IAAI,CAAC,qCAAqC,EAAE,KAAK,EAAE,KAAK,IAAI,EAAE;YAClE,IAAI,CAAC,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;YACtD,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,SAAS,EAAE,CAAC,CAAC;YAC/D,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACzB,CAAC,CAAC,CACH,CAAC;QAEF,OAAO,OAAO,CAAC;IACjB,CAAC;CACF,CAAC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
export interface RunConfig {
|
|
2
|
+
baseUrl: string;
|
|
3
|
+
apiKey: string;
|
|
4
|
+
suite?: string;
|
|
5
|
+
include?: string[];
|
|
6
|
+
format: 'text' | 'json';
|
|
7
|
+
bail: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface HttpResponse<T = unknown> {
|
|
10
|
+
status: number;
|
|
11
|
+
body: T;
|
|
12
|
+
rawText: string;
|
|
13
|
+
durationMs: number;
|
|
14
|
+
}
|
|
15
|
+
export type TestStatus = 'pass' | 'fail' | 'skip';
|
|
16
|
+
export interface TestResult {
|
|
17
|
+
name: string;
|
|
18
|
+
status: TestStatus;
|
|
19
|
+
durationMs: number;
|
|
20
|
+
specRef: string;
|
|
21
|
+
error?: string;
|
|
22
|
+
}
|
|
23
|
+
export interface SuiteResult {
|
|
24
|
+
name: string;
|
|
25
|
+
description: string;
|
|
26
|
+
optional: boolean;
|
|
27
|
+
tests: TestResult[];
|
|
28
|
+
durationMs: number;
|
|
29
|
+
}
|
|
30
|
+
export interface ConformanceReport {
|
|
31
|
+
suites: SuiteResult[];
|
|
32
|
+
summary: {
|
|
33
|
+
total: number;
|
|
34
|
+
passed: number;
|
|
35
|
+
failed: number;
|
|
36
|
+
skipped: number;
|
|
37
|
+
durationMs: number;
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
export interface SharedAgent {
|
|
41
|
+
agentId: string;
|
|
42
|
+
agentDid: string;
|
|
43
|
+
name: string;
|
|
44
|
+
}
|
|
45
|
+
export interface SuiteContext {
|
|
46
|
+
baseUrl: string;
|
|
47
|
+
apiKey: string;
|
|
48
|
+
http: import('./http-client.js').ConformanceHttpClient;
|
|
49
|
+
flow: import('./flow.js').AuthFlowHelper;
|
|
50
|
+
cleanup: import('./cleanup.js').CleanupTracker;
|
|
51
|
+
/** Pre-created agent shared across suites to avoid plan limits */
|
|
52
|
+
sharedAgent: SharedAgent;
|
|
53
|
+
}
|
|
54
|
+
export interface SuiteDefinition {
|
|
55
|
+
name: string;
|
|
56
|
+
description: string;
|
|
57
|
+
optional: boolean;
|
|
58
|
+
run: (ctx: SuiteContext) => Promise<TestResult[]>;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,OAAO;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,CAAC,CAAC;IACR,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAElD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,kBAAkB,EAAE,qBAAqB,CAAC;IACvD,IAAI,EAAE,OAAO,WAAW,EAAE,cAAc,CAAC;IACzC,OAAO,EAAE,OAAO,cAAc,EAAE,cAAc,CAAC;IAC/C,kEAAkE;IAClE,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,GAAG,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;CACnD"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
package/package.json
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@grantex/conformance",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Conformance test suite for the Grantex protocol",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"grantex-conformance": "./dist/index.js"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
"dist",
|
|
11
|
+
"README.md"
|
|
12
|
+
],
|
|
13
|
+
"scripts": {
|
|
14
|
+
"build": "tsc -p tsconfig.build.json",
|
|
15
|
+
"typecheck": "tsc --noEmit",
|
|
16
|
+
"test": "vitest run",
|
|
17
|
+
"test:watch": "vitest",
|
|
18
|
+
"dev": "node --loader ts-node/esm src/index.ts"
|
|
19
|
+
},
|
|
20
|
+
"dependencies": {
|
|
21
|
+
"chalk": "^5.3.0",
|
|
22
|
+
"commander": "^12.0.0"
|
|
23
|
+
},
|
|
24
|
+
"overrides": {
|
|
25
|
+
"esbuild": ">=0.25.0"
|
|
26
|
+
},
|
|
27
|
+
"devDependencies": {
|
|
28
|
+
"@types/node": "^20.11.0",
|
|
29
|
+
"typescript": "^5.3.3",
|
|
30
|
+
"vitest": "^1.3.1"
|
|
31
|
+
},
|
|
32
|
+
"engines": {
|
|
33
|
+
"node": ">=18.0.0"
|
|
34
|
+
},
|
|
35
|
+
"keywords": [
|
|
36
|
+
"grantex",
|
|
37
|
+
"conformance",
|
|
38
|
+
"testing",
|
|
39
|
+
"protocol",
|
|
40
|
+
"ai-agents",
|
|
41
|
+
"authorization",
|
|
42
|
+
"oauth"
|
|
43
|
+
],
|
|
44
|
+
"license": "Apache-2.0",
|
|
45
|
+
"repository": {
|
|
46
|
+
"type": "git",
|
|
47
|
+
"url": "https://github.com/mishrasanjeev/grantex"
|
|
48
|
+
}
|
|
49
|
+
}
|