api-tests-coverage 1.0.0 → 1.0.1

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.
Files changed (163) hide show
  1. package/dist/dashboard/assets/_basePickBy-DK6M9Uvz.js +1 -0
  2. package/dist/dashboard/assets/_baseUniq-BPCxdwlX.js +1 -0
  3. package/dist/dashboard/assets/arc-225azWF8.js +1 -0
  4. package/dist/dashboard/assets/architectureDiagram-VXUJARFQ-BW9j-2rE.js +36 -0
  5. package/dist/dashboard/assets/blockDiagram-VD42YOAC-CcWyVh_8.js +122 -0
  6. package/dist/dashboard/assets/c4Diagram-YG6GDRKO-Bq0y8Ms0.js +10 -0
  7. package/dist/dashboard/assets/channel-CPmdNASe.js +1 -0
  8. package/dist/dashboard/assets/chunk-4BX2VUAB-BrlBx_h4.js +1 -0
  9. package/dist/dashboard/assets/chunk-55IACEB6-BTGWaOkw.js +1 -0
  10. package/dist/dashboard/assets/chunk-B4BG7PRW-B-3Me5OV.js +165 -0
  11. package/dist/dashboard/assets/chunk-DI55MBZ5-BLZCyXU3.js +220 -0
  12. package/dist/dashboard/assets/chunk-FMBD7UC4-Bm9KRQE1.js +15 -0
  13. package/dist/dashboard/assets/chunk-QN33PNHL-DtWoo2Hn.js +1 -0
  14. package/dist/dashboard/assets/chunk-QZHKN3VN-DfaeFdsW.js +1 -0
  15. package/dist/dashboard/assets/chunk-TZMSLE5B-CM7Di7Gz.js +1 -0
  16. package/dist/dashboard/assets/classDiagram-2ON5EDUG-DTSnWk0q.js +1 -0
  17. package/dist/dashboard/assets/classDiagram-v2-WZHVMYZB-DTSnWk0q.js +1 -0
  18. package/dist/dashboard/assets/clone-DiFVAewv.js +1 -0
  19. package/dist/dashboard/assets/cose-bilkent-S5V4N54A-CI6S9tNC.js +1 -0
  20. package/dist/dashboard/assets/cytoscape.esm-CyJtwmzi.js +331 -0
  21. package/dist/dashboard/assets/dagre-6UL2VRFP-CD25jMwx.js +4 -0
  22. package/dist/dashboard/assets/diagram-PSM6KHXK-B2ziHyX_.js +24 -0
  23. package/dist/dashboard/assets/diagram-QEK2KX5R-DpPMBb2T.js +43 -0
  24. package/dist/dashboard/assets/diagram-S2PKOQOG-BplBVLaZ.js +24 -0
  25. package/dist/dashboard/assets/erDiagram-Q2GNP2WA-C6Kdrqa_.js +60 -0
  26. package/dist/dashboard/assets/flowDiagram-NV44I4VS-CBo4bgv8.js +162 -0
  27. package/dist/dashboard/assets/ganttDiagram-JELNMOA3-DL8oIX3C.js +267 -0
  28. package/dist/dashboard/assets/gitGraphDiagram-V2S2FVAM-5oPGxe6l.js +65 -0
  29. package/dist/dashboard/assets/graph-DWVIsnRu.js +1 -0
  30. package/dist/dashboard/assets/index-B2mS1bcV.js +522 -0
  31. package/dist/dashboard/assets/index-DBTGeaha.css +1 -0
  32. package/dist/dashboard/assets/infoDiagram-HS3SLOUP-D-bnjqH3.js +2 -0
  33. package/dist/dashboard/assets/journeyDiagram-XKPGCS4Q-DkT7QyWQ.js +139 -0
  34. package/dist/dashboard/assets/kanban-definition-3W4ZIXB7-CSO8OAdK.js +89 -0
  35. package/dist/dashboard/assets/katex-O9d3_IXG.js +261 -0
  36. package/dist/dashboard/assets/layout-BRUlIe_x.js +1 -0
  37. package/dist/dashboard/assets/mindmap-definition-VGOIOE7T-DabWpbNO.js +68 -0
  38. package/dist/dashboard/assets/pieDiagram-ADFJNKIX-x6W4JfPL.js +30 -0
  39. package/dist/dashboard/assets/quadrantDiagram-AYHSOK5B-Cs_QHGFN.js +7 -0
  40. package/dist/dashboard/assets/requirementDiagram-UZGBJVZJ-Y6IeHRvx.js +64 -0
  41. package/dist/dashboard/assets/sankeyDiagram-TZEHDZUN-CZT51ITh.js +10 -0
  42. package/dist/dashboard/assets/sequenceDiagram-WL72ISMW-DyAQKRQ-.js +145 -0
  43. package/dist/dashboard/assets/stateDiagram-FKZM4ZOC-DeadfBBo.js +1 -0
  44. package/dist/dashboard/assets/stateDiagram-v2-4FDKWEC3-D58eQQQS.js +1 -0
  45. package/dist/dashboard/assets/timeline-definition-IT6M3QCI-DYmeeClO.js +61 -0
  46. package/dist/dashboard/assets/treemap-GDKQZRPO-CKPSdFAX.js +162 -0
  47. package/dist/dashboard/assets/xychartDiagram-PRI3JC2R-Ch7ZZyVX.js +7 -0
  48. package/dist/dashboard/dist/assets/_basePickBy-DK6M9Uvz.js +1 -0
  49. package/dist/dashboard/dist/assets/_basePickBy-P9JMLvtQ.js +1 -0
  50. package/dist/dashboard/dist/assets/_baseUniq-BLr5OOl5.js +1 -0
  51. package/dist/dashboard/dist/assets/_baseUniq-BPCxdwlX.js +1 -0
  52. package/dist/dashboard/dist/assets/arc-225azWF8.js +1 -0
  53. package/dist/dashboard/dist/assets/arc-FwwTLzl4.js +1 -0
  54. package/dist/dashboard/dist/assets/architectureDiagram-VXUJARFQ-BW9j-2rE.js +36 -0
  55. package/dist/dashboard/dist/assets/architectureDiagram-VXUJARFQ-C7QAcrIt.js +36 -0
  56. package/dist/dashboard/dist/assets/blockDiagram-VD42YOAC-BYvjSDpK.js +122 -0
  57. package/dist/dashboard/dist/assets/blockDiagram-VD42YOAC-CcWyVh_8.js +122 -0
  58. package/dist/dashboard/dist/assets/c4Diagram-YG6GDRKO-Bq0y8Ms0.js +10 -0
  59. package/dist/dashboard/dist/assets/c4Diagram-YG6GDRKO-dUTtO4_k.js +10 -0
  60. package/dist/dashboard/dist/assets/channel-CPmdNASe.js +1 -0
  61. package/dist/dashboard/dist/assets/channel-DRY_ja-e.js +1 -0
  62. package/dist/dashboard/dist/assets/chunk-4BX2VUAB-BrlBx_h4.js +1 -0
  63. package/dist/dashboard/dist/assets/chunk-4BX2VUAB-NmyQ9Lvf.js +1 -0
  64. package/dist/dashboard/dist/assets/chunk-55IACEB6-BTGWaOkw.js +1 -0
  65. package/dist/dashboard/dist/assets/chunk-55IACEB6-GAN8BMbh.js +1 -0
  66. package/dist/dashboard/dist/assets/chunk-B4BG7PRW-B-3Me5OV.js +165 -0
  67. package/dist/dashboard/dist/assets/chunk-B4BG7PRW-CKtaL90X.js +165 -0
  68. package/dist/dashboard/dist/assets/chunk-DI55MBZ5-BLZCyXU3.js +220 -0
  69. package/dist/dashboard/dist/assets/chunk-DI55MBZ5-GokZ0alw.js +220 -0
  70. package/dist/dashboard/dist/assets/chunk-FMBD7UC4-Bm9KRQE1.js +15 -0
  71. package/dist/dashboard/dist/assets/chunk-FMBD7UC4-D8tBTVUA.js +15 -0
  72. package/dist/dashboard/dist/assets/chunk-QN33PNHL-C59bvcTc.js +1 -0
  73. package/dist/dashboard/dist/assets/chunk-QN33PNHL-DtWoo2Hn.js +1 -0
  74. package/dist/dashboard/dist/assets/chunk-QZHKN3VN-DfaeFdsW.js +1 -0
  75. package/dist/dashboard/dist/assets/chunk-QZHKN3VN-E7ncuJVt.js +1 -0
  76. package/dist/dashboard/dist/assets/chunk-TZMSLE5B-BcLpi7P1.js +1 -0
  77. package/dist/dashboard/dist/assets/chunk-TZMSLE5B-CM7Di7Gz.js +1 -0
  78. package/dist/dashboard/dist/assets/classDiagram-2ON5EDUG-DTSnWk0q.js +1 -0
  79. package/dist/dashboard/dist/assets/classDiagram-2ON5EDUG-Dy8_C5lE.js +1 -0
  80. package/dist/dashboard/dist/assets/classDiagram-v2-WZHVMYZB-DTSnWk0q.js +1 -0
  81. package/dist/dashboard/dist/assets/classDiagram-v2-WZHVMYZB-Dy8_C5lE.js +1 -0
  82. package/dist/dashboard/dist/assets/clone-B0_qHCw2.js +1 -0
  83. package/dist/dashboard/dist/assets/clone-DiFVAewv.js +1 -0
  84. package/dist/dashboard/dist/assets/cose-bilkent-S5V4N54A-BYK-qqpA.js +1 -0
  85. package/dist/dashboard/dist/assets/cose-bilkent-S5V4N54A-CI6S9tNC.js +1 -0
  86. package/dist/dashboard/dist/assets/cytoscape.esm-CyJtwmzi.js +331 -0
  87. package/dist/dashboard/dist/assets/dagre-6UL2VRFP-CD25jMwx.js +4 -0
  88. package/dist/dashboard/dist/assets/dagre-6UL2VRFP-CNIXE38x.js +4 -0
  89. package/dist/dashboard/dist/assets/diagram-PSM6KHXK-B2ziHyX_.js +24 -0
  90. package/dist/dashboard/dist/assets/diagram-PSM6KHXK-Dza_WM04.js +24 -0
  91. package/dist/dashboard/dist/assets/diagram-QEK2KX5R-175MJwNN.js +43 -0
  92. package/dist/dashboard/dist/assets/diagram-QEK2KX5R-DpPMBb2T.js +43 -0
  93. package/dist/dashboard/dist/assets/diagram-S2PKOQOG-BplBVLaZ.js +24 -0
  94. package/dist/dashboard/dist/assets/diagram-S2PKOQOG-DpUYqpiH.js +24 -0
  95. package/dist/dashboard/dist/assets/erDiagram-Q2GNP2WA-C6Kdrqa_.js +60 -0
  96. package/dist/dashboard/dist/assets/erDiagram-Q2GNP2WA-YGhaTIGv.js +60 -0
  97. package/dist/dashboard/dist/assets/flowDiagram-NV44I4VS-CBo4bgv8.js +162 -0
  98. package/dist/dashboard/dist/assets/flowDiagram-NV44I4VS-D9XX51TY.js +162 -0
  99. package/dist/dashboard/dist/assets/ganttDiagram-JELNMOA3-BnlL2FL1.js +267 -0
  100. package/dist/dashboard/dist/assets/ganttDiagram-JELNMOA3-DL8oIX3C.js +267 -0
  101. package/dist/dashboard/dist/assets/gitGraphDiagram-V2S2FVAM-5oPGxe6l.js +65 -0
  102. package/dist/dashboard/dist/assets/gitGraphDiagram-V2S2FVAM-IqGQHaKk.js +65 -0
  103. package/dist/dashboard/dist/assets/graph-DOoKbdQ6.js +1 -0
  104. package/dist/dashboard/dist/assets/graph-DWVIsnRu.js +1 -0
  105. package/dist/dashboard/dist/assets/index-B2mS1bcV.js +522 -0
  106. package/dist/dashboard/dist/assets/index-CTnNA-vP.js +522 -0
  107. package/dist/dashboard/dist/assets/index-DBTGeaha.css +1 -0
  108. package/dist/dashboard/dist/assets/infoDiagram-HS3SLOUP-D-PYXUrg.js +2 -0
  109. package/dist/dashboard/dist/assets/infoDiagram-HS3SLOUP-D-bnjqH3.js +2 -0
  110. package/dist/dashboard/dist/assets/journeyDiagram-XKPGCS4Q-DIxnZShx.js +139 -0
  111. package/dist/dashboard/dist/assets/journeyDiagram-XKPGCS4Q-DkT7QyWQ.js +139 -0
  112. package/dist/dashboard/dist/assets/kanban-definition-3W4ZIXB7-CSO8OAdK.js +89 -0
  113. package/dist/dashboard/dist/assets/kanban-definition-3W4ZIXB7-DIQJ-dLy.js +89 -0
  114. package/dist/dashboard/dist/assets/katex-O9d3_IXG.js +261 -0
  115. package/dist/dashboard/dist/assets/layout-BRUlIe_x.js +1 -0
  116. package/dist/dashboard/dist/assets/layout-Dx_sC6cU.js +1 -0
  117. package/dist/dashboard/dist/assets/mindmap-definition-VGOIOE7T-BWOv2jfH.js +68 -0
  118. package/dist/dashboard/dist/assets/mindmap-definition-VGOIOE7T-DabWpbNO.js +68 -0
  119. package/dist/dashboard/dist/assets/pieDiagram-ADFJNKIX-B-ZMfN-z.js +30 -0
  120. package/dist/dashboard/dist/assets/pieDiagram-ADFJNKIX-x6W4JfPL.js +30 -0
  121. package/dist/dashboard/dist/assets/quadrantDiagram-AYHSOK5B-Cs_QHGFN.js +7 -0
  122. package/dist/dashboard/dist/assets/quadrantDiagram-AYHSOK5B-lHEZJOJ6.js +7 -0
  123. package/dist/dashboard/dist/assets/requirementDiagram-UZGBJVZJ-Dmgv7ZrT.js +64 -0
  124. package/dist/dashboard/dist/assets/requirementDiagram-UZGBJVZJ-Y6IeHRvx.js +64 -0
  125. package/dist/dashboard/dist/assets/sankeyDiagram-TZEHDZUN-CZT51ITh.js +10 -0
  126. package/dist/dashboard/dist/assets/sankeyDiagram-TZEHDZUN-DYnsmtzq.js +10 -0
  127. package/dist/dashboard/dist/assets/sequenceDiagram-WL72ISMW-Cp0y_3Co.js +145 -0
  128. package/dist/dashboard/dist/assets/sequenceDiagram-WL72ISMW-DyAQKRQ-.js +145 -0
  129. package/dist/dashboard/dist/assets/stateDiagram-FKZM4ZOC-CmJ3FBc_.js +1 -0
  130. package/dist/dashboard/dist/assets/stateDiagram-FKZM4ZOC-DeadfBBo.js +1 -0
  131. package/dist/dashboard/dist/assets/stateDiagram-v2-4FDKWEC3-D58eQQQS.js +1 -0
  132. package/dist/dashboard/dist/assets/stateDiagram-v2-4FDKWEC3-DBJHmcPu.js +1 -0
  133. package/dist/dashboard/dist/assets/timeline-definition-IT6M3QCI-CnYcftUT.js +61 -0
  134. package/dist/dashboard/dist/assets/timeline-definition-IT6M3QCI-DYmeeClO.js +61 -0
  135. package/dist/dashboard/dist/assets/treemap-GDKQZRPO-B-4BtJ8O.js +162 -0
  136. package/dist/dashboard/dist/assets/treemap-GDKQZRPO-CKPSdFAX.js +162 -0
  137. package/dist/dashboard/dist/assets/xychartDiagram-PRI3JC2R-Ch7ZZyVX.js +7 -0
  138. package/dist/dashboard/dist/assets/xychartDiagram-PRI3JC2R-jiOJ2YB4.js +7 -0
  139. package/dist/dashboard/dist/index.html +14 -0
  140. package/dist/dashboard/dist/reports/business-coverage.json +201 -0
  141. package/dist/dashboard/dist/reports/coverage-intelligence.json +728 -0
  142. package/dist/dashboard/dist/reports/coverage-summary.json +763 -0
  143. package/dist/dashboard/dist/reports/endpoint-coverage.json +336 -0
  144. package/dist/dashboard/dist/reports/error-coverage.json +367 -0
  145. package/dist/dashboard/dist/reports/missing-tests-recommendations.json +285 -0
  146. package/dist/dashboard/dist/reports/risk-prioritization.json +312 -0
  147. package/dist/dashboard/dist/reports/security-coverage.json +299 -0
  148. package/dist/dashboard/dist/vite.svg +1 -0
  149. package/dist/dashboard/index.html +14 -0
  150. package/dist/dashboard/reports/business-coverage.json +201 -0
  151. package/dist/dashboard/reports/coverage-intelligence.json +728 -0
  152. package/dist/dashboard/reports/coverage-summary.json +763 -0
  153. package/dist/dashboard/reports/endpoint-coverage.json +336 -0
  154. package/dist/dashboard/reports/error-coverage.json +367 -0
  155. package/dist/dashboard/reports/missing-tests-recommendations.json +285 -0
  156. package/dist/dashboard/reports/risk-prioritization.json +312 -0
  157. package/dist/dashboard/reports/security-coverage.json +299 -0
  158. package/dist/dashboard/vite.svg +1 -0
  159. package/dist/src/index.js +34 -1
  160. package/dist/src/serveDashboard.d.ts +30 -0
  161. package/dist/src/serveDashboard.d.ts.map +1 -0
  162. package/dist/src/serveDashboard.js +191 -0
  163. package/package.json +3 -2
