@grantex/conformance 0.1.2 → 0.1.4

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 CHANGED
@@ -54,7 +54,7 @@ grantex-conformance --base-url http://localhost:3001 --api-key sk_test_xxx \
54
54
  grantex-conformance --base-url http://localhost:3001 --api-key sk_test_xxx --format json
55
55
  ```
56
56
 
57
- ## Core Suites (37 tests)
57
+ ## Core Suites (40 tests)
58
58
 
59
59
  | Suite | Tests | Description |
60
60
  |-------|-------|-------------|
@@ -67,6 +67,7 @@ grantex-conformance --base-url http://localhost:3001 --api-key sk_test_xxx --for
67
67
  | `delegation` | 5 | Grant delegation, JWT claims, scope enforcement, depth limits, cascade revocation |
68
68
  | `audit` | 5 | Audit log creation, hash chain integrity, entry retrieval |
69
69
  | `security` | 5 | Auth enforcement, JWKS algorithm, scope escalation prevention, audit immutability |
70
+ | `rate-limit-headers` | 3 | Rate limit header presence and format, JWKS endpoint exemption |
70
71
 
71
72
  ## Optional Extensions
72
73
 
package/dist/helpers.d.ts CHANGED
@@ -12,4 +12,6 @@ export declare function expectBoolean(val: unknown, field: string): void;
12
12
  export declare function expectIsoDate(val: unknown, field: string): void;
13
13
  export declare function expectEqual(actual: unknown, expected: unknown, field: string): void;
14
14
  export declare function expectIncludes(arr: unknown[], value: unknown, field: string): void;
15
+ export declare function expectHeader(res: HttpResponse, name: string): string;
16
+ export declare function expectNumericHeader(res: HttpResponse, name: string): number;
15
17
  //# sourceMappingURL=helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAc,MAAM,YAAY,CAAC;AAEvE,wBAAsB,IAAI,CACxB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,EAAE,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GACtB,OAAO,CAAC,UAAU,CAAC,CASrB;AAED,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,CAE9E;AAED,qBAAa,cAAe,SAAQ,KAAK;gBAC3B,OAAO,EAAE,MAAM;CAI5B;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAMtE;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAS9D;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAI9D;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAI7D;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAI/D;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAQ/D;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAMnF;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAMlF"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAc,MAAM,YAAY,CAAC;AAEvE,wBAAsB,IAAI,CACxB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,EAAE,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GACtB,OAAO,CAAC,UAAU,CAAC,CASrB;AAED,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,CAE9E;AAED,qBAAa,cAAe,SAAQ,KAAK;gBAC3B,OAAO,EAAE,MAAM;CAI5B;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAMtE;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAS9D;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAI9D;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAI7D;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAI/D;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAQ/D;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAMnF;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAMlF;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAMpE;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAS3E"}
package/dist/helpers.js CHANGED
@@ -67,4 +67,19 @@ export function expectIncludes(arr, value, field) {
67
67
  throw new AssertionError(`Expected "${field}" to include ${JSON.stringify(value)}, got ${JSON.stringify(arr)}`);
68
68
  }
69
69
  }
70
+ export function expectHeader(res, name) {
71
+ const value = res.headers[name.toLowerCase()];
72
+ if (value === undefined || value === '') {
73
+ throw new AssertionError(`Expected header "${name}" to be present`);
74
+ }
75
+ return value;
76
+ }
77
+ export function expectNumericHeader(res, name) {
78
+ const value = expectHeader(res, name);
79
+ const num = Number(value);
80
+ if (isNaN(num)) {
81
+ throw new AssertionError(`Expected header "${name}" to be numeric, got "${value}"`);
82
+ }
83
+ return num;
84
+ }
70
85
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../src/http-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI/C,qBAAa,qBAAqB;IAE9B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM;IAG3B,OAAO,CAAC,CAAC,GAAG,OAAO,EACvB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,GACb,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAMrB,aAAa,CAAC,CAAC,GAAG,OAAO,EAC7B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,GACb,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAIrB,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAIxD,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAIzE,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAI1E,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAI3C,kBAAkB,CAAC,CAAC,GAAG,OAAO,EAClC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,OAAO,GACb,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAMb,SAAS;CAgDxB"}
1
+ {"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../src/http-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI/C,qBAAa,qBAAqB;IAE9B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM;IAG3B,OAAO,CAAC,CAAC,GAAG,OAAO,EACvB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,GACb,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAMrB,aAAa,CAAC,CAAC,GAAG,OAAO,EAC7B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,GACb,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAIrB,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAIxD,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAIzE,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAI1E,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAI3C,kBAAkB,CAAC,CAAC,GAAG,OAAO,EAClC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,OAAO,GACb,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAMb,SAAS;CAqDxB"}
@@ -1,4 +1,4 @@
1
- const USER_AGENT = '@grantex/conformance/0.1.0';
1
+ const USER_AGENT = '@grantex/conformance/0.1.3';
2
2
  export class ConformanceHttpClient {
3
3
  baseUrl;
4
4
  apiKey;
@@ -57,6 +57,10 @@ export class ConformanceHttpClient {
57
57
  res = await fetch(url, init);
58
58
  }
59
59
  const durationMs = Date.now() - start;
60
+ const responseHeaders = {};
61
+ res.headers.forEach((value, key) => {
62
+ responseHeaders[key] = value;
63
+ });
60
64
  const rawText = await res.text();
61
65
  let parsed;
62
66
  try {
@@ -65,7 +69,7 @@ export class ConformanceHttpClient {
65
69
  catch {
66
70
  parsed = rawText;
67
71
  }
68
- return { status: res.status, body: parsed, rawText, durationMs };
72
+ return { status: res.status, headers: responseHeaders, body: parsed, rawText, durationMs };
69
73
  }
70
74
  }
71
75
  //# sourceMappingURL=http-client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"http-client.js","sourceRoot":"","sources":["../src/http-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http-client.js","sourceRoot":"","sources":["../src/http-client.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAA2D,MAAM,YAAY,CAAC;AAuFxH,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA6FvF"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAA2D,MAAM,YAAY,CAAC;AA2FxH,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA6FvF"}
package/dist/runner.js CHANGED
@@ -11,6 +11,7 @@ import { grantsSuite } from './suites/grants.js';
11
11
  import { delegationSuite } from './suites/delegation.js';
12
12
  import { auditSuite } from './suites/audit.js';
13
13
  import { securitySuite } from './suites/security.js';
14
+ import { rateLimitHeadersSuite } from './suites/rate-limit-headers.js';
14
15
  // Optional suites
15
16
  import { policiesSuite } from './suites/policies.js';
16
17
  import { webhooksSuite } from './suites/webhooks.js';
@@ -19,6 +20,7 @@ import { ssoSuite } from './suites/sso.js';
19
20
  import { anomaliesSuite } from './suites/anomalies.js';
20
21
  import { complianceSuite } from './suites/compliance.js';
21
22
  import { principalSessionsSuite } from './suites/principal-sessions.js';
23
+ import { tokenRefreshSuite } from './suites/token-refresh.js';
22
24
  const coreSuites = [
23
25
  healthSuite,
24
26
  agentsSuite,
@@ -29,6 +31,7 @@ const coreSuites = [
29
31
  delegationSuite,
30
32
  auditSuite,
31
33
  securitySuite,
34
+ rateLimitHeadersSuite,
32
35
  ];
33
36
  const optionalSuites = [
34
37
  policiesSuite,
@@ -38,6 +41,7 @@ const optionalSuites = [
38
41
  anomaliesSuite,
39
42
  complianceSuite,
40
43
  principalSessionsSuite,
44
+ tokenRefreshSuite,
41
45
  ];
42
46
  async function setupSharedAgent(http) {
43
47
  const listRes = await http.get('/v1/agents');
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"principal-sessions.d.ts","sourceRoot":"","sources":["../../src/suites/principal-sessions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAA4B,MAAM,aAAa,CAAC;AAG7E,eAAO,MAAM,sBAAsB,EAAE,eAkGpC,CAAC"}
1
+ {"version":3,"file":"principal-sessions.d.ts","sourceRoot":"","sources":["../../src/suites/principal-sessions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAA4B,MAAM,aAAa,CAAC;AAG7E,eAAO,MAAM,sBAAsB,EAAE,eAuLpC,CAAC"}
@@ -32,12 +32,10 @@ export const principalSessionsSuite = {
32
32
  expectStatus(res, 400);
33
33
  }));
34
34
  results.push(await test('Session token can be used to GET /v1/principal/grants', '§12', async () => {
35
- // Create a session token
36
35
  const sessionRes = await ctx.http.post('/v1/principal-sessions', {
37
36
  principalId,
38
37
  });
39
38
  expectStatus(sessionRes, 201);
40
- // Use the session token to fetch grants
41
39
  const grantsRes = await ctx.http.doRequestWithToken('GET', '/v1/principal/grants', sessionRes.body.sessionToken);
42
40
  expectStatus(grantsRes, 200);
43
41
  if (!Array.isArray(grantsRes.body.grants)) {
@@ -46,12 +44,50 @@ export const principalSessionsSuite = {
46
44
  if (grantsRes.body.principalId !== principalId) {
47
45
  throw new Error(`Expected principalId ${principalId}, got ${grantsRes.body.principalId}`);
48
46
  }
49
- // Should find the grant we created
50
47
  const found = grantsRes.body.grants.some((g) => g.grantId === flow.grantId);
51
48
  if (!found) {
52
49
  throw new Error(`Expected to find grant ${flow.grantId} in principal grants`);
53
50
  }
54
51
  }));
52
+ results.push(await test('Session token can be used to GET /v1/principal/audit', '§12', async () => {
53
+ const sessionRes = await ctx.http.post('/v1/principal-sessions', {
54
+ principalId,
55
+ });
56
+ expectStatus(sessionRes, 201);
57
+ const auditRes = await ctx.http.doRequestWithToken('GET', '/v1/principal/audit', sessionRes.body.sessionToken);
58
+ expectStatus(auditRes, 200);
59
+ if (!Array.isArray(auditRes.body.entries)) {
60
+ throw new Error('Expected entries to be an array');
61
+ }
62
+ }));
63
+ results.push(await test('Session token can revoke a principal grant via DELETE /v1/principal/grants/:id', '§12', async () => {
64
+ // Create a fresh grant to revoke
65
+ const revokeFlow = await ctx.flow.executeFullFlow({
66
+ agentId,
67
+ agentDid,
68
+ scopes: ['read'],
69
+ principalId,
70
+ });
71
+ const sessionRes = await ctx.http.post('/v1/principal-sessions', {
72
+ principalId,
73
+ });
74
+ expectStatus(sessionRes, 201);
75
+ const revokeRes = await ctx.http.doRequestWithToken('DELETE', `/v1/principal/grants/${revokeFlow.grantId}`, sessionRes.body.sessionToken);
76
+ expectStatus(revokeRes, 204);
77
+ }));
78
+ results.push(await test('Session token is rejected on developer API endpoints (401)', '§12', async () => {
79
+ const sessionRes = await ctx.http.post('/v1/principal-sessions', {
80
+ principalId,
81
+ });
82
+ expectStatus(sessionRes, 201);
83
+ // Using session token on a developer endpoint should fail
84
+ const agentsRes = await ctx.http.doRequestWithToken('GET', '/v1/agents', sessionRes.body.sessionToken);
85
+ expectStatus(agentsRes, 401);
86
+ }));
87
+ results.push(await test('GET /permissions returns HTML page (200)', '§12', async () => {
88
+ const res = await ctx.http.requestPublic('GET', '/permissions');
89
+ expectStatus(res, 200);
90
+ }));
55
91
  return results;
56
92
  },
57
93
  };
@@ -1 +1 @@
1
- {"version":3,"file":"principal-sessions.js","sourceRoot":"","sources":["../../src/suites/principal-sessions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"principal-sessions.js","sourceRoot":"","sources":["../../src/suites/principal-sessions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { SuiteDefinition } from '../types.js';
2
+ export declare const rateLimitHeadersSuite: SuiteDefinition;
3
+ //# sourceMappingURL=rate-limit-headers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limit-headers.d.ts","sourceRoot":"","sources":["../../src/suites/rate-limit-headers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAA4B,MAAM,aAAa,CAAC;AAK7E,eAAO,MAAM,qBAAqB,EAAE,eAoDnC,CAAC"}
@@ -0,0 +1,38 @@
1
+ import { test, expectStatus, expectNumericHeader } from '../helpers.js';
2
+ const YEAR_2020_EPOCH = 1577836800;
3
+ export const rateLimitHeadersSuite = {
4
+ name: 'rate-limit-headers',
5
+ description: 'Rate limit headers presence and format',
6
+ optional: false,
7
+ run: async (ctx) => {
8
+ const results = [];
9
+ results.push(await test('Rate limit headers on authenticated endpoint', '§14', async () => {
10
+ const res = await ctx.http.get('/v1/agents');
11
+ expectStatus(res, 200);
12
+ expectNumericHeader(res, 'x-ratelimit-limit');
13
+ expectNumericHeader(res, 'x-ratelimit-remaining');
14
+ const reset = expectNumericHeader(res, 'x-ratelimit-reset');
15
+ if (reset < YEAR_2020_EPOCH) {
16
+ throw new Error(`Expected x-ratelimit-reset to be a plausible unix timestamp (> ${YEAR_2020_EPOCH}), got ${reset}`);
17
+ }
18
+ }));
19
+ results.push(await test('Rate limit headers on token verify endpoint', '§14', async () => {
20
+ const res = await ctx.http.post('/v1/tokens/verify', {
21
+ token: 'invalid-token-for-header-check',
22
+ });
23
+ expectNumericHeader(res, 'x-ratelimit-limit');
24
+ expectNumericHeader(res, 'x-ratelimit-remaining');
25
+ expectNumericHeader(res, 'x-ratelimit-reset');
26
+ }));
27
+ results.push(await test('JWKS endpoint exempt from rate limits', '§14', async () => {
28
+ const res = await ctx.http.requestPublic('GET', '/.well-known/jwks.json');
29
+ expectStatus(res, 200);
30
+ const hasRateLimit = res.headers['x-ratelimit-limit'] !== undefined;
31
+ if (hasRateLimit) {
32
+ throw new Error('Expected JWKS endpoint to be exempt from rate limits, but x-ratelimit-limit header was present');
33
+ }
34
+ }));
35
+ return results;
36
+ },
37
+ };
38
+ //# sourceMappingURL=rate-limit-headers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limit-headers.js","sourceRoot":"","sources":["../../src/suites/rate-limit-headers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAExE,MAAM,eAAe,GAAG,UAAU,CAAC;AAEnC,MAAM,CAAC,MAAM,qBAAqB,GAAoB;IACpD,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EAAE,wCAAwC;IACrD,QAAQ,EAAE,KAAK;IACf,GAAG,EAAE,KAAK,EAAE,GAAiB,EAAyB,EAAE;QACtD,MAAM,OAAO,GAAiB,EAAE,CAAC;QAEjC,OAAO,CAAC,IAAI,CACV,MAAM,IAAI,CAAC,8CAA8C,EAAE,KAAK,EAAE,KAAK,IAAI,EAAE;YAC3E,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC7C,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAEvB,mBAAmB,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;YAC9C,mBAAmB,CAAC,GAAG,EAAE,uBAAuB,CAAC,CAAC;YAClD,MAAM,KAAK,GAAG,mBAAmB,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;YAE5D,IAAI,KAAK,GAAG,eAAe,EAAE,CAAC;gBAC5B,MAAM,IAAI,KAAK,CACb,kEAAkE,eAAe,UAAU,KAAK,EAAE,CACnG,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CACH,CAAC;QAEF,OAAO,CAAC,IAAI,CACV,MAAM,IAAI,CAAC,6CAA6C,EAAE,KAAK,EAAE,KAAK,IAAI,EAAE;YAC1E,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;gBACnD,KAAK,EAAE,gCAAgC;aACxC,CAAC,CAAC;YAEH,mBAAmB,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;YAC9C,mBAAmB,CAAC,GAAG,EAAE,uBAAuB,CAAC,CAAC;YAClD,mBAAmB,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;QAChD,CAAC,CAAC,CACH,CAAC;QAEF,OAAO,CAAC,IAAI,CACV,MAAM,IAAI,CAAC,uCAAuC,EAAE,KAAK,EAAE,KAAK,IAAI,EAAE;YACpE,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,wBAAwB,CAAC,CAAC;YAC1E,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAEvB,MAAM,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,SAAS,CAAC;YACpE,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CACb,gGAAgG,CACjG,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CACH,CAAC;QAEF,OAAO,OAAO,CAAC;IACjB,CAAC;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { SuiteDefinition } from '../types.js';
2
+ export declare const tokenRefreshSuite: SuiteDefinition;
3
+ //# sourceMappingURL=token-refresh.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-refresh.d.ts","sourceRoot":"","sources":["../../src/suites/token-refresh.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAA4B,MAAM,aAAa,CAAC;AAG7E,eAAO,MAAM,iBAAiB,EAAE,eA+K/B,CAAC"}
@@ -0,0 +1,109 @@
1
+ import { test, expectStatus, expectString, expectArray, expectIsoDate } from '../helpers.js';
2
+ export const tokenRefreshSuite = {
3
+ name: 'token-refresh',
4
+ description: 'Token refresh — single-use rotation per SPEC §7.4',
5
+ optional: true,
6
+ run: async (ctx) => {
7
+ const results = [];
8
+ const { agentId, agentDid } = ctx.sharedAgent;
9
+ results.push(await test('POST /v1/token/refresh returns new grantToken with same grantId', '§7.4', async () => {
10
+ const flow = await ctx.flow.executeFullFlow({
11
+ agentId,
12
+ agentDid,
13
+ scopes: ['read', 'write'],
14
+ });
15
+ const res = await ctx.http.post('/v1/token/refresh', {
16
+ refreshToken: flow.refreshToken,
17
+ agentId,
18
+ });
19
+ expectStatus(res, 201);
20
+ expectString(res.body.grantToken, 'grantToken');
21
+ expectString(res.body.refreshToken, 'refreshToken');
22
+ expectString(res.body.grantId, 'grantId');
23
+ expectArray(res.body.scopes, 'scopes');
24
+ expectIsoDate(res.body.expiresAt, 'expiresAt');
25
+ if (res.body.grantId !== flow.grantId) {
26
+ throw new Error(`Expected same grantId ${flow.grantId}, got ${res.body.grantId}`);
27
+ }
28
+ if (res.body.refreshToken === flow.refreshToken) {
29
+ throw new Error('Expected rotated refresh token, got the same one');
30
+ }
31
+ ctx.cleanup.trackGrant(res.body.grantId);
32
+ }));
33
+ results.push(await test('POST /v1/token/refresh rejects used refresh token (single-use)', '§7.4', async () => {
34
+ const flow = await ctx.flow.executeFullFlow({
35
+ agentId,
36
+ agentDid,
37
+ scopes: ['read'],
38
+ });
39
+ // First refresh — succeeds
40
+ const first = await ctx.http.post('/v1/token/refresh', {
41
+ refreshToken: flow.refreshToken,
42
+ agentId,
43
+ });
44
+ expectStatus(first, 201);
45
+ ctx.cleanup.trackGrant(first.body.grantId);
46
+ // Second refresh with same token — rejected
47
+ const second = await ctx.http.post('/v1/token/refresh', {
48
+ refreshToken: flow.refreshToken,
49
+ agentId,
50
+ });
51
+ expectStatus(second, 400);
52
+ }));
53
+ results.push(await test('POST /v1/token/refresh rejects mismatched agentId (400)', '§7.4', async () => {
54
+ const flow = await ctx.flow.executeFullFlow({
55
+ agentId,
56
+ agentDid,
57
+ scopes: ['read'],
58
+ });
59
+ const res = await ctx.http.post('/v1/token/refresh', {
60
+ refreshToken: flow.refreshToken,
61
+ agentId: 'ag_nonexistent_12345',
62
+ });
63
+ expectStatus(res, 400);
64
+ }));
65
+ results.push(await test('POST /v1/token/refresh rejects missing refreshToken (400)', '§7.4', async () => {
66
+ const res = await ctx.http.post('/v1/token/refresh', {
67
+ agentId,
68
+ });
69
+ expectStatus(res, 400);
70
+ }));
71
+ results.push(await test('POST /v1/token/refresh rejects missing agentId (400)', '§7.4', async () => {
72
+ const flow = await ctx.flow.executeFullFlow({
73
+ agentId,
74
+ agentDid,
75
+ scopes: ['read'],
76
+ });
77
+ const res = await ctx.http.post('/v1/token/refresh', {
78
+ refreshToken: flow.refreshToken,
79
+ });
80
+ expectStatus(res, 400);
81
+ }));
82
+ results.push(await test('Refreshed token can be verified online', '§7.4', async () => {
83
+ const flow = await ctx.flow.executeFullFlow({
84
+ agentId,
85
+ agentDid,
86
+ scopes: ['read', 'write'],
87
+ });
88
+ const refreshRes = await ctx.http.post('/v1/token/refresh', {
89
+ refreshToken: flow.refreshToken,
90
+ agentId,
91
+ });
92
+ expectStatus(refreshRes, 201);
93
+ ctx.cleanup.trackGrant(refreshRes.body.grantId);
94
+ // Verify the new token
95
+ const verifyRes = await ctx.http.post('/v1/tokens/verify', {
96
+ token: refreshRes.body.grantToken,
97
+ });
98
+ expectStatus(verifyRes, 200);
99
+ if (verifyRes.body.valid !== true) {
100
+ throw new Error('Expected refreshed token to be valid');
101
+ }
102
+ if (verifyRes.body.grantId !== flow.grantId) {
103
+ throw new Error(`Expected grantId ${flow.grantId}, got ${verifyRes.body.grantId}`);
104
+ }
105
+ }));
106
+ return results;
107
+ },
108
+ };
109
+ //# sourceMappingURL=token-refresh.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-refresh.js","sourceRoot":"","sources":["../../src/suites/token-refresh.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -8,6 +8,7 @@ export interface RunConfig {
8
8
  }
9
9
  export interface HttpResponse<T = unknown> {
10
10
  status: number;
11
+ headers: Record<string, string>;
11
12
  body: T;
12
13
  rawText: string;
13
14
  durationMs: number;
@@ -1 +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"}
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,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@grantex/conformance",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "Conformance test suite for the Grantex protocol",
5
5
  "type": "module",
6
6
  "bin": {