@interop/was-conformance-suite 0.1.2 → 0.3.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.
Files changed (70) hide show
  1. package/README.md +2 -2
  2. package/dist/suites/authz-ordering-api.d.ts +9 -0
  3. package/dist/suites/authz-ordering-api.d.ts.map +1 -0
  4. package/dist/suites/authz-ordering-api.js +286 -0
  5. package/dist/suites/authz-ordering-api.js.map +1 -0
  6. package/dist/suites/blinded-index-api.d.ts +11 -0
  7. package/dist/suites/blinded-index-api.d.ts.map +1 -0
  8. package/dist/suites/blinded-index-api.js +468 -0
  9. package/dist/suites/blinded-index-api.js.map +1 -0
  10. package/dist/suites/changes-query-api.d.ts.map +1 -1
  11. package/dist/suites/changes-query-api.js +61 -0
  12. package/dist/suites/changes-query-api.js.map +1 -1
  13. package/dist/suites/chunks-api.d.ts +27 -0
  14. package/dist/suites/chunks-api.d.ts.map +1 -0
  15. package/dist/suites/chunks-api.js +613 -0
  16. package/dist/suites/chunks-api.js.map +1 -0
  17. package/dist/suites/client-backends.d.ts.map +1 -1
  18. package/dist/suites/client-backends.js +23 -0
  19. package/dist/suites/client-backends.js.map +1 -1
  20. package/dist/suites/client-delegation.d.ts.map +1 -1
  21. package/dist/suites/client-delegation.js +12 -0
  22. package/dist/suites/client-delegation.js.map +1 -1
  23. package/dist/suites/client-export-import.d.ts.map +1 -1
  24. package/dist/suites/client-export-import.js +1 -0
  25. package/dist/suites/client-export-import.js.map +1 -1
  26. package/dist/suites/client-resources.d.ts.map +1 -1
  27. package/dist/suites/client-resources.js +30 -0
  28. package/dist/suites/client-resources.js.map +1 -1
  29. package/dist/suites/client-spaces.d.ts.map +1 -1
  30. package/dist/suites/client-spaces.js +27 -0
  31. package/dist/suites/client-spaces.js.map +1 -1
  32. package/dist/suites/collection-api.d.ts.map +1 -1
  33. package/dist/suites/collection-api.js +151 -0
  34. package/dist/suites/collection-api.js.map +1 -1
  35. package/dist/suites/conditional-requests-api.d.ts +11 -0
  36. package/dist/suites/conditional-requests-api.d.ts.map +1 -0
  37. package/dist/suites/conditional-requests-api.js +444 -0
  38. package/dist/suites/conditional-requests-api.js.map +1 -0
  39. package/dist/suites/digest-api.d.ts +7 -0
  40. package/dist/suites/digest-api.d.ts.map +1 -0
  41. package/dist/suites/digest-api.js +157 -0
  42. package/dist/suites/digest-api.js.map +1 -0
  43. package/dist/suites/encryption-marker-api.d.ts.map +1 -1
  44. package/dist/suites/encryption-marker-api.js +132 -8
  45. package/dist/suites/encryption-marker-api.js.map +1 -1
  46. package/dist/suites/index.d.ts +8 -1
  47. package/dist/suites/index.d.ts.map +1 -1
  48. package/dist/suites/index.js +16 -2
  49. package/dist/suites/index.js.map +1 -1
  50. package/dist/suites/invocation-target-api.d.ts +12 -0
  51. package/dist/suites/invocation-target-api.d.ts.map +1 -0
  52. package/dist/suites/invocation-target-api.js +252 -0
  53. package/dist/suites/invocation-target-api.js.map +1 -0
  54. package/dist/suites/policy-api.d.ts.map +1 -1
  55. package/dist/suites/policy-api.js +23 -0
  56. package/dist/suites/policy-api.js.map +1 -1
  57. package/dist/suites/resource-api.d.ts.map +1 -1
  58. package/dist/suites/resource-api.js +269 -0
  59. package/dist/suites/resource-api.js.map +1 -1
  60. package/dist/suites/server.d.ts.map +1 -1
  61. package/dist/suites/server.js +1 -0
  62. package/dist/suites/server.js.map +1 -1
  63. package/dist/suites/spaces-api.d.ts.map +1 -1
  64. package/dist/suites/spaces-api.js +565 -0
  65. package/dist/suites/spaces-api.js.map +1 -1
  66. package/dist/suites/write-validation-api.d.ts +7 -0
  67. package/dist/suites/write-validation-api.d.ts.map +1 -0
  68. package/dist/suites/write-validation-api.js +186 -0
  69. package/dist/suites/write-validation-api.js.map +1 -0
  70. package/package.json +8 -3
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
  [![NPM Version](https://img.shields.io/npm/v/@interop/was-conformance-suite.svg)](https://npm.im/@interop/was-conformance-suite)
5
5
 
6
6
  > Conformance test suite for
7
- > [Wallet Attached Storage (WAS)](https://digitalcredentials.github.io/wallet-attached-storage-spec/)
7
+ > [Wallet Attached Storage (WAS)](https://w3c-ccg.github.io/wallet-attached-storage-spec/)
8
8
  > servers, runnable as a CLI, in the browser, or as a library.
9
9
 
10
10
  ## Table of Contents
@@ -30,7 +30,7 @@ policies, change queries, encryption markers, ZCap delegation, and space
30
30
  export/import. It never inspects server internals -- point it at a server URL
31
31
  (plus an optional onboarding token, if the server gates provisioning) and it
32
32
  reports per-test pass/fail results against the
33
- [WAS spec](https://digitalcredentials.github.io/wallet-attached-storage-spec/).
33
+ [WAS spec](https://w3c-ccg.github.io/wallet-attached-storage-spec/).
34
34
 
35
35
  ### The server URL must be byte-identical everywhere
36
36
 
@@ -0,0 +1,9 @@
1
+ import type { Suite } from '../harness/types.js';
2
+ interface State {
3
+ alice: any;
4
+ bob: any;
5
+ resourceId: string;
6
+ }
7
+ export declare const authzOrderingApi: Suite<State>;
8
+ export {};
9
+ //# sourceMappingURL=authz-ordering-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authz-ordering-api.d.ts","sourceRoot":"","sources":["../../src/suites/authz-ordering-api.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAEhD,UAAU,KAAK;IACb,KAAK,EAAE,GAAG,CAAA;IACV,GAAG,EAAE,GAAG,CAAA;IACR,UAAU,EAAE,MAAM,CAAA;CACnB;AAmBD,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,KAAK,CAkRzC,CAAA"}
@@ -0,0 +1,286 @@
1
+ /*!
2
+ * Copyright (c) 2026 Interop Alliance. All rights reserved.
3
+ */
4
+ /**
5
+ * WAS conformance tests -- authorization-ordering negatives.
6
+ *
7
+ * The spec's "maximum privacy" rule (spec "Error Handling") requires servers
8
+ * to verify a caller's authorization *before* any check whose distinct error
9
+ * would reveal that a target exists: conflict detection (409), encrypted-write
10
+ * envelope validation (422), cursor / query-body validation (400/501), and
11
+ * quota reads (403). A server that runs those checks first leaks existence
12
+ * through the differing status code. Every test here invokes as Bob -- a
13
+ * well-formed, signed request that simply lacks privilege over Alice's Space
14
+ * -- and expects the privacy-merged `not-found` (404) mask.
15
+ */
16
+ import assert from '../harness/assert.js';
17
+ /**
18
+ * Asserts a rejected request carries the privacy-merged `not-found` mask:
19
+ * status 404, `application/problem+json`, and the single merged `type` (the
20
+ * registry forbids splitting `not-found` into distinguishable kinds).
21
+ *
22
+ * @param expectedError {any} the error thrown by `ZcapClient.request()`
23
+ */
24
+ function assertNotFoundMask(expectedError) {
25
+ assert.ok(expectedError, 'expected the under-authorized request to fail');
26
+ assert.equal(expectedError.response.status, 404);
27
+ assert.match(expectedError.response.headers.get('content-type'), /application\/problem\+json/);
28
+ assert.equal(expectedError.data.type, 'https://wallet.storage/spec#not-found');
29
+ }
30
+ export const authzOrderingApi = {
31
+ id: 'authz-ordering-api',
32
+ name: 'Authorization ordering (no-leak negatives)',
33
+ specRefs: ['https://wallet.storage/spec#error-handling'],
34
+ setup: async (ctx) => {
35
+ const alice = { ...ctx.actors.alice };
36
+ const bob = { ...ctx.actors.bob };
37
+ alice.space1 = { id: ctx.generateId() };
38
+ const resourceId = ctx.generateId();
39
+ await ctx.createSpace({
40
+ spaceDescription: {
41
+ id: alice.space1.id,
42
+ name: "Alice's Ordering Space",
43
+ controller: alice.did
44
+ },
45
+ rootClient: alice.rootClient
46
+ });
47
+ // A plain Collection holding one Resource (the existing ids Bob probes for)
48
+ await alice.rootClient.request({
49
+ url: new URL(`/space/${alice.space1.id}/`, ctx.serverUrl).toString(),
50
+ method: 'POST',
51
+ action: 'POST',
52
+ json: { id: 'credentials', name: 'Verifiable Credentials' }
53
+ });
54
+ await alice.rootClient.request({
55
+ url: new URL(`/space/${alice.space1.id}/credentials/${resourceId}`, ctx.serverUrl).toString(),
56
+ method: 'PUT',
57
+ action: 'PUT',
58
+ json: { id: resourceId, name: 'Existing Resource' }
59
+ });
60
+ // An encryption-marked Collection (for the envelope-validation ordering test)
61
+ await alice.rootClient.request({
62
+ url: new URL(`/space/${alice.space1.id}/`, ctx.serverUrl).toString(),
63
+ method: 'POST',
64
+ action: 'POST',
65
+ json: { id: 'vault', name: 'Vault', encryption: { scheme: 'edv' } }
66
+ });
67
+ return { alice, bob, resourceId };
68
+ },
69
+ teardown: async (ctx, state) => {
70
+ const { alice } = state;
71
+ try {
72
+ await alice.rootClient.request({
73
+ url: new URL(`/space/${alice.space1.id}`, ctx.serverUrl).toString(),
74
+ method: 'DELETE'
75
+ });
76
+ }
77
+ catch {
78
+ /* best-effort cleanup */
79
+ }
80
+ },
81
+ tests: [
82
+ {
83
+ id: 'ordering.collection-post-conflict-404',
84
+ name: "[root] Bob's POST of an existing Collection id yields 404, not id-conflict (409)",
85
+ specRefs: [
86
+ 'https://wallet.storage/spec#id-conflict',
87
+ 'https://wallet.storage/spec#not-found'
88
+ ],
89
+ run: async (ctx, state) => {
90
+ const { serverUrl } = ctx;
91
+ const { alice, bob } = state;
92
+ // Authorization MUST run before conflict detection: a 409 here would
93
+ // let Bob probe Alice's Space for existing Collection ids.
94
+ let expectedError;
95
+ try {
96
+ await bob.rootClient.request({
97
+ url: new URL(`/space/${alice.space1.id}/`, serverUrl).toString(),
98
+ method: 'POST',
99
+ action: 'POST',
100
+ json: { id: 'credentials', name: 'Probe Collection' }
101
+ });
102
+ }
103
+ catch (err) {
104
+ expectedError = err;
105
+ }
106
+ assertNotFoundMask(expectedError);
107
+ }
108
+ },
109
+ {
110
+ id: 'ordering.resource-post-conflict-404',
111
+ name: "[root] Bob's POST of an existing Resource id yields 404, not id-conflict (409)",
112
+ specRefs: [
113
+ 'https://wallet.storage/spec#id-conflict',
114
+ 'https://wallet.storage/spec#not-found'
115
+ ],
116
+ run: async (ctx, state) => {
117
+ const { serverUrl } = ctx;
118
+ const { alice, bob, resourceId } = state;
119
+ let expectedError;
120
+ try {
121
+ await bob.rootClient.request({
122
+ url: new URL(`/space/${alice.space1.id}/credentials/`, serverUrl).toString(),
123
+ method: 'POST',
124
+ action: 'POST',
125
+ json: { id: resourceId, name: 'Probe Resource' }
126
+ });
127
+ }
128
+ catch (err) {
129
+ expectedError = err;
130
+ }
131
+ assertNotFoundMask(expectedError);
132
+ }
133
+ },
134
+ {
135
+ id: 'ordering.encrypted-write-404',
136
+ name: "[root] Bob's plaintext write to an encrypted Collection yields 404, not scheme-mismatch (422)",
137
+ specRefs: [
138
+ 'https://wallet.storage/spec#encryption-scheme-mismatch',
139
+ 'https://wallet.storage/spec#not-found'
140
+ ],
141
+ run: async (ctx, state) => {
142
+ const { serverUrl } = ctx;
143
+ const { alice, bob } = state;
144
+ // Authorization MUST run before envelope validation: a 422 here would
145
+ // reveal both that `vault` exists and that it is encryption-marked.
146
+ let expectedError;
147
+ try {
148
+ await bob.rootClient.request({
149
+ url: new URL(`/space/${alice.space1.id}/vault/plaintext-doc`, serverUrl).toString(),
150
+ method: 'PUT',
151
+ action: 'PUT',
152
+ json: { hello: 'world' }
153
+ });
154
+ }
155
+ catch (err) {
156
+ expectedError = err;
157
+ }
158
+ assertNotFoundMask(expectedError);
159
+ }
160
+ },
161
+ {
162
+ id: 'ordering.list-bad-cursor-404',
163
+ name: "[root] Bob's List Collection with a malformed cursor yields 404, not invalid-cursor (400)",
164
+ specRefs: [
165
+ 'https://wallet.storage/spec#invalid-cursor',
166
+ 'https://wallet.storage/spec#not-found'
167
+ ],
168
+ run: async (ctx, state) => {
169
+ const { serverUrl } = ctx;
170
+ const { alice, bob } = state;
171
+ // Authorization MUST run before cursor validation: pagination params
172
+ // describe the request, but validating them first would answer before
173
+ // the 404 mask is decided.
174
+ let expectedError;
175
+ try {
176
+ await bob.rootClient.request({
177
+ url: new URL(`/space/${alice.space1.id}/credentials/?cursor=not-valid-%%%`, serverUrl).toString(),
178
+ method: 'GET'
179
+ });
180
+ }
181
+ catch (err) {
182
+ expectedError = err;
183
+ }
184
+ assertNotFoundMask(expectedError);
185
+ }
186
+ },
187
+ {
188
+ id: 'ordering.query-bad-body-404',
189
+ name: "[root] Bob's query POST with an invalid body yields 404, not 400/501",
190
+ specRefs: ['https://wallet.storage/spec#not-found'],
191
+ run: async (ctx, state) => {
192
+ const { serverUrl } = ctx;
193
+ const { alice, bob } = state;
194
+ // An authorized caller sending this body gets a precise query-body
195
+ // error (an unknown profile is 501); Bob must get the 404 mask first.
196
+ let expectedError;
197
+ try {
198
+ await bob.rootClient.request({
199
+ url: new URL(`/space/${alice.space1.id}/credentials/query`, serverUrl).toString(),
200
+ method: 'POST',
201
+ action: 'POST',
202
+ json: { profile: 'no-such-profile' }
203
+ });
204
+ }
205
+ catch (err) {
206
+ expectedError = err;
207
+ }
208
+ assertNotFoundMask(expectedError);
209
+ }
210
+ },
211
+ {
212
+ id: 'ordering.space-quotas-read-404',
213
+ name: "[root] Bob's read of Alice's Space quota report yields 404, never 403",
214
+ specRefs: [
215
+ 'https://wallet.storage/spec#quotas',
216
+ 'https://wallet.storage/spec#not-found'
217
+ ],
218
+ run: async (ctx, state) => {
219
+ const { serverUrl } = ctx;
220
+ const { alice, bob } = state;
221
+ let expectedError;
222
+ try {
223
+ await bob.rootClient.request({
224
+ url: new URL(`/space/${alice.space1.id}/quotas`, serverUrl).toString(),
225
+ method: 'GET'
226
+ });
227
+ }
228
+ catch (err) {
229
+ expectedError = err;
230
+ }
231
+ assertNotFoundMask(expectedError);
232
+ }
233
+ },
234
+ {
235
+ id: 'ordering.collection-quota-read-404',
236
+ name: "[root] Bob's read of Alice's Collection quota yields 404, never 403 or 501",
237
+ specRefs: [
238
+ 'https://wallet.storage/spec#quotas',
239
+ 'https://wallet.storage/spec#not-found'
240
+ ],
241
+ run: async (ctx, state) => {
242
+ const { serverUrl } = ctx;
243
+ const { alice, bob } = state;
244
+ // Per-Collection accounting is optional (501 when unsupported), but
245
+ // that answer is reserved for authorized callers -- Bob gets the mask.
246
+ let expectedError;
247
+ try {
248
+ await bob.rootClient.request({
249
+ url: new URL(`/space/${alice.space1.id}/credentials/quota`, serverUrl).toString(),
250
+ method: 'GET'
251
+ });
252
+ }
253
+ catch (err) {
254
+ expectedError = err;
255
+ }
256
+ assertNotFoundMask(expectedError);
257
+ }
258
+ },
259
+ {
260
+ id: 'ordering.resource-delete-404',
261
+ name: "[root] Bob's DELETE of Alice's Resource yields 404 and does not delete it",
262
+ specRefs: ['https://wallet.storage/spec#not-found'],
263
+ run: async (ctx, state) => {
264
+ const { serverUrl } = ctx;
265
+ const { alice, bob, resourceId } = state;
266
+ const resourceUrl = new URL(`/space/${alice.space1.id}/credentials/${resourceId}`, serverUrl).toString();
267
+ let expectedError;
268
+ try {
269
+ await bob.rootClient.request({ url: resourceUrl, method: 'DELETE' });
270
+ }
271
+ catch (err) {
272
+ expectedError = err;
273
+ }
274
+ assertNotFoundMask(expectedError);
275
+ // The operation must not have been performed: Alice still sees it.
276
+ const checkResponse = await alice.rootClient.request({
277
+ url: resourceUrl,
278
+ method: 'GET'
279
+ });
280
+ assert.equal(checkResponse.status, 200);
281
+ assert.equal(checkResponse.data.name, 'Existing Resource');
282
+ }
283
+ }
284
+ ]
285
+ };
286
+ //# sourceMappingURL=authz-ordering-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authz-ordering-api.js","sourceRoot":"","sources":["../../src/suites/authz-ordering-api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { Suite } from '../harness/types.js';
2
+ interface State {
3
+ alice: any;
4
+ bob: any;
5
+ advertised: boolean;
6
+ queryUrl: (collectionId: string) => string;
7
+ resourceUrl: (collectionId: string, resourceId: string) => string;
8
+ }
9
+ export declare const blindedIndexApi: Suite<State>;
10
+ export {};
11
+ //# sourceMappingURL=blinded-index-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blinded-index-api.d.ts","sourceRoot":"","sources":["../../src/suites/blinded-index-api.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAKhD,UAAU,KAAK;IACb,KAAK,EAAE,GAAG,CAAA;IACV,GAAG,EAAE,GAAG,CAAA;IACR,UAAU,EAAE,OAAO,CAAA;IACnB,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,MAAM,CAAA;IAC1C,WAAW,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,MAAM,CAAA;CAClE;AAuCD,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,KAAK,CAgexC,CAAA"}