@@ -0,0 +1,763 @@
1
+ {
2
+ "generatedAt": "2026-03-09T05:11:14.677Z",
3
+ "summary": [
4
+ {
5
+ "type": "endpoint",
6
+ "totalItems": 13,
7
+ "coveredItems": 12,
8
+ "coveragePercent": 92.31
9
+ },
10
+ {
11
+ "type": "business",
12
+ "totalItems": 8,
13
+ "coveredItems": 7,
14
+ "coveragePercent": 87.5
15
+ },
16
+ {
17
+ "type": "error",
18
+ "totalItems": 30,
19
+ "coveredItems": 0,
20
+ "coveragePercent": 0
21
+ },
22
+ {
23
+ "type": "security",
24
+ "totalItems": 26,
25
+ "coveredItems": 6,
26
+ "coveragePercent": 23.08
27
+ },
28
+ {
29
+ "type": "parameter",
30
+ "totalItems": 12,
31
+ "coveredItems": 9,
32
+ "coveragePercent": 75.0
33
+ },
34
+ {
35
+ "type": "integration",
36
+ "totalItems": 5,
37
+ "coveredItems": 4,
38
+ "coveragePercent": 80.0
39
+ },
40
+ {
41
+ "type": "performance",
42
+ "totalItems": 6,
43
+ "coveredItems": 4,
44
+ "coveragePercent": 66.67
45
+ },
46
+ {
47
+ "type": "resilience",
48
+ "totalItems": 4,
49
+ "coveredItems": 3,
50
+ "coveragePercent": 75.0
51
+ }
52
+ ],
53
+ "details": {
54
+ "endpoint": [
55
+ {
56
+ "endpoint": {
57
+ "method": "GET",
58
+ "path": "/wallets"
59
+ },
60
+ "covered": true
61
+ },
62
+ {
63
+ "endpoint": {
64
+ "method": "POST",
65
+ "path": "/wallets"
66
+ },
67
+ "covered": true
68
+ },
69
+ {
70
+ "endpoint": {
71
+ "method": "GET",
72
+ "path": "/wallets/{id}"
73
+ },
74
+ "covered": true
75
+ },
76
+ {
77
+ "endpoint": {
78
+ "method": "DELETE",
79
+ "path": "/wallets/{id}"
80
+ },
81
+ "covered": true
82
+ },
83
+ {
84
+ "endpoint": {
85
+ "method": "PATCH",
86
+ "path": "/wallets/{id}/freeze"
87
+ },
88
+ "covered": true
89
+ },
90
+ {
91
+ "endpoint": {
92
+ "method": "PATCH",
93
+ "path": "/wallets/{id}/unfreeze"
94
+ },
95
+ "covered": true
96
+ },
97
+ {
98
+ "endpoint": {
99
+ "method": "POST",
100
+ "path": "/wallets/{id}/fund"
101
+ },
102
+ "covered": true
103
+ },
104
+ {
105
+ "endpoint": {
106
+ "method": "POST",
107
+ "path": "/wallets/{id}/debit"
108
+ },
109
+ "covered": true
110
+ },
111
+ {
112
+ "endpoint": {
113
+ "method": "POST",
114
+ "path": "/wallets/{id}/transfer"
115
+ },
116
+ "covered": true
117
+ },
118
+ {
119
+ "endpoint": {
120
+ "method": "POST",
121
+ "path": "/payments"
122
+ },
123
+ "covered": true
124
+ },
125
+ {
126
+ "endpoint": {
127
+ "method": "GET",
128
+ "path": "/payments/{id}"
129
+ },
130
+ "covered": true
131
+ },
132
+ {
133
+ "endpoint": {
134
+ "method": "POST",
135
+ "path": "/payments/{id}/refund"
136
+ },
137
+ "covered": true
138
+ },
139
+ {
140
+ "endpoint": {
141
+ "method": "GET",
142
+ "path": "/transactions"
143
+ },
144
+ "covered": false
145
+ },
146
+ {
147
+ "endpoint": {
148
+ "method": "GET",
149
+ "path": "/api/users"
150
+ },
151
+ "covered": true
152
+ },
153
+ {
154
+ "endpoint": {
155
+ "method": "GET",
156
+ "path": "/api/products"
157
+ },
158
+ "covered": true
159
+ }
160
+ ],
161
+ "business": [
162
+ {
163
+ "name": "min-fund-amount",
164
+ "covered": true
165
+ },
166
+ {
167
+ "name": "insufficient-funds",
168
+ "covered": true
169
+ },
170
+ {
171
+ "name": "frozen-wallet-reject",
172
+ "covered": true
173
+ },
174
+ {
175
+ "name": "daily-limit",
176
+ "covered": false
177
+ },
178
+ {
179
+ "name": "transfer-same-currency",
180
+ "covered": true
181
+ },
182
+ {
183
+ "name": "refund-window",
184
+ "covered": true
185
+ },
186
+ {
187
+ "name": "fraud-check",
188
+ "covered": true
189
+ },
190
+ {
191
+ "name": "idempotency",
192
+ "covered": true
193
+ },
194
+ {
195
+ "name": "unique email validation",
196
+ "covered": true
197
+ }
198
+ ],
199
+ "error": [
200
+ {
201
+ "endpoint": {
202
+ "method": "GET",
203
+ "path": "/wallets"
204
+ },
205
+ "covered": false,
206
+ "errorCodes": [
207
+ "401"
208
+ ]
209
+ },
210
+ {
211
+ "endpoint": {
212
+ "method": "POST",
213
+ "path": "/wallets"
214
+ },
215
+ "covered": false,
216
+ "errorCodes": [
217
+ "400"
218
+ ]
219
+ },
220
+ {
221
+ "endpoint": {
222
+ "method": "POST",
223
+ "path": "/wallets"
224
+ },
225
+ "covered": false,
226
+ "errorCodes": [
227
+ "401"
228
+ ]
229
+ },
230
+ {
231
+ "endpoint": {
232
+ "method": "GET",
233
+ "path": "/wallets/{id}"
234
+ },
235
+ "covered": false,
236
+ "errorCodes": [
237
+ "401"
238
+ ]
239
+ },
240
+ {
241
+ "endpoint": {
242
+ "method": "GET",
243
+ "path": "/wallets/{id}"
244
+ },
245
+ "covered": false,
246
+ "errorCodes": [
247
+ "404"
248
+ ]
249
+ },
250
+ {
251
+ "endpoint": {
252
+ "method": "DELETE",
253
+ "path": "/wallets/{id}"
254
+ },
255
+ "covered": false,
256
+ "errorCodes": [
257
+ "401"
258
+ ]
259
+ },
260
+ {
261
+ "endpoint": {
262
+ "method": "DELETE",
263
+ "path": "/wallets/{id}"
264
+ },
265
+ "covered": false,
266
+ "errorCodes": [
267
+ "404"
268
+ ]
269
+ },
270
+ {
271
+ "endpoint": {
272
+ "method": "PATCH",
273
+ "path": "/wallets/{id}/freeze"
274
+ },
275
+ "covered": false,
276
+ "errorCodes": [
277
+ "401"
278
+ ]
279
+ },
280
+ {
281
+ "endpoint": {
282
+ "method": "PATCH",
283
+ "path": "/wallets/{id}/freeze"
284
+ },
285
+ "covered": false,
286
+ "errorCodes": [
287
+ "404"
288
+ ]
289
+ },
290
+ {
291
+ "endpoint": {
292
+ "method": "PATCH",
293
+ "path": "/wallets/{id}/freeze"
294
+ },
295
+ "covered": false,
296
+ "errorCodes": [
297
+ "422"
298
+ ]
299
+ },
300
+ {
301
+ "endpoint": {
302
+ "method": "PATCH",
303
+ "path": "/wallets/{id}/unfreeze"
304
+ },
305
+ "covered": false,
306
+ "errorCodes": [
307
+ "401"
308
+ ]
309
+ },
310
+ {
311
+ "endpoint": {
312
+ "method": "PATCH",
313
+ "path": "/wallets/{id}/unfreeze"
314
+ },
315
+ "covered": false,
316
+ "errorCodes": [
317
+ "404"
318
+ ]
319
+ },
320
+ {
321
+ "endpoint": {
322
+ "method": "PATCH",
323
+ "path": "/wallets/{id}/unfreeze"
324
+ },
325
+ "covered": false,
326
+ "errorCodes": [
327
+ "422"
328
+ ]
329
+ },
330
+ {
331
+ "endpoint": {
332
+ "method": "POST",
333
+ "path": "/wallets/{id}/fund"
334
+ },
335
+ "covered": false,
336
+ "errorCodes": [
337
+ "401"
338
+ ]
339
+ },
340
+ {
341
+ "endpoint": {
342
+ "method": "POST",
343
+ "path": "/wallets/{id}/fund"
344
+ },
345
+ "covered": false,
346
+ "errorCodes": [
347
+ "404"
348
+ ]
349
+ },
350
+ {
351
+ "endpoint": {
352
+ "method": "POST",
353
+ "path": "/wallets/{id}/fund"
354
+ },
355
+ "covered": false,
356
+ "errorCodes": [
357
+ "422"
358
+ ]
359
+ },
360
+ {
361
+ "endpoint": {
362
+ "method": "POST",
363
+ "path": "/wallets/{id}/debit"
364
+ },
365
+ "covered": false,
366
+ "errorCodes": [
367
+ "401"
368
+ ]
369
+ },
370
+ {
371
+ "endpoint": {
372
+ "method": "POST",
373
+ "path": "/wallets/{id}/debit"
374
+ },
375
+ "covered": false,
376
+ "errorCodes": [
377
+ "404"
378
+ ]
379
+ },
380
+ {
381
+ "endpoint": {
382
+ "method": "POST",
383
+ "path": "/wallets/{id}/debit"
384
+ },
385
+ "covered": false,
386
+ "errorCodes": [
387
+ "422"
388
+ ]
389
+ },
390
+ {
391
+ "endpoint": {
392
+ "method": "POST",
393
+ "path": "/wallets/{id}/transfer"
394
+ },
395
+ "covered": false,
396
+ "errorCodes": [
397
+ "401"
398
+ ]
399
+ },
400
+ {
401
+ "endpoint": {
402
+ "method": "POST",
403
+ "path": "/wallets/{id}/transfer"
404
+ },
405
+ "covered": false,
406
+ "errorCodes": [
407
+ "404"
408
+ ]
409
+ },
410
+ {
411
+ "endpoint": {
412
+ "method": "POST",
413
+ "path": "/wallets/{id}/transfer"
414
+ },
415
+ "covered": false,
416
+ "errorCodes": [
417
+ "422"
418
+ ]
419
+ },
420
+ {
421
+ "endpoint": {
422
+ "method": "POST",
423
+ "path": "/payments"
424
+ },
425
+ "covered": false,
426
+ "errorCodes": [
427
+ "401"
428
+ ]
429
+ },
430
+ {
431
+ "endpoint": {
432
+ "method": "POST",
433
+ "path": "/payments"
434
+ },
435
+ "covered": false,
436
+ "errorCodes": [
437
+ "422"
438
+ ]
439
+ },
440
+ {
441
+ "endpoint": {
442
+ "method": "GET",
443
+ "path": "/payments/{id}"
444
+ },
445
+ "covered": false,
446
+ "errorCodes": [
447
+ "401"
448
+ ]
449
+ },
450
+ {
451
+ "endpoint": {
452
+ "method": "GET",
453
+ "path": "/payments/{id}"
454
+ },
455
+ "covered": false,
456
+ "errorCodes": [
457
+ "404"
458
+ ]
459
+ },
460
+ {
461
+ "endpoint": {
462
+ "method": "POST",
463
+ "path": "/payments/{id}/refund"
464
+ },
465
+ "covered": false,
466
+ "errorCodes": [
467
+ "401"
468
+ ]
469
+ },
470
+ {
471
+ "endpoint": {
472
+ "method": "POST",
473
+ "path": "/payments/{id}/refund"
474
+ },
475
+ "covered": false,
476
+ "errorCodes": [
477
+ "404"
478
+ ]
479
+ },
480
+ {
481
+ "endpoint": {
482
+ "method": "POST",
483
+ "path": "/payments/{id}/refund"
484
+ },
485
+ "covered": false,
486
+ "errorCodes": [
487
+ "422"
488
+ ]
489
+ },
490
+ {
491
+ "endpoint": {
492
+ "method": "GET",
493
+ "path": "/transactions"
494
+ },
495
+ "covered": false,
496
+ "errorCodes": [
497
+ "401"
498
+ ]
499
+ }
500
+ ],
501
+ "security": [
502
+ {
503
+ "control": {
504
+ "id": "authentication:bearerAuth",
505
+ "category": "authentication",
506
+ "description": "Authentication via security scheme \"bearerAuth\" (http/bearer)"
507
+ },
508
+ "covered": true
509
+ },
510
+ {
511
+ "control": {
512
+ "id": "cryptography:https",
513
+ "category": "cryptography",
514
+ "description": "API servers include non-HTTPS URLs – cryptographic transport security may be missing"
515
+ },
516
+ "covered": false
517
+ },
518
+ {
519
+ "control": {
520
+ "id": "authorization:get:/wallets",
521
+ "category": "authorization",
522
+ "description": "Authorization check for GET /wallets"
523
+ },
524
+ "covered": false
525
+ },
526
+ {
527
+ "control": {
528
+ "id": "authorization:post:/wallets",
529
+ "category": "authorization",
530
+ "description": "Authorization check for POST /wallets"
531
+ },
532
+ "covered": false
533
+ },
534
+ {
535
+ "control": {
536
+ "id": "input-validation:post:/wallets",
537
+ "category": "input-validation",
538
+ "description": "Input validation for POST /wallets"
539
+ },
540
+ "covered": true
541
+ },
542
+ {
543
+ "control": {
544
+ "id": "authorization:get:/wallets/{id}",
545
+ "category": "authorization",
546
+ "description": "Authorization check for GET /wallets/{id}"
547
+ },
548
+ "covered": false
549
+ },
550
+ {
551
+ "control": {
552
+ "id": "input-validation:get:/wallets/{id}",
553
+ "category": "input-validation",
554
+ "description": "Input validation for GET /wallets/{id}"
555
+ },
556
+ "covered": true
557
+ },
558
+ {
559
+ "control": {
560
+ "id": "authorization:delete:/wallets/{id}",
561
+ "category": "authorization",
562
+ "description": "Authorization check for DELETE /wallets/{id}"
563
+ },
564
+ "covered": false
565
+ },
566
+ {
567
+ "control": {
568
+ "id": "input-validation:delete:/wallets/{id}",
569
+ "category": "input-validation",
570
+ "description": "Input validation for DELETE /wallets/{id}"
571
+ },
572
+ "covered": true
573
+ },
574
+ {
575
+ "control": {
576
+ "id": "authorization:patch:/wallets/{id}/freeze",
577
+ "category": "authorization",
578
+ "description": "Authorization check for PATCH /wallets/{id}/freeze"
579
+ },
580
+ "covered": false
581
+ },
582
+ {
583
+ "control": {
584
+ "id": "input-validation:patch:/wallets/{id}/freeze",
585
+ "category": "input-validation",
586
+ "description": "Input validation for PATCH /wallets/{id}/freeze"
587
+ },
588
+ "covered": false
589
+ },
590
+ {
591
+ "control": {
592
+ "id": "authorization:patch:/wallets/{id}/unfreeze",
593
+ "category": "authorization",
594
+ "description": "Authorization check for PATCH /wallets/{id}/unfreeze"
595
+ },
596
+ "covered": false
597
+ },
598
+ {
599
+ "control": {
600
+ "id": "input-validation:patch:/wallets/{id}/unfreeze",
601
+ "category": "input-validation",
602
+ "description": "Input validation for PATCH /wallets/{id}/unfreeze"
603
+ },
604
+ "covered": false
605
+ },
606
+ {
607
+ "control": {
608
+ "id": "authorization:post:/wallets/{id}/fund",
609
+ "category": "authorization",
610
+ "description": "Authorization check for POST /wallets/{id}/fund"
611
+ },
612
+ "covered": false
613
+ },
614
+ {
615
+ "control": {
616
+ "id": "input-validation:post:/wallets/{id}/fund",
617
+ "category": "input-validation",
618
+ "description": "Input validation for POST /wallets/{id}/fund"
619
+ },
620
+ "covered": false
621
+ },
622
+ {
623
+ "control": {
624
+ "id": "authorization:post:/wallets/{id}/debit",
625
+ "category": "authorization",
626
+ "description": "Authorization check for POST /wallets/{id}/debit"
627
+ },
628
+ "covered": false
629
+ },
630
+ {
631
+ "control": {
632
+ "id": "input-validation:post:/wallets/{id}/debit",
633
+ "category": "input-validation",
634
+ "description": "Input validation for POST /wallets/{id}/debit"
635
+ },
636
+ "covered": false
637
+ },
638
+ {
639
+ "control": {
640
+ "id": "authorization:post:/wallets/{id}/transfer",
641
+ "category": "authorization",
642
+ "description": "Authorization check for POST /wallets/{id}/transfer"
643
+ },
644
+ "covered": false
645
+ },
646
+ {
647
+ "control": {
648
+ "id": "input-validation:post:/wallets/{id}/transfer",
649
+ "category": "input-validation",
650
+ "description": "Input validation for POST /wallets/{id}/transfer"
651
+ },
652
+ "covered": false
653
+ },
654
+ {
655
+ "control": {
656
+ "id": "authorization:post:/payments",
657
+ "category": "authorization",
658
+ "description": "Authorization check for POST /payments"
659
+ },
660
+ "covered": false
661
+ },
662
+ {
663
+ "control": {
664
+ "id": "input-validation:post:/payments",
665
+ "category": "input-validation",
666
+ "description": "Input validation for POST /payments"
667
+ },
668
+ "covered": true
669
+ },
670
+ {
671
+ "control": {
672
+ "id": "authorization:get:/payments/{id}",
673
+ "category": "authorization",
674
+ "description": "Authorization check for GET /payments/{id}"
675
+ },
676
+ "covered": false
677
+ },
678
+ {
679
+ "control": {
680
+ "id": "input-validation:get:/payments/{id}",
681
+ "category": "input-validation",
682
+ "description": "Input validation for GET /payments/{id}"
683
+ },
684
+ "covered": true
685
+ },
686
+ {
687
+ "control": {
688
+ "id": "authorization:post:/payments/{id}/refund",
689
+ "category": "authorization",
690
+ "description": "Authorization check for POST /payments/{id}/refund"
691
+ },
692
+ "covered": false
693
+ },
694
+ {
695
+ "control": {
696
+ "id": "input-validation:post:/payments/{id}/refund",
697
+ "category": "input-validation",
698
+ "description": "Input validation for POST /payments/{id}/refund"
699
+ },
700
+ "covered": false
701
+ },
702
+ {
703
+ "control": {
704
+ "id": "authorization:get:/transactions",
705
+ "category": "authorization",
706
+ "description": "Authorization check for GET /transactions"
707
+ },
708
+ "covered": false
709
+ },
710
+ {
711
+ "control": {
712
+ "id": "authentication:JWT",
713
+ "category": "authentication",
714
+ "description": "JWT token signature and expiry validation"
715
+ },
716
+ "covered": true
717
+ }
718
+ ],
719
+ "parameter": {
720
+ "items": [
721
+ { "id": "page", "covered": true, "tests": ["pagination returns page 1", "pagination defaults to page 1"] },
722
+ { "id": "limit", "covered": true, "tests": ["pagination returns limited results"] },
723
+ { "id": "offset", "covered": false, "tests": [] },
724
+ { "id": "currency", "covered": true, "tests": ["POST /wallets validates currency"] },
725
+ { "id": "amount", "covered": true, "tests": ["POST /wallets/{id}/fund validates amount"] },
726
+ { "id": "walletId", "covered": true, "tests": ["GET /wallets/{id} validates walletId"] },
727
+ { "id": "paymentId", "covered": true, "tests": ["GET /payments/{id} validates paymentId"] },
728
+ { "id": "idempotencyKey", "covered": true, "tests": ["POST /payments validates idempotency key"] },
729
+ { "id": "fromWalletId", "covered": true, "tests": ["POST /wallets/{id}/transfer validates fromWalletId"] },
730
+ { "id": "toWalletId", "covered": false, "tests": [] },
731
+ { "id": "status", "covered": false, "tests": [] },
732
+ { "id": "startDate", "covered": false, "tests": [] }
733
+ ]
734
+ },
735
+ "performance": {
736
+ "items": [
737
+ { "id": "response-time-200ms", "threshold": "200ms", "covered": true, "tests": ["response time within 200ms"] },
738
+ { "id": "throughput", "threshold": "1000 rps", "covered": true, "tests": ["throughput load test"] },
739
+ { "id": "concurrent-users", "threshold": "100", "covered": true, "tests": ["concurrent users load test"] },
740
+ { "id": "bulk-operations", "threshold": "500ms", "covered": false, "tests": [] },
741
+ { "id": "db-query-time", "threshold": "50ms", "covered": true, "tests": ["db query benchmark"] },
742
+ { "id": "cache-hit-rate", "threshold": "80%", "covered": false, "tests": [] }
743
+ ]
744
+ },
745
+ "resilience": {
746
+ "items": [
747
+ { "id": "Retry-on-transient-failure", "threshold": "3 retries", "covered": true, "tests": ["retry on 503", "retry on timeout"] },
748
+ { "id": "circuit-breaker", "threshold": "5 failures", "covered": true, "tests": ["circuit breaker opens after failures"] },
749
+ { "id": "timeout-handling", "threshold": "30s", "covered": true, "tests": ["request timeout test"] },
750
+ { "id": "graceful-degradation", "threshold": "N/A", "covered": false, "tests": [] }
751
+ ]
752
+ },
753
+ "integration": {
754
+ "items": [
755
+ { "id": "User-registration-flow", "covered": true, "steps": 3, "coveredSteps": 3, "tests": ["user registration e2e"] },
756
+ { "id": "User-payment-flow", "covered": true, "steps": 5, "coveredSteps": 5, "tests": ["user payment e2e"] },
757
+ { "id": "Wallet-lifecycle-flow", "covered": true, "steps": 6, "coveredSteps": 6, "tests": ["wallet lifecycle test"] },
758
+ { "id": "Refund-flow", "covered": false, "steps": 4, "coveredSteps": 2, "tests": [] },
759
+ { "id": "Transfer-flow", "covered": true, "steps": 4, "coveredSteps": 4, "tests": ["transfer e2e"] }
760
+ ]
761
+ }
762
+ }
763
+ }