@interop/was-conformance-suite 0.6.1 → 0.8.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 CHANGED
@@ -121,20 +121,29 @@ Options:
121
121
 
122
122
  The available suite ids (for `--suite`) are:
123
123
 
124
- | id | tests |
125
- | --------------------------- | -------------------------------------- |
126
- | `changes-query-api` | Collection changes query profile |
127
- | `client-backends` | WasClient -- BYOS backend registration |
128
- | `client-delegation` | WasClient -- Delegation |
129
- | `client-export-import` | WasClient -- Export / Import |
130
- | `client-resources` | WasClient -- Resources |
131
- | `client-spaces` | WasClient -- Spaces & Collections |
132
- | `collection-api` | Collections API |
133
- | `encryption-descriptor-api` | Encryption descriptor API |
134
- | `policy-api` | Access-control policy API |
135
- | `resource-api` | Resource API |
136
- | `server` | Server |
137
- | `spaces-api` | Spaces |
124
+ | id | tests |
125
+ | --------------------------- | ------------------------------------------------------- |
126
+ | `authz-ordering-api` | Authorization ordering (no-leak negatives) |
127
+ | `blinded-index-api` | Blinded-index query profile |
128
+ | `changes-query-api` | Collection changes query profile |
129
+ | `chunks-api` | Chunked Resources API |
130
+ | `client-backends` | WasClient -- BYOS backend registration |
131
+ | `client-delegation` | WasClient -- Delegation |
132
+ | `client-export-import` | WasClient -- Export / Import |
133
+ | `client-resources` | WasClient -- Resources |
134
+ | `client-spaces` | WasClient -- Spaces & Collections |
135
+ | `collection-api` | Collections API |
136
+ | `conditional-requests-api` | Conditional requests & caching |
137
+ | `delegation-cryptosuites` | Delegation-proof cryptosuites |
138
+ | `digest-api` | Request body integrity (Digest) negatives |
139
+ | `encryption-descriptor-api` | Encryption descriptor API |
140
+ | `invocation-target-api` | Capability invocationTarget binding |
141
+ | `plaintext-declaration-api` | Plaintext declaration API |
142
+ | `policy-api` | Access-control policy API |
143
+ | `resource-api` | Resource API |
144
+ | `server` | Server |
145
+ | `spaces-api` | Spaces |
146
+ | `write-validation-api` | Write-validation negatives (reserved ids, Content-Type) |
138
147
 
139
148
  #### Environment-variable fallbacks
140
149
 
@@ -12,6 +12,12 @@ import type { ISigner } from '@interop/data-integrity-core';
12
12
  */
13
13
  export interface Actor {
14
14
  did: string;
15
+ /**
16
+ * The identity's own signer. `rootClient` and `was` are built from it; a
17
+ * suite needs it directly only to build a client of its own, e.g. one signing
18
+ * delegation proofs with a different cryptosuite.
19
+ */
20
+ signer: ISigner;
15
21
  rootClient: ZcapClient;
16
22
  was: WasClient;
17
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/harness/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/harness/types.ts"],"names":[],"mappings":"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"}
package/dist/helpers.d.ts CHANGED
@@ -7,6 +7,18 @@ import type { Space } from '@interop/was-client';
7
7
  import type { ISigner } from '@interop/data-integrity-core';
8
8
  import { v4 as uuidv4 } from 'uuid';
9
9
  import type { Actors, ConformanceContext } from './harness/types.js';
10
+ /**
11
+ * The suite's ZcapClient: delegation proofs are signed with `eddsa-jcs-2022`,
12
+ * which canonicalizes with JCS and so needs no JSON-LD document loader at
13
+ * signing time. That is what WAS clients now emit, so the required tests
14
+ * exercise the suite a server actually meets. `Ed25519Signature2020` is not
15
+ * gone from the suite: the optional `delegation-cryptosuites` suite asserts a
16
+ * server still accepts it, and accepts a chain that mixes the two.
17
+ *
18
+ * @param options {object}
19
+ * @param options.signer {ISigner}
20
+ * @returns {ZcapClient}
21
+ */
10
22
  export declare function zcapClient({ signer }: {
11
23
  signer: ISigner;
12
24
  }): ZcapClient;
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAC/C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAIhD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAA;AAC3D,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAA;AAEnC,OAAO,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAapE,wBAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GAAG,UAAU,CAMtE;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,EACxB,SAAS,EACT,MAAM,EACP,EAAE;IACD,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,OAAO,CAAA;CAChB,GAAG,SAAS,CAEZ;AAED,wBAAsB,gBAAgB,CAAC,EACrC,SAAS,EACV,EAAE;IACD,SAAS,EAAE,MAAM,CAAA;CAClB,GAAG,OAAO,CAAC,MAAM,CAAC,CAyClB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,WAAW,CAAC,EAChC,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,UAAU,EACX,EAAE;IACD,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,gBAAgB,EAAE,MAAM,CAAA;IACxB,UAAU,EAAE,UAAU,CAAA;CACvB,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,GAAG,CAAA;CAAE,CAAC,CAwB3D;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,cAAc,CAAC,EACnC,SAAS,EACT,eAAe,EACf,GAAG,EACH,IAAI,EACL,EAAE;IACD,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,GAAG,EAAE,SAAS,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,GAAG,OAAO,CAAC,KAAK,CAAC,CAmBjB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAMxD;AAED;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CAAC,EAClC,SAAS,EACT,eAAsB,EACvB,EAAE;IACD,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAChC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAe9B;AAED,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,CAAA"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAC/C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAIhD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAA;AAC3D,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAA;AAEnC,OAAO,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAapE;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GAAG,UAAU,CAMtE;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,EACxB,SAAS,EACT,MAAM,EACP,EAAE;IACD,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,OAAO,CAAA;CAChB,GAAG,SAAS,CAEZ;AAED,wBAAsB,gBAAgB,CAAC,EACrC,SAAS,EACV,EAAE;IACD,SAAS,EAAE,MAAM,CAAA;CAClB,GAAG,OAAO,CAAC,MAAM,CAAC,CA2ClB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,WAAW,CAAC,EAChC,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,UAAU,EACX,EAAE;IACD,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,gBAAgB,EAAE,MAAM,CAAA;IACxB,UAAU,EAAE,UAAU,CAAA;CACvB,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,GAAG,CAAA;CAAE,CAAC,CAwB3D;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,cAAc,CAAC,EACnC,SAAS,EACT,eAAe,EACf,GAAG,EACH,IAAI,EACL,EAAE;IACD,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,GAAG,EAAE,SAAS,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,GAAG,OAAO,CAAC,KAAK,CAAC,CAmBjB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAMxD;AAED;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CAAC,EAClC,SAAS,EACT,eAAsB,EACvB,EAAE;IACD,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAChC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAe9B;AAED,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,CAAA"}
package/dist/helpers.js CHANGED
@@ -4,7 +4,7 @@
4
4
  import { ZcapClient } from '@interop/ezcap';
5
5
  import { WasClient } from '@interop/was-client';
6
6
  import { decodeSecretKeySeed } from '@digitalcredentials/bnid';
7
- import { Ed25519Signature2020 } from '@interop/ed25519-signature';
7
+ import { EddsaJcs2022 } from '@interop/ed25519-signature/eddsa-jcs-2022';
8
8
  import { Ed25519VerificationKey } from '@interop/ed25519-verification-key';
9
9
  import { v4 as uuidv4 } from 'uuid';
