@aventara/testing 1.0.0-rc.1 → 1.0.0-rc.11
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/CHANGELOG.md +138 -1
- package/README.md +10 -5
- package/dist/protocol/corpus-contract.fixture.d.ts +139 -366
- package/dist/protocol/corpus-contract.fixture.js +71 -17
- package/dist/protocol/in-process.driver.d.ts +5 -2
- package/dist/protocol/in-process.driver.js +14 -0
- package/dist/protocol/per-route.driver.d.ts +2 -1
- package/dist/protocol/per-route.driver.js +5 -0
- package/dist/protocol/protocol-conformance.d.ts +3 -2
- package/dist/protocol/protocol-conformance.js +5 -1
- package/dist/protocol/protocol-corpus.d.ts +4 -1
- package/dist/protocol/protocol-fixtures.js +480 -1
- package/dist/protocol/protocol-fixtures.json-codec.d.ts +2 -1
- package/dist/protocol/protocol-fixtures.json-codec.js +9 -1
- package/fixtures/protocol-v1.json +141 -100
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,142 @@
|
|
|
1
1
|
# @aventara/testing
|
|
2
2
|
|
|
3
|
+
## 1.0.0-rc.11
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 67551ca: The protocol corpus covers rc.11's Operation Sets and cached reads. `POST /_all` rows: a mix of reads and writes answered
|
|
8
|
+
`200 A1000` with each key's own envelope, hostile keys, the streamed NDJSON answer, and the whole-request refusals
|
|
9
|
+
(`limits.maxAll`, an empty set, a bad key or member, a stale hash, `GET`). Cached-read rows run against a fourth corpus
|
|
10
|
+
ClientContract with `cache` stages, named by their query's `v`: each `for` audience's headers, the compressed `q`,
|
|
11
|
+
`ETag` and `304`, the `no-store` refusals, and the `405`s. `runAvProtocolConformance` and `AvProtocolCorpus.framework`
|
|
12
|
+
pick a `GET` row's contract by its `v`, and `fixtures/protocol-v1.json` lists the fourth contract.
|
|
13
|
+
- 186bc29: The corpus Contracts' hashes and `fixtures/protocol-v1.json` move once, because every Client Contract's limits now
|
|
14
|
+
include `maxAll` and `maxAllConcurrency`.
|
|
15
|
+
- Updated dependencies [6197c08]
|
|
16
|
+
- Updated dependencies [e0e89c1]
|
|
17
|
+
- Updated dependencies [186bc29]
|
|
18
|
+
- Updated dependencies [33b5f83]
|
|
19
|
+
- Updated dependencies [6d8b589]
|
|
20
|
+
- Updated dependencies [11ece49]
|
|
21
|
+
- Updated dependencies [92fd093]
|
|
22
|
+
- Updated dependencies [e5e98e6]
|
|
23
|
+
- Updated dependencies [a05d970]
|
|
24
|
+
- @aventara/core@1.0.0-rc.11
|
|
25
|
+
|
|
26
|
+
## 1.0.0-rc.10
|
|
27
|
+
|
|
28
|
+
### Patch Changes
|
|
29
|
+
|
|
30
|
+
- 04bb39a: `engines.node` is now `^22.23.4 || >=24.22.1`, the Node security releases of 2026-10-20 (CVE-2026-105481,
|
|
31
|
+
CVE-2026-105482, CVE-2026-105483, CVE-2026-106069, CVE-2026-106072, CVE-2026-106073, CVE-2026-106074,
|
|
32
|
+
CVE-2026-111497). The bins refuse an older Node in one sentence naming that range.
|
|
33
|
+
- 587dd01: The protocol corpus covers `POST /_access/can`: its answers and refusals, driven against a third corpus Client
|
|
34
|
+
Contract built with `access`. `AvProtocolCorpus.framework(hash)` serves that Contract for its hash, and
|
|
35
|
+
`fixtures/protocol-v1.json` carries it beside the other two.
|
|
36
|
+
- Updated dependencies [587dd01]
|
|
37
|
+
- Updated dependencies [d7e7369]
|
|
38
|
+
- Updated dependencies [7ee547b]
|
|
39
|
+
- Updated dependencies [f52c499]
|
|
40
|
+
- Updated dependencies [2907484]
|
|
41
|
+
- Updated dependencies [a6bbdf0]
|
|
42
|
+
- Updated dependencies [3e26549]
|
|
43
|
+
- Updated dependencies [a6bbdf0]
|
|
44
|
+
- Updated dependencies [6f3f6f6]
|
|
45
|
+
- Updated dependencies [04bb39a]
|
|
46
|
+
- Updated dependencies [3fb3333]
|
|
47
|
+
- Updated dependencies [827ccb6]
|
|
48
|
+
- Updated dependencies [7f5abc3]
|
|
49
|
+
- Updated dependencies [88263a1]
|
|
50
|
+
- Updated dependencies [10341d5]
|
|
51
|
+
- Updated dependencies [8129844]
|
|
52
|
+
- Updated dependencies [88263a1]
|
|
53
|
+
- Updated dependencies [3020b5c]
|
|
54
|
+
- Updated dependencies [88263a1]
|
|
55
|
+
- Updated dependencies [88263a1]
|
|
56
|
+
- @aventara/core@1.0.0-rc.10
|
|
57
|
+
|
|
58
|
+
## 1.0.0-rc.9
|
|
59
|
+
|
|
60
|
+
### Patch Changes
|
|
61
|
+
|
|
62
|
+
- Updated dependencies [205a379]
|
|
63
|
+
- Updated dependencies [a0bb05e]
|
|
64
|
+
- Updated dependencies [86ab319]
|
|
65
|
+
- Updated dependencies [fdf52e6]
|
|
66
|
+
- @aventara/core@1.0.0-rc.9
|
|
67
|
+
|
|
68
|
+
## 1.0.0-rc.8
|
|
69
|
+
|
|
70
|
+
1.0.0-rc.5, rc.6 and rc.7 were tagged but never published; 1.0.0-rc.8 contains everything listed under them and the changes below.
|
|
71
|
+
|
|
72
|
+
### Patch Changes
|
|
73
|
+
|
|
74
|
+
- Updated dependencies [1c8e4ee]
|
|
75
|
+
- @aventara/core@1.0.0-rc.8
|
|
76
|
+
|
|
77
|
+
## 1.0.0-rc.7
|
|
78
|
+
|
|
79
|
+
1.0.0-rc.5 and 1.0.0-rc.6 were tagged but never published; 1.0.0-rc.7 contains everything listed under them and the changes below.
|
|
80
|
+
|
|
81
|
+
### Patch Changes
|
|
82
|
+
|
|
83
|
+
- Updated dependencies [f917c1c]
|
|
84
|
+
- @aventara/core@1.0.0-rc.7
|
|
85
|
+
|
|
86
|
+
## 1.0.0-rc.6
|
|
87
|
+
|
|
88
|
+
1.0.0-rc.5 was tagged but never published. 1.0.0-rc.6 contains everything listed under 1.0.0-rc.5 and the fix below.
|
|
89
|
+
|
|
90
|
+
### Patch Changes
|
|
91
|
+
|
|
92
|
+
- Updated dependencies [1cf72e0]
|
|
93
|
+
- @aventara/core@1.0.0-rc.6
|
|
94
|
+
|
|
95
|
+
## 1.0.0-rc.5
|
|
96
|
+
|
|
97
|
+
### Patch Changes
|
|
98
|
+
|
|
99
|
+
- Updated dependencies [4795ff1]
|
|
100
|
+
- Updated dependencies [9e178ca]
|
|
101
|
+
- @aventara/core@1.0.0-rc.5
|
|
102
|
+
|
|
103
|
+
## 1.0.0-rc.4
|
|
104
|
+
|
|
105
|
+
### Patch Changes
|
|
106
|
+
|
|
107
|
+
- Updated dependencies [e3d03a7]
|
|
108
|
+
- Updated dependencies [d10639a]
|
|
109
|
+
- Updated dependencies [f67e68c]
|
|
110
|
+
- Updated dependencies [708556c]
|
|
111
|
+
- Updated dependencies [3a0dfca]
|
|
112
|
+
- Updated dependencies [99169d2]
|
|
113
|
+
- Updated dependencies [0fd2608]
|
|
114
|
+
- Updated dependencies [154e440]
|
|
115
|
+
- Updated dependencies [2fcffdb]
|
|
116
|
+
- @aventara/core@1.0.0-rc.4
|
|
117
|
+
|
|
118
|
+
## 1.0.0-rc.3
|
|
119
|
+
|
|
120
|
+
### Patch Changes
|
|
121
|
+
|
|
122
|
+
- Updated dependencies [b38034d]
|
|
123
|
+
- Updated dependencies [b38034d]
|
|
124
|
+
- Updated dependencies [b38034d]
|
|
125
|
+
- Updated dependencies [b38034d]
|
|
126
|
+
- Updated dependencies [b38034d]
|
|
127
|
+
- Updated dependencies [b38034d]
|
|
128
|
+
- @aventara/core@1.0.0-rc.3
|
|
129
|
+
|
|
130
|
+
## 1.0.0-rc.2
|
|
131
|
+
|
|
132
|
+
### Patch Changes
|
|
133
|
+
|
|
134
|
+
- Updated dependencies [9366e16]
|
|
135
|
+
- Updated dependencies [9366e16]
|
|
136
|
+
- Updated dependencies [9366e16]
|
|
137
|
+
- Updated dependencies [9366e16]
|
|
138
|
+
- @aventara/core@1.0.0-rc.2
|
|
139
|
+
|
|
3
140
|
## 1.0.0-rc.1
|
|
4
141
|
|
|
5
142
|
### Patch Changes
|
|
@@ -465,7 +602,7 @@
|
|
|
465
602
|
`framework.transaction`, `framework.executeTransaction` and `POST /_transactions` alike. A single call is unchanged
|
|
466
603
|
(`["arguments", …]`). If your code reads `issue.path` from a transaction's answer, drop the `"operations", i, "args"`
|
|
467
604
|
prefix to get the path inside that step's arguments. `@aventara/testing`'s protocol corpus row "a client-hidden
|
|
468
|
-
field —
|
|
605
|
+
field — /\_transactions" and `fixtures/protocol-v1.json` carry the new path.
|
|
469
606
|
- 032f792: **Behaviour changes, transactions:** an error about a transaction step itself — rather than its arguments — now
|
|
470
607
|
names the step too, so every path in a transaction's answer is a path through the request you sent: an unknown or
|
|
471
608
|
hidden Resource is at `["operations", i, "resource"]`, a fingerprint that does not match at
|
package/README.md
CHANGED
|
@@ -20,7 +20,7 @@ It depends on `@aventara/core` only.
|
|
|
20
20
|
npm install --save-dev @aventara/testing@rc
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
-
Node `^22.
|
|
23
|
+
Node `^22.23.4 || >=24.22.1`. ES modules.
|
|
24
24
|
|
|
25
25
|
## Serving the corpus through your own stack
|
|
26
26
|
|
|
@@ -36,8 +36,10 @@ const framework = await AvProtocolCorpus.framework();
|
|
|
36
36
|
```
|
|
37
37
|
|
|
38
38
|
- `framework(contractHash?)`: a fresh corpus `AvFramework`, backed by an in-memory adapter whose answers every row
|
|
39
|
-
states. Pass a row's `Aventara-Contract-Hash` to get the contract that row targets
|
|
40
|
-
|
|
39
|
+
states. Pass a row's `Aventara-Contract-Hash` to get the contract that row targets (a cached read's `GET` sends no
|
|
40
|
+
such header: pass its query's `v`). A few rows target a contract without transactions, the `/_access/can` rows one
|
|
41
|
+
with `access`, and the cached-read rows one with `cache` stages; every other hash (a stale one included) gets the
|
|
42
|
+
main contract.
|
|
41
43
|
- `entrypoint`: where the corpus is mounted; every row's `path` is relative to it.
|
|
42
44
|
- `clientContractHash`: the main ClientContract's hash. A client generated against it sends this hash, and
|
|
43
45
|
`GET /_contract` names it.
|
|
@@ -63,8 +65,11 @@ or host written in another language can be held to the same answers:
|
|
|
63
65
|
```
|
|
64
66
|
|
|
65
67
|
- `contracts`: each ClientContract a row targets: its hash and its exact `GET /_contract` bytes (`document`, a
|
|
66
|
-
string). The first is the main contract, `clientContractHash`; a row targets
|
|
67
|
-
|
|
68
|
+
string). The first is the main contract, `clientContractHash`; a row targets another by sending its hash (a cached
|
|
69
|
+
read's `GET` as its query's `v`).
|
|
70
|
+
- `rows`: as `AvProtocolFixture` describes them. A cached read's `request` carries its `query` (without the `?`). A
|
|
71
|
+
streamed `POST /_all` answer (`Accept: application/x-ndjson`) is no envelope: its row's `code` is `null` and its
|
|
72
|
+
`bodyBytes` are the lines in order. One body is too large to write out (one byte over the 1 MiB request
|
|
68
73
|
limit): its `request.body.content` is a recipe, `{ "prefix": "…", "repeat": "x", "times": 1048567, "suffix": "…" }`,
|
|
69
74
|
standing for `prefix` + `repeat` repeated `times` times + `suffix`. Every other `content` is the body's text.
|
|
70
75
|
|