Releases: interop-alliance/was-conformance-suite
Releases · interop-alliance/was-conformance-suite
Release list
v0.14.0
Added
denial-reasons-api: a refused capability invocation is still a 404, and a
server may name two causes bytypealone to the holder of the affected
chain:capability-expiredandcapability-revoked(optional; the revocation
cases skip when the server has no revocation endpoint). A copy of the grant
invoked without its controller's key, and a refusal for any other reason, stay
the mergednot-found(the latter required).
v0.13.0
Added
conditional-requests-api, a "Descriptions" group: a Collection PUT with
If-None-Match: *creates an absent Collection and 412s on a present one;
Read Space carries a quotedETagand a coveringIf-None-Matchis 304
(optional, the spec's SHOULD); a Space PUT withIf-None-Match: *creates
an absent Space and 412s on a present one; a staleIf-Matchon Update
Space 412s while the current one succeeds and an unconditional PUT still
replaces. The write cases skip when the default backend does not advertise
conditional-writes.
v0.12.0
Added
governed-log-api: an append must fast-forward the stored log. A body the
stored log is not a prefix of is 412precondition-failedeven under a
currentIf-Match; a body adding no line or several is 400
invalid-request-body; the log is unchanged either way.
v0.11.0
Added
- A
governed-log-apisuite for a Collection's governing history log, the
.../meta/logsub-resource, gated on a backend advertising
governed-history-logs: a guarded create (If-None-Match: *) governs the
Collection and its servedencryptionmember equals the log head'sstate
plushistory: { method, resource }; the log reads back verbatim as
text/jsonlwith itsETag; anIf-Matchappend lands and bumps both the
log and DescriptionETags while a stale one is 412; a directencryption
write on a governed Collection is 409encryption-history-log-governed; an
append that drops an epoch is 400 and leaves the log unchanged; a
line-contract break is 400invalid-request-body; governing an
already-described Collection is 409encryption-immutable; the log is absent
from the listing, exempt from the envelope rule, untouched by aPUT /meta,
readable under a capability on the Collection URL, masked as 404 for another
controller, and removed with the Collection.
Fixed
- The optional backend-description cases in
client-spacespin the reference
server's currentfeatureslist, which now ends ingoverned-history-logs.
v0.10.0
Added
conditional-requests-apigains optional-tier conditional-read cases (spec
"Caching"): a GET or HEAD with anIf-None-Matchmatching the currentETag
is 304 with theETagand no body while a stale validator is 200, aW/
validator, a list, and*all match (weak comparison), another controller's
conditional GET is the 404 mask rather than a 304, and a POST response carries
Cache-Control: no-store.
v0.9.0
Added
encryption-descriptor-apicovers the descriptor'shmacblinding-key
member: it persists and echoes verbatim, a malformed member (missingidor
type, emptyrecipients, bad entry shape) is 400invalid-request-body,
changing itsidor removing it on update is 409encryption-immutable, and
changing itsrecipientsor introducing it on a descriptor that lacks it is
accepted.
v0.8.0
Added
- A
plaintext-declaration-apisuite for the Collectionplaintextmember and
itsindexesdeclaration:plaintext.indexespersists and echoes on POST and
PUT create,plaintextandencryptionboth present is 400 on create and on
update in either direction (an emptyplaintextstill excludes), malformed
plaintextis 400,plaintextis added, changed, and emptied with{}on an
existing Collection, and auniqueindex conflict is 409 at write time and
when promoting an attribute to unique over colliding Resources. The suite is
optional until the spec text forplaintextlands.
v0.7.0
Changed
- The suite signs its delegation proofs with
eddsa-jcs-2022instead of
Ed25519Signature2020. That is what current WAS clients emit, so the required
tests now exercise the cryptosuite a server actually meets. A server that
verifies onlyEd25519Signature2020fails the delegated tests until it
accepts both;was-teaching-serverdoes so from 0.23.0.
Added
- A
delegation-cryptosuitessuite: a server accepts a delegation proof signed
witheddsa-jcs-2022, one signed withEd25519Signature2020, and a chain
whose links mix the two -- rather than the run silently tracking whichever
suite it happens to send. Only theeddsa-jcs-2022test is required, matching
what the rest of the suite signs with. The two tests involving
Ed25519Signature2020are optional: a server may reasonably have moved past
it, and the spec's authorization profile names no cryptosuite either way. Actor.signeron the test identities, so a suite can build a client of its
own -- one signing with a different cryptosuite, for instance -- without
reaching intorootClient.
Fixed
- The README's suite-id table lists all 20 suites; it had been missing seven
added since it was written.
v0.6.1
Added
repository.create-controller-unsupported-did-method-400and
space.update-controller-unsupported-did-method-400in thespaces-api
suite: acontrollerthat is a valid DID of a method not in the spec's Space
Controller DID Method Registry (did:web) is refused with 400
invalid-request-body, on create and on update by the stored controller, and
the update leaves the stored controller unchanged.
v0.6.0
Added
- Codec-path tests in the
blinded-index-apisuite, grouped ascodec pathand
gated on the sameblinded-index-queryfeature detection: an encrypted
Collection is provisioned through@interop/was-client
(encryption: { scheme: 'edv' }, a first key epoch withblindedIndex: true,
and a declared index), documents are written withadd(), and the server
matches the client-computed tokens --find({ equals })returns them
decrypted,find({ has })andfind({ count: true })match on presence and
tally, and a write colliding on auniquedeclared attribute is refused with
409id-conflict(surfaced as the client'sConflictError). The existing
tests seed hand-built envelopes, which cannot show that a real client's tokens
are the tokens this server matches.
Changed
@interop/was-clientpeer range raised to>=0.35.0 <1.0.0(the version that
ships the/edvblinded-index API the new tests import).- Added
@interop/x25519-key-agreement-keyas a dependency (the key-agreement
key the codec-path collection's epoch wraps to).