@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 +23 -14
- package/dist/harness/types.d.ts +6 -0
- package/dist/harness/types.d.ts.map +1 -1
- package/dist/helpers.d.ts +12 -0
- package/dist/helpers.d.ts.map +1 -1
- package/dist/helpers.js +16 -2
- package/dist/helpers.js.map +1 -1
- package/dist/suites/delegation-cryptosuites-api.d.ts +11 -0
- package/dist/suites/delegation-cryptosuites-api.d.ts.map +1 -0
- package/dist/suites/delegation-cryptosuites-api.js +194 -0
- package/dist/suites/delegation-cryptosuites-api.js.map +1 -0
- package/dist/suites/index.d.ts +3 -1
- package/dist/suites/index.d.ts.map +1 -1
- package/dist/suites/index.js +5 -1
- package/dist/suites/index.js.map +1 -1
- package/dist/suites/plaintext-declaration-api.d.ts +12 -0
- package/dist/suites/plaintext-declaration-api.d.ts.map +1 -0
- package/dist/suites/plaintext-declaration-api.js +371 -0
- package/dist/suites/plaintext-declaration-api.js.map +1 -0
- package/package.json +2 -2
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
|
-
| `
|
|
127
|
-
| `
|
|
128
|
-
| `
|
|
129
|
-
| `
|
|
130
|
-
| `client-
|
|
131
|
-
| `client-
|
|
132
|
-
| `
|
|
133
|
-
| `
|
|
134
|
-
| `
|
|
135
|
-
| `
|
|
136
|
-
| `
|
|
137
|
-
| `
|
|
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
|
|
package/dist/harness/types.d.ts
CHANGED
|
@@ -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":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAA;AAE3D;;;;;GAKG;AACH,MAAM,WAAW,KAAK;IACpB,GAAG,EAAE,MAAM,CAAA;IACX;;;;OAIG;IACH,MAAM,EAAE,OAAO,CAAA;IACf,UAAU,EAAE,UAAU,CAAA;IACtB,GAAG,EAAE,SAAS,CAAA;CACf;AAED,iFAAiF;AACjF,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,OAAO,CAAA;CAChB;AAED,6DAA6D;AAC7D,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,KAAK,CAAA;IACZ,iBAAiB,EAAE,cAAc,CAAA;IACjC,GAAG,EAAE,KAAK,CAAA;CACX;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd;;;OAGG;IACH,WAAW,EAAE,CAAC,OAAO,EAAE;QACrB,gBAAgB,EAAE,MAAM,CAAA;QACxB,UAAU,EAAE,UAAU,CAAA;KACvB,KAAK,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,GAAG,CAAA;KAAE,CAAC,CAAA;IAC9D;;;OAGG;IACH,cAAc,EAAE,CAAC,OAAO,EAAE;QAAE,GAAG,EAAE,SAAS,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,KAAK,CAAC,CAAA;IAC9E,yEAAyE;IACzE,SAAS,EAAE,CAAC,OAAO,EAAE;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,KAAK,SAAS,CAAA;IACtD,mDAAmD;IACnD,UAAU,EAAE,CAAC,OAAO,EAAE;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,KAAK,UAAU,CAAA;IACxD,6DAA6D;IAC7D,UAAU,EAAE,MAAM,MAAM,CAAA;IACxB,8EAA8E;IAC9E,gBAAgB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAA;CAC9C;AAED;;;GAGG;AACH,MAAM,WAAW,WAAY,SAAQ,kBAAkB;IACrD,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,KAAK,CAAA;CACjC;AAED,MAAM,WAAW,QAAQ,CAAC,CAAC,GAAG,GAAG;IAC/B,uEAAuE;IACvE,EAAE,EAAE,MAAM,CAAA;IACV,sEAAsE;IACtE,IAAI,EAAE,MAAM,CAAA;IACZ,2EAA2E;IAC3E,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,GAAG,EAAE,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACnD;AAED,0DAA0D;AAC1D,MAAM,WAAW,UAAU,CAAC,CAAC,GAAG,GAAG;IACjC,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAA;IACZ,yEAAyE;IACzE,KAAK,EAAE,CAAC,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC5D;AAED,MAAM,WAAW,KAAK,CAAC,CAAC,GAAG,GAAG;IAC5B,sCAAsC;IACtC,EAAE,EAAE,MAAM,CAAA;IACV,4EAA4E;IAC5E,IAAI,EAAE,MAAM,CAAA;IACZ,sEAAsE;IACtE,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,gFAAgF;IAChF,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,kBAAkB,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;IAC/C,sFAAsF;IACtF,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/D,6DAA6D;IAC7D,MAAM,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;IAC7B,kFAAkF;IAClF,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;CAC1B;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;AAEjD,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,sDAAsD;IACtD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,gEAAgE;IAChE,QAAQ,EAAE,OAAO,CAAA;IACjB,MAAM,EAAE,UAAU,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,OAAO,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,SAAS,CAAA;IACjB,OAAO,EAAE,UAAU,EAAE,CAAA;IACrB,0EAA0E;IAC1E,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,SAAS,CAAA;IACjB,6CAA6C;IAC7C,UAAU,EAAE,OAAO,CAAA;IACnB,MAAM,EAAE,WAAW,EAAE,CAAA;CACtB;AAED,MAAM,MAAM,QAAQ,GAChB;IACE,IAAI,EAAE,WAAW,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;CAClB,GACD;IACE,IAAI,EAAE,aAAa,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB,GACD;IACE,IAAI,EAAE,YAAY,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,OAAO,CAAA;CAClB,GACD;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,SAAS,CAAA;CAAE,CAAA"}
|
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;
|
package/dist/helpers.d.ts.map
CHANGED
|
@@ -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,
|
|
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 {
|
|
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:
|
|
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
|
}
|
package/dist/helpers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","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;AAE/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,
|
|
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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"}
|
package/dist/suites/index.d.ts
CHANGED
|
@@ -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,
|
|
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"}
|
package/dist/suites/index.js
CHANGED
|
@@ -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
|
package/dist/suites/index.js.map
CHANGED
|
@@ -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":"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"}
|
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.
|
|
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.
|
|
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",
|