10
10
  /**
@@ -17,9 +17,21 @@ const secretKeySeeds = {
17
17
  bob: 'z1AmpBeBetWxKMBpAcHsztGogaUki1LXWANSzTd5CiYoikA',
18
18
  bobDelegatedApp: 'z1AfgF2HQvQaaAhod3KEYUHwY5epGtP5QmbEMKtMFf8XcYk'
19
19
  };
20
+ /**
21
+ * The suite's ZcapClient: delegation proofs are signed with `eddsa-jcs-2022`,
22
+ * which canonicalizes with JCS and so needs no JSON-LD document loader at
23
+ * signing time. That is what WAS clients now emit, so the required tests
24
+ * exercise the suite a server actually meets. `Ed25519Signature2020` is not
25
+ * gone from the suite: the optional `delegation-cryptosuites` suite asserts a
26
+ * server still accepts it, and accepts a chain that mixes the two.
27
+ *
28
+ * @param options {object}
29
+ * @param options.signer {ISigner}
30
+ * @returns {ZcapClient}
31
+ */
20
32
  export function zcapClient({ signer }) {
21
33
  return new ZcapClient({
22
- SuiteClass: Ed25519Signature2020,
34
+ SuiteClass: EddsaJcs2022,
23
35
  invocationSigner: signer,
24
36
  delegationSigner: signer
25
37
  });
@@ -59,6 +71,7 @@ export async function buildZcapClients({ serverUrl }) {
59
71
  return {
60
72
  alice: {
61
73
  did: aliceRootDid,
74
+ signer: aliceSigner,
62
75
  // Low-level ZcapClient -- kept for raw request()/delegate() calls.
63
76
  rootClient: zcapClient({ signer: aliceSigner }),
64
77
  // High-level WAS client wrapping the same signer.
@@ -70,6 +83,7 @@ export async function buildZcapClients({ serverUrl }) {
70
83
  },
71
84
  bob: {
72
85
  did: bobRootDid,
86
+ signer: bobSigner,
73
87
  rootClient: zcapClient({ signer: bobSigner }),
74
88
  was: wasClient({ serverUrl, signer: bobSigner })
75
89
  }
@@ -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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"}
@@ -0,0 +1,11 @@
1
+ import type { Suite } from '../harness/types.js';
2
+ interface State {
3
+ alice: any;
4
+ aliceDelegatedApp: any;
5
+ bob: any;
6
+ docUrl: string;
7
+ spaceId: string;
8
+ }
9
+ export declare const delegationCryptosuitesApi: Suite<State>;
10
+ export {};
11
+ //# sourceMappingURL=delegation-cryptosuites-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delegation-cryptosuites-api.d.ts","sourceRoot":"","sources":["../../src/suites/delegation-cryptosuites-api.ts"],"names":[],"mappings":"AAuCA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAEhD,UAAU,KAAK;IACb,KAAK,EAAE,GAAG,CAAA;IACV,iBAAiB,EAAE,GAAG,CAAA;IACtB,GAAG,EAAE,GAAG,CAAA;IACR,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;CAChB;AA+BD,eAAO,MAAM,yBAAyB,EAAE,KAAK,CAAC,KAAK,CA0IlD,CAAA"}
@@ -0,0 +1,194 @@
1
+ /*!
2
+ * Copyright (c) 2026 Interop Alliance. All rights reserved.
3
+ */
4
+ /**
5
+ * WAS conformance tests -- delegation-proof cryptosuites (OPTIONAL).
6
+ *
7
+ * A delegated capability's `proof` is a signature on the document, separate
8
+ * from the capability invocation's HTTP signature. This suite asserts a server
9
+ * accepts both cryptosuites in use, rather than the run silently tracking
10
+ * whichever one it happens to send.
11
+ *
12
+ * The two are not on the same footing. The rest of this conformance suite signs
13
+ * its delegations with `eddsa-jcs-2022`, which canonicalizes with JCS and so
14
+ * costs no JSON-LD canonicalization; that is what current WAS clients emit, so
15
+ * every delegated test in the required set already depends on a server
16
+ * accepting it, and the test for it here is required too.
17
+ *
18
+ * `Ed25519Signature2020` is the older suite, and its tests are marked optional:
19
+ * a server may reasonably have moved past it, and the spec's authorization
20
+ * profile names no cryptosuite at all. Accepting it is still what keeps two
21
+ * populations working -- clients that have not upgraded, and wallets that
22
+ * recorded a grant before the switch and submit that stored capability back for
23
+ * revocation under the suite it was signed with.
24
+ *
25
+ * The two are told apart by `proof.type` and `proof.cryptosuite`, with no
26
+ * heuristic, so a server may accept both at once and the links of a single
27
+ * chain may mix them. The mixed-chain test here runs the one direction any
28
+ * client can produce unaided: an `Ed25519Signature2020` parent with an
29
+ * `eddsa-jcs-2022` child. The reverse needs the old-suite client to be handed a
30
+ * document loader serving the data-integrity context -- URDNA2015 expands the
31
+ * parent embedded in `proof.capabilityChain` -- and it throws at signing time,
32
+ * on the client, before any server sees the chain. That is a client-side
33
+ * limitation rather than a server property, so it is out of scope here.
34
+ */
35
+ import { ZcapClient } from '@interop/ezcap';
36
+ import { Ed25519Signature2020 } from '@interop/ed25519-signature';
37
+ import assert from '../harness/assert.js';
38
+ /**
39
+ * A ZcapClient signing its delegation proofs with `Ed25519Signature2020` -- the
40
+ * older suite, as a client that has not upgraded still sends it. The suite's
41
+ * own `ctx.zcapClient` is the `eddsa-jcs-2022` counterpart.
42
+ *
43
+ * @param options {object}
44
+ * @param options.signer {ISigner}
45
+ * @returns {ZcapClient}
46
+ */
47
+ function legacyZcapClient({ signer }) {
48
+ return new ZcapClient({
49
+ SuiteClass: Ed25519Signature2020,
50
+ invocationSigner: signer,
51
+ delegationSigner: signer
52
+ });
53
+ }
54
+ /**
55
+ * The delegation proof of a freshly delegated capability. `proof` may be a
56
+ * single proof or a set of them; `delegate()` produces exactly one.
57
+ *
58
+ * @param capability {any}
59
+ * @returns {Record<string, string>}
60
+ */
61
+ function delegationProof(capability) {
62
+ const { proof } = capability;
63
+ return Array.isArray(proof) ? proof[0] : proof;
64
+ }
65
+ export const delegationCryptosuitesApi = {
66
+ id: 'delegation-cryptosuites',
67
+ name: 'Delegation-proof cryptosuites',
68
+ specRefs: ['https://wallet.storage/spec#delegation'],
69
+ setup: async (ctx) => {
70
+ const alice = { ...ctx.actors.alice };
71
+ const aliceDelegatedApp = { ...ctx.actors.aliceDelegatedApp };
72
+ const bob = { ...ctx.actors.bob };
73
+ const spaceId = ctx.generateId();
74
+ const resourceId = ctx.generateId();
75
+ await ctx.createSpace({
76
+ spaceDescription: {
77
+ id: spaceId,
78
+ name: "Alice's Cryptosuite Space",
79
+ controller: alice.did
80
+ },
81
+ rootClient: alice.rootClient
82
+ });
83
+ await alice.rootClient.request({
84
+ url: new URL(`/space/${spaceId}/`, ctx.serverUrl).toString(),
85
+ method: 'POST',
86
+ action: 'POST',
87
+ json: { id: 'credentials', name: 'Verifiable Credentials' }
88
+ });
89
+ const docUrl = new URL(`/space/${spaceId}/credentials/${resourceId}`, ctx.serverUrl).toString();
90
+ await alice.rootClient.request({
91
+ url: docUrl,
92
+ method: 'PUT',
93
+ action: 'PUT',
94
+ json: { id: resourceId, hello: 'world' }
95
+ });
96
+ return { alice, aliceDelegatedApp, bob, docUrl, spaceId };
97
+ },
98
+ teardown: async (ctx, state) => {
99
+ try {
100
+ await state.alice.rootClient.request({
101
+ url: new URL(`/space/${state.spaceId}`, ctx.serverUrl).toString(),
102
+ method: 'DELETE'
103
+ });
104
+ }
105
+ catch {
106
+ /* best-effort cleanup */
107
+ }
108
+ },
109
+ tests: [
110
+ {
111
+ id: 'cryptosuites.eddsa-jcs-2022',
112
+ name: 'accepts a delegation proof signed with eddsa-jcs-2022',
113
+ specRefs: ['https://wallet.storage/spec#delegation'],
114
+ run: async (ctx, state) => {
115
+ const { alice, aliceDelegatedApp, docUrl } = state;
116
+ const capability = await alice.rootClient.delegate({
117
+ allowedActions: ['GET'],
118
+ invocationTarget: docUrl,
119
+ controller: aliceDelegatedApp.did
120
+ });
121
+ const proof = delegationProof(capability);
122
+ assert.equal(proof.type, 'DataIntegrityProof');
123
+ assert.equal(proof.cryptosuite, 'eddsa-jcs-2022');
124
+ const response = await ctx
125
+ .zcapClient({ signer: aliceDelegatedApp.signer })
126
+ .request({ url: docUrl, method: 'GET', action: 'GET', capability });
127
+ assert.equal(response.status, 200);
128
+ assert.equal(response.data.hello, 'world');
129
+ }
130
+ },
131
+ {
132
+ id: 'cryptosuites.ed25519-signature-2020',
133
+ name: 'accepts a delegation proof signed with Ed25519Signature2020',
134
+ // Optional: the older suite, which a server may reasonably no longer
135
+ // accept. The spec names no cryptosuite either way.
136
+ optional: true,
137
+ specRefs: ['https://wallet.storage/spec#delegation'],
138
+ run: async (ctx, state) => {
139
+ const { alice, aliceDelegatedApp, docUrl } = state;
140
+ // Alice's own signer, but a client on the older suite -- the shape a
141
+ // client that has not upgraded still sends.
142
+ const capability = await legacyZcapClient({
143
+ signer: alice.signer
144
+ }).delegate({
145
+ allowedActions: ['GET'],
146
+ invocationTarget: docUrl,
147
+ controller: aliceDelegatedApp.did
148
+ });
149
+ assert.equal(delegationProof(capability).type, 'Ed25519Signature2020');
150
+ const response = await ctx
151
+ .zcapClient({ signer: aliceDelegatedApp.signer })
152
+ .request({ url: docUrl, method: 'GET', action: 'GET', capability });
153
+ assert.equal(response.status, 200);
154
+ assert.equal(response.data.hello, 'world');
155
+ }
156
+ },
157
+ {
158
+ id: 'cryptosuites.mixed-chain',
159
+ name: 'accepts a chain whose links mix the two cryptosuites',
160
+ // Optional for the same reason: its parent link is Ed25519Signature2020.
161
+ optional: true,
162
+ specRefs: ['https://wallet.storage/spec#delegation'],
163
+ run: async (ctx, state) => {
164
+ const { alice, aliceDelegatedApp, bob, docUrl } = state;
165
+ // An Ed25519Signature2020 parent...
166
+ const parent = await legacyZcapClient({
167
+ signer: alice.signer
168
+ }).delegate({
169
+ allowedActions: ['GET'],
170
+ invocationTarget: docUrl,
171
+ controller: aliceDelegatedApp.did
172
+ });
173
+ // ...re-delegated by an upgraded client, so the child is JCS-signed.
174
+ const child = await ctx
175
+ .zcapClient({ signer: aliceDelegatedApp.signer })
176
+ .delegate({
177
+ capability: parent,
178
+ allowedActions: ['GET'],
179
+ controller: bob.did
180
+ });
181
+ assert.equal(delegationProof(child).cryptosuite, 'eddsa-jcs-2022');
182
+ const response = await bob.rootClient.request({
183
+ url: docUrl,
184
+ method: 'GET',
185
+ action: 'GET',
186
+ capability: child
187
+ });
188
+ assert.equal(response.status, 200);
189
+ assert.equal(response.data.hello, 'world');
190
+ }
191
+ }
192
+ ]
193
+ };
194
+ //# sourceMappingURL=delegation-cryptosuites-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delegation-cryptosuites-api.js","sourceRoot":"","sources":["../../src/suites/delegation-cryptosuites-api.ts"],"names":[],"mappings":"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"}
@@ -13,9 +13,11 @@ import { clientResources } from './client-resources.js';
13
13
  import { clientSpaces } from './client-spaces.js';
14
14
  import { collectionApi } from './collection-api.js';
15
15
  import { conditionalRequestsApi } from './conditional-requests-api.js';
16
+ import { delegationCryptosuitesApi } from './delegation-cryptosuites-api.js';
16
17
  import { digestApi } from './digest-api.js';
17
18
  import { encryptionDescriptorApi } from './encryption-descriptor-api.js';
18
19
  import { invocationTargetApi } from './invocation-target-api.js';
20
+ import { plaintextDeclarationApi } from './plaintext-declaration-api.js';
19
21
  import { policyApi } from './policy-api.js';
20
22
  import { resourceApi } from './resource-api.js';
21
23
  import { server } from './server.js';
@@ -26,5 +28,5 @@ import { writeValidationApi } from './write-validation-api.js';
26
28
  * original file-alphabetical execution order of the ported suite).
27
29
  */
28
30
  export declare const suites: Array<Suite<any>>;
29
- export { authzOrderingApi, blindedIndexApi, changesQueryApi, chunksApi, clientBackends, clientDelegation, clientExportImport, clientResources, clientSpaces, collectionApi, conditionalRequestsApi, digestApi, encryptionDescriptorApi, invocationTargetApi, policyApi, resourceApi, server, spacesApi, writeValidationApi };
31
+ export { authzOrderingApi, blindedIndexApi, changesQueryApi, chunksApi, clientBackends, clientDelegation, clientExportImport, clientResources, clientSpaces, collectionApi, conditionalRequestsApi, delegationCryptosuitesApi, digestApi, encryptionDescriptorApi, invocationTargetApi, plaintextDeclarationApi, policyApi, resourceApi, server, spacesApi, writeValidationApi };
30
32
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/suites/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAEhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAA;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAE9D;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAoBpC,CAAA;AAED,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,SAAS,EACT,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,aAAa,EACb,sBAAsB,EACtB,SAAS,EACT,uBAAuB,EACvB,mBAAmB,EACnB,SAAS,EACT,WAAW,EACX,MAAM,EACN,SAAS,EACT,kBAAkB,EACnB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/suites/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAEhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AACtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAA;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAA;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAA;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAE9D;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAsBpC,CAAA;AAED,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,SAAS,EACT,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,aAAa,EACb,sBAAsB,EACtB,yBAAyB,EACzB,SAAS,EACT,uBAAuB,EACvB,mBAAmB,EACnB,uBAAuB,EACvB,SAAS,EACT,WAAW,EACX,MAAM,EACN,SAAS,EACT,kBAAkB,EACnB,CAAA"}
@@ -9,9 +9,11 @@ import { clientResources } from './client-resources.js';
9
9
  import { clientSpaces } from './client-spaces.js';
10
10
  import { collectionApi } from './collection-api.js';
11
11
  import { conditionalRequestsApi } from './conditional-requests-api.js';
12
+ import { delegationCryptosuitesApi } from './delegation-cryptosuites-api.js';
12
13
  import { digestApi } from './digest-api.js';
13
14
  import { encryptionDescriptorApi } from './encryption-descriptor-api.js';
14
15
  import { invocationTargetApi } from './invocation-target-api.js';
16
+ import { plaintextDeclarationApi } from './plaintext-declaration-api.js';
15
17
  import { policyApi } from './policy-api.js';
16
18
  import { resourceApi } from './resource-api.js';
17
19
  import { server } from './server.js';
@@ -33,14 +35,16 @@ export const suites = [
33
35
  clientSpaces,
34
36
  collectionApi,
35
37
  conditionalRequestsApi,
38
+ delegationCryptosuitesApi,
36
39
  digestApi,
37
40
  encryptionDescriptorApi,
38
41
  invocationTargetApi,
42
+ plaintextDeclarationApi,
39
43
  policyApi,
40
44
  resourceApi,
41
45
  server,
42
46
  spacesApi,
43
47
  writeValidationApi
44
48
  ];
45
- export { authzOrderingApi, blindedIndexApi, changesQueryApi, chunksApi, clientBackends, clientDelegation, clientExportImport, clientResources, clientSpaces, collectionApi, conditionalRequestsApi, digestApi, encryptionDescriptorApi, invocationTargetApi, policyApi, resourceApi, server, spacesApi, writeValidationApi };
49
+ export { authzOrderingApi, blindedIndexApi, changesQueryApi, chunksApi, clientBackends, clientDelegation, clientExportImport, clientResources, clientSpaces, collectionApi, conditionalRequestsApi, delegationCryptosuitesApi, digestApi, encryptionDescriptorApi, invocationTargetApi, plaintextDeclarationApi, policyApi, resourceApi, server, spacesApi, writeValidationApi };
46
50
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/suites/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAA;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAE9D;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAAsB;IACvC,gBAAgB;IAChB,eAAe;IACf,eAAe;IACf,SAAS;IACT,cAAc;IACd,gBAAgB;IAChB,kBAAkB;IAClB,eAAe;IACf,YAAY;IACZ,aAAa;IACb,sBAAsB;IACtB,SAAS;IACT,uBAAuB;IACvB,mBAAmB;IACnB,SAAS;IACT,WAAW;IACX,MAAM;IACN,SAAS;IACT,kBAAkB;CACnB,CAAA;AAED,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,SAAS,EACT,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,aAAa,EACb,sBAAsB,EACtB,SAAS,EACT,uBAAuB,EACvB,mBAAmB,EACnB,SAAS,EACT,WAAW,EACX,MAAM,EACN,SAAS,EACT,kBAAkB,EACnB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/suites/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AACtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAA;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAA;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAA;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAE9D;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAAsB;IACvC,gBAAgB;IAChB,eAAe;IACf,eAAe;IACf,SAAS;IACT,cAAc;IACd,gBAAgB;IAChB,kBAAkB;IAClB,eAAe;IACf,YAAY;IACZ,aAAa;IACb,sBAAsB;IACtB,yBAAyB;IACzB,SAAS;IACT,uBAAuB;IACvB,mBAAmB;IACnB,uBAAuB;IACvB,SAAS;IACT,WAAW;IACX,MAAM;IACN,SAAS;IACT,kBAAkB;CACnB,CAAA;AAED,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,SAAS,EACT,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,aAAa,EACb,sBAAsB,EACtB,yBAAyB,EACzB,SAAS,EACT,uBAAuB,EACvB,mBAAmB,EACnB,uBAAuB,EACvB,SAAS,EACT,WAAW,EACX,MAAM,EACN,SAAS,EACT,kBAAkB,EACnB,CAAA"}
@@ -0,0 +1,12 @@
1
+ import type { Suite } from '../harness/types.js';
2
+ interface State {
3
+ alice: any;
4
+ collectionUrl: (collectionId: string) => string;
5
+ resourceUrl: (collectionId: string, resourceId: string) => string;
6
+ createCollection: (json: object) => Promise<any>;
7
+ putCollection: (collectionId: string, json: object) => Promise<any>;
8
+ readCollection: (collectionId: string) => Promise<any>;
9
+ }
10
+ export declare const plaintextDeclarationApi: Suite<State>;
11
+ export {};
12
+ //# sourceMappingURL=plaintext-declaration-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plaintext-declaration-api.d.ts","sourceRoot":"","sources":["../../src/suites/plaintext-declaration-api.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAEhD,UAAU,KAAK;IACb,KAAK,EAAE,GAAG,CAAA;IACV,aAAa,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,MAAM,CAAA;IAC/C,WAAW,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,MAAM,CAAA;IACjE,gBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;IAChD,aAAa,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;IACnE,cAAc,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;CACvD;AAoBD,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,KAAK,CAkZhD,CAAA"}
@@ -0,0 +1,371 @@
1
+ /*!
2
+ * Copyright (c) 2026 Interop Alliance. All rights reserved.
3
+ */
4
+ /**
5
+ * WAS conformance tests -- the Collection `plaintext` member and its `indexes`
6
+ * declaration (server-side plaintext indexing for the `equality` query
7
+ * profile). `plaintext` is the counterpart of `encryption`: at most one of the
8
+ * two is present on a Collection Description, by presence, so an empty
9
+ * `plaintext` object still excludes `encryption`. Unlike the set-once
10
+ * `encryption`, `plaintext` is updatable for the Collection's life; `{}` is
11
+ * its empty state.
12
+ *
13
+ * The suite is optional until the spec text for `plaintext` and the `equality`
14
+ * profile is published; the shape is settled by the spec's decision record on
15
+ * plaintext and encryption counterparts.
16
+ */
17
+ import assert from '../harness/assert.js';
18
+ /**
19
+ * Runs a request expected to fail and returns the thrown error, failing the
20
+ * test when the request unexpectedly succeeds.
21
+ * @param request {Promise<unknown>}
22
+ * @param message {string}
23
+ * @returns {Promise<any>}
24
+ */
25
+ async function rejection(request, message) {
26
+ let expectedError;
27
+ try {
28
+ await request;
29
+ }
30
+ catch (err) {
31
+ expectedError = err;
32
+ }
33
+ assert.ok(expectedError, message);
34
+ return expectedError;
35
+ }
36
+ export const plaintextDeclarationApi = {
37
+ id: 'plaintext-declaration-api',
38
+ name: 'Plaintext declaration API',
39
+ optional: true,
40
+ specRefs: ['https://wallet.storage/spec#collection-data-model'],
41
+ setup: async (ctx) => {
42
+ const { serverUrl } = ctx;
43
+ const alice = { ...ctx.actors.alice };
44
+ alice.space1 = { id: ctx.generateId() };
45
+ await ctx.createSpace({
46
+ spaceDescription: {
47
+ id: alice.space1.id,
48
+ name: "Alice's Plaintext Space",
49
+ controller: alice.did
50
+ },
51
+ rootClient: alice.rootClient
52
+ });
53
+ function collectionUrl(collectionId) {
54
+ return new URL(`/space/${alice.space1.id}/${collectionId}`, serverUrl).toString();
55
+ }
56
+ function resourceUrl(collectionId, resourceId) {
57
+ return new URL(`/space/${alice.space1.id}/${collectionId}/${resourceId}`, serverUrl).toString();
58
+ }
59
+ /** POSTs a Collection (raw, so a `plaintext` member can be sent). */
60
+ function createCollection(json) {
61
+ return alice.rootClient.request({
62
+ url: new URL(`/space/${alice.space1.id}/`, serverUrl).toString(),
63
+ method: 'POST',
64
+ action: 'POST',
65
+ json
66
+ });
67
+ }
68
+ /** PUTs a Collection Description by id (create-by-id or update). */
69
+ function putCollection(collectionId, json) {
70
+ return alice.rootClient.request({
71
+ url: collectionUrl(collectionId),
72
+ method: 'PUT',
73
+ action: 'PUT',
74
+ json
75
+ });
76
+ }
77
+ function readCollection(collectionId) {
78
+ return alice.rootClient.request({
79
+ url: collectionUrl(collectionId),
80
+ method: 'GET'
81
+ });
82
+ }
83
+ return {
84
+ alice,
85
+ collectionUrl,
86
+ resourceUrl,
87
+ createCollection,
88
+ putCollection,
89
+ readCollection
90
+ };
91
+ },
92
+ teardown: async (ctx, state) => {
93
+ const { alice } = state;
94
+ try {
95
+ await alice.rootClient.request({
96
+ url: new URL(`/space/${alice.space1.id}`, ctx.serverUrl).toString(),
97
+ method: 'DELETE'
98
+ });
99
+ }
100
+ catch {
101
+ /* best-effort cleanup */
102
+ }
103
+ },
104
+ tests: [
105
+ {
106
+ id: 'plaintext.persist-echo-post',
107
+ name: '[root] persists and echoes plaintext.indexes on POST create and on GET',
108
+ specRefs: ['https://wallet.storage/spec#collection-data-model'],
109
+ run: async (ctx, state) => {
110
+ const { createCollection, readCollection } = state;
111
+ const plaintext = {
112
+ indexes: [
113
+ 'parentId',
114
+ { name: 'author' },
115
+ { name: 'slug', source: 'content', unique: true }
116
+ ]
117
+ };
118
+ const response = await createCollection({
119
+ id: 'posts',
120
+ name: 'Posts',
121
+ plaintext
122
+ });
123
+ assert.equal(response.status, 201);
124
+ assert.deepStrictEqual(response.data.plaintext, plaintext);
125
+ assert.equal(response.data.encryption, undefined);
126
+ const read = await readCollection('posts');
127
+ assert.deepStrictEqual(read.data.plaintext, plaintext);
128
+ }
129
+ },
130
+ {
131
+ id: 'plaintext.persist-echo-put',
132
+ name: '[root] persists and echoes plaintext.indexes on PUT create-by-id',
133
+ specRefs: ['https://wallet.storage/spec#collection-data-model'],
134
+ run: async (ctx, state) => {
135
+ const { putCollection, readCollection } = state;
136
+ const response = await putCollection('posts-put', {
137
+ id: 'posts-put',
138
+ name: 'Posts (PUT)',
139
+ plaintext: { indexes: ['parentId'] }
140
+ });
141
+ assert.equal(response.status, 201);
142
+ assert.deepStrictEqual(response.data.plaintext, {
143
+ indexes: ['parentId']
144
+ });
145
+ const read = await readCollection('posts-put');
146
+ assert.deepStrictEqual(read.data.plaintext, { indexes: ['parentId'] });
147
+ }
148
+ },
149
+ {
150
+ id: 'plaintext.both-on-create-400',
151
+ name: '[root] plaintext and encryption both present on create is invalid-request-body (400), even an empty plaintext',
152
+ specRefs: [
153
+ 'https://wallet.storage/spec#collection-data-model',
154
+ 'https://wallet.storage/spec#invalid-request-body'
155
+ ],
156
+ run: async (ctx, state) => {
157
+ const { createCollection, putCollection } = state;
158
+ const bodies = [
159
+ {
160
+ id: 'both-post',
161
+ plaintext: { indexes: ['parentId'] },
162
+ encryption: { scheme: 'edv' }
163
+ },
164
+ // Exclusion is by presence: an empty `plaintext` still excludes.
165
+ {
166
+ id: 'both-post-empty',
167
+ plaintext: {},
168
+ encryption: { scheme: 'edv' }
169
+ }
170
+ ];
171
+ for (const body of bodies) {
172
+ const postError = await rejection(createCollection(body), `expected the POST create of ${body.id} to be rejected`);
173
+ assert.equal(postError.response.status, 400);
174
+ assert.equal(postError.data.type, 'https://wallet.storage/spec#invalid-request-body');
175
+ const putError = await rejection(putCollection(body.id, body), `expected the PUT create of ${body.id} to be rejected`);
176
+ assert.equal(putError.response.status, 400);
177
+ assert.equal(putError.data.type, 'https://wallet.storage/spec#invalid-request-body');
178
+ }
179
+ }
180
+ },
181
+ {
182
+ id: 'plaintext.both-on-update-400',
183
+ name: '[root] an update whose result carries both plaintext and encryption is invalid-request-body (400), in either direction',
184
+ specRefs: [
185
+ 'https://wallet.storage/spec#collection-data-model',
186
+ 'https://wallet.storage/spec#invalid-request-body'
187
+ ],
188
+ run: async (ctx, state) => {
189
+ const { createCollection, putCollection, readCollection } = state;
190
+ // Adding `plaintext` (even empty) to an encrypted Collection.
191
+ await createCollection({
192
+ id: 'enc-first',
193
+ encryption: { scheme: 'edv' }
194
+ });
195
+ for (const plaintext of [{ indexes: ['parentId'] }, {}]) {
196
+ const err = await rejection(putCollection('enc-first', { id: 'enc-first', plaintext }), 'expected adding plaintext to an encrypted Collection to be rejected');
197
+ assert.equal(err.response.status, 400);
198
+ assert.equal(err.data.type, 'https://wallet.storage/spec#invalid-request-body');
199
+ }
200
+ const encrypted = await readCollection('enc-first');
201
+ assert.deepStrictEqual(encrypted.data.encryption, { scheme: 'edv' });
202
+ assert.equal(encrypted.data.plaintext, undefined);
203
+ // Adding `encryption` to a Collection carrying `plaintext`.
204
+ await createCollection({ id: 'plain-first', plaintext: {} });
205
+ const err = await rejection(putCollection('plain-first', {
206
+ id: 'plain-first',
207
+ encryption: { scheme: 'edv' }
208
+ }), 'expected adding encryption to a plaintext-declared Collection to be rejected');
209
+ assert.equal(err.response.status, 400);
210
+ assert.equal(err.data.type, 'https://wallet.storage/spec#invalid-request-body');
211
+ const plain = await readCollection('plain-first');
212
+ assert.deepStrictEqual(plain.data.plaintext, {});
213
+ assert.equal(plain.data.encryption, undefined);
214
+ }
215
+ },
216
+ {
217
+ id: 'plaintext.malformed-400',
218
+ name: '[root] rejects a malformed plaintext member (400 invalid-request-body)',
219
+ specRefs: ['https://wallet.storage/spec#invalid-request-body'],
220
+ run: async (ctx, state) => {
221
+ const { createCollection, readCollection } = state;
222
+ const malformed = [
223
+ { label: 'a non-object plaintext', plaintext: ['parentId'] },
224
+ { label: 'a non-array indexes', plaintext: { indexes: 'parentId' } },
225
+ { label: 'an empty-string entry', plaintext: { indexes: [''] } },
226
+ {
227
+ label: 'an object entry without a name',
228
+ plaintext: { indexes: [{ source: 'content' }] }
229
+ },
230
+ {
231
+ label: 'a duplicate name across sources',
232
+ plaintext: { indexes: ['tag', { name: 'tag', source: 'custom' }] }
233
+ },
234
+ {
235
+ label: 'an unknown source',
236
+ plaintext: { indexes: [{ name: 'x', source: 'elsewhere' }] }
237
+ },
238
+ {
239
+ label: 'a non-boolean unique',
240
+ plaintext: { indexes: [{ name: 'x', unique: 'yes' }] }
241
+ }
242
+ ];
243
+ for (const { label, plaintext } of malformed) {
244
+ const err = await rejection(createCollection({ id: 'malformed', plaintext }), `expected ${label} to be rejected`);
245
+ assert.equal(err.response.status, 400, label);
246
+ assert.equal(err.data.type, 'https://wallet.storage/spec#invalid-request-body', label);
247
+ }
248
+ // None of the rejected creates left a Collection behind.
249
+ const err = await rejection(readCollection('malformed'), 'expected no Collection to exist after the rejected creates');
250
+ assert.equal(err.response.status, 404);
251
+ }
252
+ },
253
+ {
254
+ id: 'plaintext.updatable',
255
+ name: '[root] plaintext is updatable on an existing Collection: added, changed, and emptied with {}; an absent member is left untouched',
256
+ specRefs: ['https://wallet.storage/spec#collection-data-model'],
257
+ run: async (ctx, state) => {
258
+ const { createCollection, putCollection, readCollection } = state;
259
+ // Born without `plaintext`.
260
+ await createCollection({ id: 'evolving', name: 'Evolving' });
261
+ let read = await readCollection('evolving');
262
+ assert.equal(read.data.plaintext, undefined);
263
+ // Add.
264
+ await putCollection('evolving', {
265
+ id: 'evolving',
266
+ plaintext: { indexes: ['parentId'] }
267
+ });
268
+ read = await readCollection('evolving');
269
+ assert.deepStrictEqual(read.data.plaintext, { indexes: ['parentId'] });
270
+ // An update that omits `plaintext` leaves it untouched.
271
+ await putCollection('evolving', { id: 'evolving', name: 'Renamed' });
272
+ read = await readCollection('evolving');
273
+ assert.equal(read.data.name, 'Renamed');
274
+ assert.deepStrictEqual(read.data.plaintext, { indexes: ['parentId'] });
275
+ // Change: the supplied object replaces the stored one.
276
+ await putCollection('evolving', {
277
+ id: 'evolving',
278
+ plaintext: { indexes: ['author', { name: 'slug', unique: true }] }
279
+ });
280
+ read = await readCollection('evolving');
281
+ assert.deepStrictEqual(read.data.plaintext, {
282
+ indexes: ['author', { name: 'slug', unique: true }]
283
+ });
284
+ // `{}` is the empty state: still present, no declaration.
285
+ await putCollection('evolving', { id: 'evolving', plaintext: {} });
286
+ read = await readCollection('evolving');
287
+ assert.deepStrictEqual(read.data.plaintext, {});
288
+ }
289
+ },
290
+ {
291
+ id: 'plaintext.unique-conflict-409',
292
+ name: '[root] a write claiming a held unique plaintext attribute value is id-conflict (409)',
293
+ specRefs: [
294
+ 'https://wallet.storage/spec#collection-data-model',
295
+ 'https://wallet.storage/spec#id-conflict'
296
+ ],
297
+ run: async (ctx, state) => {
298
+ const { alice, createCollection, resourceUrl } = state;
299
+ await createCollection({
300
+ id: 'unique-slugs',
301
+ plaintext: { indexes: [{ name: 'slug', unique: true }] }
302
+ });
303
+ const holder = await alice.rootClient.request({
304
+ url: resourceUrl('unique-slugs', 'holder'),
305
+ method: 'PUT',
306
+ action: 'PUT',
307
+ json: { id: 'holder', slug: 'hello-world' }
308
+ });
309
+ assert.ok([200, 201, 204].includes(holder.status));
310
+ // A different Resource claiming the same `(slug, 'hello-world')`.
311
+ const conflictError = await rejection(alice.rootClient.request({
312
+ url: resourceUrl('unique-slugs', 'claimant'),
313
+ method: 'PUT',
314
+ action: 'PUT',
315
+ json: { id: 'claimant', slug: 'hello-world' }
316
+ }), 'expected the conflicting claim to be rejected');
317
+ assert.equal(conflictError.response.status, 409);
318
+ assert.equal(conflictError.data.type, 'https://wallet.storage/spec#id-conflict');
319
+ // The holder re-asserting its own value never self-conflicts.
320
+ const reassert = await alice.rootClient.request({
321
+ url: resourceUrl('unique-slugs', 'holder'),
322
+ method: 'PUT',
323
+ action: 'PUT',
324
+ json: { id: 'holder', slug: 'hello-world', edited: true }
325
+ });
326
+ assert.ok([200, 201, 204].includes(reassert.status));
327
+ // A different value coexists freely.
328
+ const other = await alice.rootClient.request({
329
+ url: resourceUrl('unique-slugs', 'other'),
330
+ method: 'PUT',
331
+ action: 'PUT',
332
+ json: { id: 'other', slug: 'second-post' }
333
+ });
334
+ assert.ok([200, 201, 204].includes(other.status));
335
+ }
336
+ },
337
+ {
338
+ id: 'plaintext.unique-declare-conflict-409',
339
+ name: '[root] promoting an attribute to unique over Resources that already collide is id-conflict (409)',
340
+ specRefs: [
341
+ 'https://wallet.storage/spec#collection-data-model',
342
+ 'https://wallet.storage/spec#id-conflict'
343
+ ],
344
+ run: async (ctx, state) => {
345
+ const { alice, createCollection, putCollection, readCollection, resourceUrl } = state;
346
+ await createCollection({
347
+ id: 'late-unique',
348
+ plaintext: { indexes: ['slug'] }
349
+ });
350
+ for (const resourceId of ['first', 'second']) {
351
+ await alice.rootClient.request({
352
+ url: resourceUrl('late-unique', resourceId),
353
+ method: 'PUT',
354
+ action: 'PUT',
355
+ json: { id: resourceId, slug: 'same' }
356
+ });
357
+ }
358
+ const err = await rejection(putCollection('late-unique', {
359
+ id: 'late-unique',
360
+ plaintext: { indexes: [{ name: 'slug', unique: true }] }
361
+ }), 'expected the unique promotion over colliding Resources to be rejected');
362
+ assert.equal(err.response.status, 409);
363
+ assert.equal(err.data.type, 'https://wallet.storage/spec#id-conflict');
364
+ // The stored declaration is unchanged.
365
+ const read = await readCollection('late-unique');
366
+ assert.deepStrictEqual(read.data.plaintext, { indexes: ['slug'] });
367
+ }
368
+ }
369
+ ]
370
+ };
371
+ //# sourceMappingURL=plaintext-declaration-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plaintext-declaration-api.js","sourceRoot":"","sources":["../../src/suites/plaintext-declaration-api.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;GAYG;AACH,OAAO,MAAM,MAAM,sBAAsB,CAAA;AAYzC;;;;;;GAMG;AACH,KAAK,UAAU,SAAS,CAAC,OAAyB,EAAE,OAAe;IACjE,IAAI,aAAkB,CAAA;IACtB,IAAI,CAAC;QACH,MAAM,OAAO,CAAA;IACf,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,aAAa,GAAG,GAAG,CAAA;IACrB,CAAC;IACD,MAAM,CAAC,EAAE,CAAC,aAAa,EAAE,OAAO,CAAC,CAAA;IACjC,OAAO,aAAa,CAAA;AACtB,CAAC;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAiB;IACnD,EAAE,EAAE,2BAA2B;IAC/B,IAAI,EAAE,2BAA2B;IACjC,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,CAAC,mDAAmD,CAAC;IAE/D,KAAK,EAAE,KAAK,EAAC,GAAG,EAAC,EAAE;QACjB,MAAM,EAAE,SAAS,EAAE,GAAG,GAAG,CAAA;QACzB,MAAM,KAAK,GAAQ,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;QAC1C,KAAK,CAAC,MAAM,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,UAAU,EAAE,EAAE,CAAA;QACvC,MAAM,GAAG,CAAC,WAAW,CAAC;YACpB,gBAAgB,EAAE;gBAChB,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE;gBACnB,IAAI,EAAE,yBAAyB;gBAC/B,UAAU,EAAE,KAAK,CAAC,GAAG;aACtB;YACD,UAAU,EAAE,KAAK,CAAC,UAAU;SAC7B,CAAC,CAAA;QAEF,SAAS,aAAa,CAAC,YAAoB;YACzC,OAAO,IAAI,GAAG,CACZ,UAAU,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,YAAY,EAAE,EAC3C,SAAS,CACV,CAAC,QAAQ,EAAE,CAAA;QACd,CAAC;QACD,SAAS,WAAW,CAAC,YAAoB,EAAE,UAAkB;YAC3D,OAAO,IAAI,GAAG,CACZ,UAAU,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,YAAY,IAAI,UAAU,EAAE,EACzD,SAAS,CACV,CAAC,QAAQ,EAAE,CAAA;QACd,CAAC;QACD,qEAAqE;QACrE,SAAS,gBAAgB,CAAC,IAAY;YACpC,OAAO,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;gBAC9B,GAAG,EAAE,IAAI,GAAG,CAAC,UAAU,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC,QAAQ,EAAE;gBAChE,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,MAAM;gBACd,IAAI;aACL,CAAC,CAAA;QACJ,CAAC;QACD,oEAAoE;QACpE,SAAS,aAAa,CAAC,YAAoB,EAAE,IAAY;YACvD,OAAO,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;gBAC9B,GAAG,EAAE,aAAa,CAAC,YAAY,CAAC;gBAChC,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,KAAK;gBACb,IAAI;aACL,CAAC,CAAA;QACJ,CAAC;QACD,SAAS,cAAc,CAAC,YAAoB;YAC1C,OAAO,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;gBAC9B,GAAG,EAAE,aAAa,CAAC,YAAY,CAAC;gBAChC,MAAM,EAAE,KAAK;aACd,CAAC,CAAA;QACJ,CAAC;QAED,OAAO;YACL,KAAK;YACL,aAAa;YACb,WAAW;YACX,gBAAgB;YAChB,aAAa;YACb,cAAc;SACf,CAAA;IACH,CAAC;IAED,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QAC7B,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;QACvB,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;gBAC7B,GAAG,EAAE,IAAI,GAAG,CAAC,UAAU,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE;gBACnE,MAAM,EAAE,QAAQ;aACjB,CAAC,CAAA;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,yBAAyB;QAC3B,CAAC;IACH,CAAC;IAED,KAAK,EAAE;QACL;YACE,EAAE,EAAE,6BAA6B;YACjC,IAAI,EAAE,wEAAwE;YAC9E,QAAQ,EAAE,CAAC,mDAAmD,CAAC;YAC/D,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;gBACxB,MAAM,EAAE,gBAAgB,EAAE,cAAc,EAAE,GAAG,KAAK,CAAA;gBAClD,MAAM,SAAS,GAAG;oBAChB,OAAO,EAAE;wBACP,UAAU;wBACV,EAAE,IAAI,EAAE,QAAQ,EAAE;wBAClB,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE;qBAClD;iBACF,CAAA;gBACD,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC;oBACtC,EAAE,EAAE,OAAO;oBACX,IAAI,EAAE,OAAO;oBACb,SAAS;iBACV,CAAC,CAAA;gBACF,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;gBAClC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;gBAC1D,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;gBAEjD,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,CAAA;gBAC1C,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;YACxD,CAAC;SACF;QACD;YACE,EAAE,EAAE,4BAA4B;YAChC,IAAI,EAAE,kEAAkE;YACxE,QAAQ,EAAE,CAAC,mDAAmD,CAAC;YAC/D,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;gBACxB,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,KAAK,CAAA;gBAC/C,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,WAAW,EAAE;oBAChD,EAAE,EAAE,WAAW;oBACf,IAAI,EAAE,aAAa;oBACnB,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE;iBACrC,CAAC,CAAA;gBACF,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;gBAClC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE;oBAC9C,OAAO,EAAE,CAAC,UAAU,CAAC;iBACtB,CAAC,CAAA;gBACF,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,WAAW,CAAC,CAAA;gBAC9C,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;YACxE,CAAC;SACF;QACD;YACE,EAAE,EAAE,8BAA8B;YAClC,IAAI,EAAE,+GAA+G;YACrH,QAAQ,EAAE;gBACR,mDAAmD;gBACnD,kDAAkD;aACnD;YACD,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;gBACxB,MAAM,EAAE,gBAAgB,EAAE,aAAa,EAAE,GAAG,KAAK,CAAA;gBACjD,MAAM,MAAM,GAAG;oBACb;wBACE,EAAE,EAAE,WAAW;wBACf,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE;wBACpC,UAAU,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;qBAC9B;oBACD,iEAAiE;oBACjE;wBACE,EAAE,EAAE,iBAAiB;wBACrB,SAAS,EAAE,EAAE;wBACb,UAAU,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;qBAC9B;iBACF,CAAA;gBACD,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;oBAC1B,MAAM,SAAS,GAAG,MAAM,SAAS,CAC/B,gBAAgB,CAAC,IAAI,CAAC,EACtB,+BAA+B,IAAI,CAAC,EAAE,iBAAiB,CACxD,CAAA;oBACD,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;oBAC5C,MAAM,CAAC,KAAK,CACV,SAAS,CAAC,IAAI,CAAC,IAAI,EACnB,kDAAkD,CACnD,CAAA;oBACD,MAAM,QAAQ,GAAG,MAAM,SAAS,CAC9B,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAC5B,8BAA8B,IAAI,CAAC,EAAE,iBAAiB,CACvD,CAAA;oBACD,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;oBAC3C,MAAM,CAAC,KAAK,CACV,QAAQ,CAAC,IAAI,CAAC,IAAI,EAClB,kDAAkD,CACnD,CAAA;gBACH,CAAC;YACH,CAAC;SACF;QACD;YACE,EAAE,EAAE,8BAA8B;YAClC,IAAI,EAAE,wHAAwH;YAC9H,QAAQ,EAAE;gBACR,mDAAmD;gBACnD,kDAAkD;aACnD;YACD,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;gBACxB,MAAM,EAAE,gBAAgB,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,KAAK,CAAA;gBACjE,8DAA8D;gBAC9D,MAAM,gBAAgB,CAAC;oBACrB,EAAE,EAAE,WAAW;oBACf,UAAU,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;iBAC9B,CAAC,CAAA;gBACF,KAAK,MAAM,SAAS,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;oBACxD,MAAM,GAAG,GAAG,MAAM,SAAS,CACzB,aAAa,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,EAC1D,qEAAqE,CACtE,CAAA;oBACD,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;oBACtC,MAAM,CAAC,KAAK,CACV,GAAG,CAAC,IAAI,CAAC,IAAI,EACb,kDAAkD,CACnD,CAAA;gBACH,CAAC;gBACD,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,WAAW,CAAC,CAAA;gBACnD,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;gBACpE,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;gBAEjD,4DAA4D;gBAC5D,MAAM,gBAAgB,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAA;gBAC5D,MAAM,GAAG,GAAG,MAAM,SAAS,CACzB,aAAa,CAAC,aAAa,EAAE;oBAC3B,EAAE,EAAE,aAAa;oBACjB,UAAU,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;iBAC9B,CAAC,EACF,8EAA8E,CAC/E,CAAA;gBACD,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;gBACtC,MAAM,CAAC,KAAK,CACV,GAAG,CAAC,IAAI,CAAC,IAAI,EACb,kDAAkD,CACnD,CAAA;gBACD,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,aAAa,CAAC,CAAA;gBACjD,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;gBAChD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;YAChD,CAAC;SACF;QACD;YACE,EAAE,EAAE,yBAAyB;YAC7B,IAAI,EAAE,wEAAwE;YAC9E,QAAQ,EAAE,CAAC,kDAAkD,CAAC;YAC9D,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;gBACxB,MAAM,EAAE,gBAAgB,EAAE,cAAc,EAAE,GAAG,KAAK,CAAA;gBAClD,MAAM,SAAS,GAAiD;oBAC9D,EAAE,KAAK,EAAE,wBAAwB,EAAE,SAAS,EAAE,CAAC,UAAU,CAAC,EAAE;oBAC5D,EAAE,KAAK,EAAE,qBAAqB,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE;oBACpE,EAAE,KAAK,EAAE,uBAAuB,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;oBAChE;wBACE,KAAK,EAAE,gCAAgC;wBACvC,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE;qBAChD;oBACD;wBACE,KAAK,EAAE,iCAAiC;wBACxC,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE;qBACnE;oBACD;wBACE,KAAK,EAAE,mBAAmB;wBAC1B,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,EAAE;qBAC7D;oBACD;wBACE,KAAK,EAAE,sBAAsB;wBAC7B,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE;qBACvD;iBACF,CAAA;gBACD,KAAK,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,SAAS,EAAE,CAAC;oBAC7C,MAAM,GAAG,GAAG,MAAM,SAAS,CACzB,gBAAgB,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,EAChD,YAAY,KAAK,iBAAiB,CACnC,CAAA;oBACD,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;oBAC7C,MAAM,CAAC,KAAK,CACV,GAAG,CAAC,IAAI,CAAC,IAAI,EACb,kDAAkD,EAClD,KAAK,CACN,CAAA;gBACH,CAAC;gBACD,yDAAyD;gBACzD,MAAM,GAAG,GAAG,MAAM,SAAS,CACzB,cAAc,CAAC,WAAW,CAAC,EAC3B,4DAA4D,CAC7D,CAAA;gBACD,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;YACxC,CAAC;SACF;QACD;YACE,EAAE,EAAE,qBAAqB;YACzB,IAAI,EAAE,kIAAkI;YACxI,QAAQ,EAAE,CAAC,mDAAmD,CAAC;YAC/D,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;gBACxB,MAAM,EAAE,gBAAgB,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,KAAK,CAAA;gBACjE,4BAA4B;gBAC5B,MAAM,gBAAgB,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAA;gBAC5D,IAAI,IAAI,GAAG,MAAM,cAAc,CAAC,UAAU,CAAC,CAAA;gBAC3C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;gBAE5C,OAAO;gBACP,MAAM,aAAa,CAAC,UAAU,EAAE;oBAC9B,EAAE,EAAE,UAAU;oBACd,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE;iBACrC,CAAC,CAAA;gBACF,IAAI,GAAG,MAAM,cAAc,CAAC,UAAU,CAAC,CAAA;gBACvC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;gBAEtE,wDAAwD;gBACxD,MAAM,aAAa,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;gBACpE,IAAI,GAAG,MAAM,cAAc,CAAC,UAAU,CAAC,CAAA;gBACvC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;gBACvC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;gBAEtE,uDAAuD;gBACvD,MAAM,aAAa,CAAC,UAAU,EAAE;oBAC9B,EAAE,EAAE,UAAU;oBACd,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE;iBACnE,CAAC,CAAA;gBACF,IAAI,GAAG,MAAM,cAAc,CAAC,UAAU,CAAC,CAAA;gBACvC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;oBAC1C,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;iBACpD,CAAC,CAAA;gBAEF,0DAA0D;gBAC1D,MAAM,aAAa,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAA;gBAClE,IAAI,GAAG,MAAM,cAAc,CAAC,UAAU,CAAC,CAAA;gBACvC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;YACjD,CAAC;SACF;QACD;YACE,EAAE,EAAE,+BAA+B;YACnC,IAAI,EAAE,sFAAsF;YAC5F,QAAQ,EAAE;gBACR,mDAAmD;gBACnD,yCAAyC;aAC1C;YACD,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;gBACxB,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,GAAG,KAAK,CAAA;gBACtD,MAAM,gBAAgB,CAAC;oBACrB,EAAE,EAAE,cAAc;oBAClB,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE;iBACzD,CAAC,CAAA;gBACF,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;oBAC5C,GAAG,EAAE,WAAW,CAAC,cAAc,EAAE,QAAQ,CAAC;oBAC1C,MAAM,EAAE,KAAK;oBACb,MAAM,EAAE,KAAK;oBACb,IAAI,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE;iBAC5C,CAAC,CAAA;gBACF,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;gBAElD,kEAAkE;gBAClE,MAAM,aAAa,GAAG,MAAM,SAAS,CACnC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;oBACvB,GAAG,EAAE,WAAW,CAAC,cAAc,EAAE,UAAU,CAAC;oBAC5C,MAAM,EAAE,KAAK;oBACb,MAAM,EAAE,KAAK;oBACb,IAAI,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE;iBAC9C,CAAC,EACF,+CAA+C,CAChD,CAAA;gBACD,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;gBAChD,MAAM,CAAC,KAAK,CACV,aAAa,CAAC,IAAI,CAAC,IAAI,EACvB,yCAAyC,CAC1C,CAAA;gBAED,8DAA8D;gBAC9D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;oBAC9C,GAAG,EAAE,WAAW,CAAC,cAAc,EAAE,QAAQ,CAAC;oBAC1C,MAAM,EAAE,KAAK;oBACb,MAAM,EAAE,KAAK;oBACb,IAAI,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE;iBAC1D,CAAC,CAAA;gBACF,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;gBAEpD,qCAAqC;gBACrC,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;oBAC3C,GAAG,EAAE,WAAW,CAAC,cAAc,EAAE,OAAO,CAAC;oBACzC,MAAM,EAAE,KAAK;oBACb,MAAM,EAAE,KAAK;oBACb,IAAI,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE;iBAC3C,CAAC,CAAA;gBACF,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;YACnD,CAAC;SACF;QACD;YACE,EAAE,EAAE,uCAAuC;YAC3C,IAAI,EAAE,kGAAkG;YACxG,QAAQ,EAAE;gBACR,mDAAmD;gBACnD,yCAAyC;aAC1C;YACD,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;gBACxB,MAAM,EACJ,KAAK,EACL,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,WAAW,EACZ,GAAG,KAAK,CAAA;gBACT,MAAM,gBAAgB,CAAC;oBACrB,EAAE,EAAE,aAAa;oBACjB,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE;iBACjC,CAAC,CAAA;gBACF,KAAK,MAAM,UAAU,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;oBAC7C,MAAM,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;wBAC7B,GAAG,EAAE,WAAW,CAAC,aAAa,EAAE,UAAU,CAAC;wBAC3C,MAAM,EAAE,KAAK;wBACb,MAAM,EAAE,KAAK;wBACb,IAAI,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE;qBACvC,CAAC,CAAA;gBACJ,CAAC;gBACD,MAAM,GAAG,GAAG,MAAM,SAAS,CACzB,aAAa,CAAC,aAAa,EAAE;oBAC3B,EAAE,EAAE,aAAa;oBACjB,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE;iBACzD,CAAC,EACF,uEAAuE,CACxE,CAAA;gBACD,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;gBACtC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,yCAAyC,CAAC,CAAA;gBACtE,uCAAuC;gBACvC,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,aAAa,CAAC,CAAA;gBAChD,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YACpE,CAAC;SACF;KACF;CACF,CAAA"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@interop/was-conformance-suite",
3
3
  "description": "Conformance test suite for Wallet Attached Storage (WAS) servers, runnable as a CLI or in the browser.",
4
- "version": "0.6.1",
4
+ "version": "0.8.0",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "build": "pnpm run clear && tsc",
@@ -43,7 +43,7 @@
43
43
  "dependencies": {
44
44
  "@digitalcredentials/bnid": "^5.0.0",
45
45
  "@interop/data-integrity-core": "^8.7.1",
46
- "@interop/ed25519-signature": "^7.1.4",
46
+ "@interop/ed25519-signature": "^7.2.0",
47
47
  "@interop/ed25519-verification-key": "^8.0.4",
48
48
  "@interop/ezcap": "^7.4.3",
49
49
  "@interop/http-digest-header": "^3.1.0",