forked from Disciplr-Org/Disciplr-backend
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest-vaults-output.txt
More file actions
220 lines (219 loc) · 11.9 KB
/
Copy pathtest-vaults-output.txt
File metadata and controls
220 lines (219 loc) · 11.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
> disciplr-backend@0.1.0 test:vaults
> tsx --test src/routes/vaults.test.ts
TAP version 13
# Subtest: returns 401 without an auth token
ok 1 - returns 401 without an auth token
---
duration_ms: 219.2601
type: 'test'
...
# Subtest: rejects invalid vault payload
ok 2 - rejects invalid vault payload
---
duration_ms: 56.3728
type: 'test'
...
# Subtest: returns 400 for missing required verifier field
ok 3 - returns 400 for missing required verifier field
---
duration_ms: 21.764
type: 'test'
...
# Subtest: returns 400 for too many milestones
ok 4 - returns 400 for too many milestones
---
duration_ms: 23.0076
type: 'test'
...
# Subtest: returns 400 for invalid destination address format
ok 5 - returns 400 for invalid destination address format
---
duration_ms: 24.2836
type: 'test'
...
# Subtest: returns 400 for endDate before startDate
ok 6 - returns 400 for endDate before startDate
---
duration_ms: 23.3263
type: 'test'
...
# {"level":"error","event":"app_error","service":"disciplr-backend","code":"PAYLOAD_TOO_LARGE","status":413,"method":"POST","path":"/api/vaults","message":"Payload too large","timestamp":"2026-04-28T15:20:22.081Z"}
# Subtest: returns 413 for payloads exceeding the body parser limit
ok 7 - returns 413 for payloads exceeding the body parser limit
---
duration_ms: 30.1876
type: 'test'
...
# Subtest: creates vault and returns client-sign payload
ok 8 - creates vault and returns client-sign payload
---
duration_ms: 44.0975
type: 'test'
...
# Subtest: replays idempotent request and blocks hash mismatch reuse
ok 9 - replays idempotent request and blocks hash mismatch reuse
---
duration_ms: 82.7956
type: 'test'
...
# Subtest: returns 400 for empty idempotency key
ok 10 - returns 400 for empty idempotency key
---
duration_ms: 21.9019
type: 'test'
...
# Subtest: returns 400 for idempotency key with spaces
ok 11 - returns 400 for idempotency key with spaces
---
duration_ms: 20.2676
type: 'test'
...
# Subtest: returns 400 for idempotency key exceeding 255 characters
ok 12 - returns 400 for idempotency key exceeding 255 characters
---
duration_ms: 16.4412
type: 'test'
...
# Subtest: isolates idempotency keys between different users
ok 13 - isolates idempotency keys between different users
---
duration_ms: 31.8654
type: 'test'
...
# Subtest: GET /api/vaults - List Contract
# Subtest: Pagination
# Subtest: validates offset pagination structure
ok 1 - validates offset pagination structure
---
duration_ms: 35.8274
type: 'test'
...
# Subtest: respects page and pageSize parameters
ok 2 - respects page and pageSize parameters
---
duration_ms: 19.8623
type: 'test'
...
# Subtest: enforces maximum pageSize
ok 3 - enforces maximum pageSize
---
duration_ms: 13.9819
type: 'test'
...
# Subtest: defaults to page 1 when page < 1
ok 4 - defaults to page 1 when page < 1
---
duration_ms: 12.014
type: 'test'
...
1..4
ok 1 - Pagination
---
duration_ms: 83.2274
type: 'suite'
...
# Subtest: Sorting
# Subtest: rejects invalid sort field with 400
ok 1 - rejects invalid sort field with 400
---
duration_ms: 16.4731
type: 'test'
...
# Subtest: accepts valid sort fields
ok 2 - accepts valid sort fields
---
duration_ms: 45.0208
type: 'test'
...
# Subtest: supports ascending and descending order
ok 3 - supports ascending and descending order
---
duration_ms: 20.1214
type: 'test'
...
1..3
ok 2 - Sorting
---
duration_ms: 82.0643
type: 'suite'
...
# Subtest: Filtering
# Subtest: ignores non-allowed filter parameters
ok 1 - ignores non-allowed filter parameters
---
duration_ms: 15.4404
type: 'test'
...
# Subtest: accepts valid filter fields
ok 2 - accepts valid filter fields
---
duration_ms: 13.488
type: 'test'
...
# Subtest: filters by creator
ok 3 - filters by creator
---
duration_ms: 11.9524
type: 'test'
...
1..3
ok 3 - Filtering
---
duration_ms: 41.5118
type: 'suite'
...
# [2026-04-28T15:20:22.528Z] [IP: ::ffff:xxxx:xxxx:xxxx:xxxx:xxxx] GET /api/vaults - Body: {}
# Subtest: Security
# Subtest: requires authentication
ok 1 - requires authentication
---
duration_ms: 15.2312
type: 'test'
...
# Subtest: cannot sort by sensitive fields
ok 2 - cannot sort by sensitive fields
---
duration_ms: 12.5791
type: 'test'
...
1..2
ok 4 - Security
---
duration_ms: 28.2237
type: 'suite'
...
# Subtest: Response Structure
# Subtest: returns array of items in data field
ok 1 - returns array of items in data field
---
duration_ms: 11.7147
type: 'test'
...
# Subtest: includes required fields in each item
ok 2 - includes required fields in each item
---
duration_ms: 11.5042
type: 'test'
...
1..2
ok 5 - Response Structure
---
duration_ms: 23.6005
type: 'suite'
...
1..5
ok 14 - GET /api/vaults - List Contract
---
duration_ms: 259.5879
type: 'suite'
...
1..14
# tests 27
# suites 6
# pass 27
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 7334.693