@machina.ai/openapi-contract-tester 2.1.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.
Files changed (431) hide show
  1. package/.env.example +91 -0
  2. package/README.md +472 -0
  3. package/dist/ai-engine/assertion-generator.d.ts +48 -0
  4. package/dist/ai-engine/assertion-generator.d.ts.map +1 -0
  5. package/dist/ai-engine/assertion-generator.js +166 -0
  6. package/dist/ai-engine/assertion-generator.js.map +1 -0
  7. package/dist/ai-engine/context-data-generator.d.ts +38 -0
  8. package/dist/ai-engine/context-data-generator.d.ts.map +1 -0
  9. package/dist/ai-engine/context-data-generator.js +146 -0
  10. package/dist/ai-engine/context-data-generator.js.map +1 -0
  11. package/dist/ai-engine/dataflow-detector.d.ts +53 -0
  12. package/dist/ai-engine/dataflow-detector.d.ts.map +1 -0
  13. package/dist/ai-engine/dataflow-detector.js +217 -0
  14. package/dist/ai-engine/dataflow-detector.js.map +1 -0
  15. package/dist/ai-engine/dependency-detector.d.ts +52 -0
  16. package/dist/ai-engine/dependency-detector.d.ts.map +1 -0
  17. package/dist/ai-engine/dependency-detector.js +241 -0
  18. package/dist/ai-engine/dependency-detector.js.map +1 -0
  19. package/dist/ai-engine/edge-case-suggester.d.ts +63 -0
  20. package/dist/ai-engine/edge-case-suggester.d.ts.map +1 -0
  21. package/dist/ai-engine/edge-case-suggester.js +177 -0
  22. package/dist/ai-engine/edge-case-suggester.js.map +1 -0
  23. package/dist/ai-engine/index.d.ts +13 -0
  24. package/dist/ai-engine/index.d.ts.map +1 -0
  25. package/dist/ai-engine/index.js +13 -0
  26. package/dist/ai-engine/index.js.map +1 -0
  27. package/dist/analyzers/ai-failure-analyzer.d.ts +41 -0
  28. package/dist/analyzers/ai-failure-analyzer.d.ts.map +1 -0
  29. package/dist/analyzers/ai-failure-analyzer.js +220 -0
  30. package/dist/analyzers/ai-failure-analyzer.js.map +1 -0
  31. package/dist/analyzers/comparison-utils.d.ts +31 -0
  32. package/dist/analyzers/comparison-utils.d.ts.map +1 -0
  33. package/dist/analyzers/comparison-utils.js +85 -0
  34. package/dist/analyzers/comparison-utils.js.map +1 -0
  35. package/dist/analyzers/context-analyzer.d.ts +49 -0
  36. package/dist/analyzers/context-analyzer.d.ts.map +1 -0
  37. package/dist/analyzers/context-analyzer.js +292 -0
  38. package/dist/analyzers/context-analyzer.js.map +1 -0
  39. package/dist/analyzers/dependency-analyzer.d.ts +44 -0
  40. package/dist/analyzers/dependency-analyzer.d.ts.map +1 -0
  41. package/dist/analyzers/dependency-analyzer.js +313 -0
  42. package/dist/analyzers/dependency-analyzer.js.map +1 -0
  43. package/dist/analyzers/failure-analyzer.d.ts +122 -0
  44. package/dist/analyzers/failure-analyzer.d.ts.map +1 -0
  45. package/dist/analyzers/failure-analyzer.js +140 -0
  46. package/dist/analyzers/failure-analyzer.js.map +1 -0
  47. package/dist/analyzers/failure-detectors/index.d.ts +33 -0
  48. package/dist/analyzers/failure-detectors/index.d.ts.map +1 -0
  49. package/dist/analyzers/failure-detectors/index.js +164 -0
  50. package/dist/analyzers/failure-detectors/index.js.map +1 -0
  51. package/dist/analyzers/failure-discrepancy-correlator.d.ts +111 -0
  52. package/dist/analyzers/failure-discrepancy-correlator.d.ts.map +1 -0
  53. package/dist/analyzers/failure-discrepancy-correlator.js +202 -0
  54. package/dist/analyzers/failure-discrepancy-correlator.js.map +1 -0
  55. package/dist/analyzers/index.d.ts +10 -0
  56. package/dist/analyzers/index.d.ts.map +1 -0
  57. package/dist/analyzers/index.js +10 -0
  58. package/dist/analyzers/index.js.map +1 -0
  59. package/dist/analyzers/semantic-matcher.d.ts +123 -0
  60. package/dist/analyzers/semantic-matcher.d.ts.map +1 -0
  61. package/dist/analyzers/semantic-matcher.js +297 -0
  62. package/dist/analyzers/semantic-matcher.js.map +1 -0
  63. package/dist/analyzers/source-comparator.d.ts +177 -0
  64. package/dist/analyzers/source-comparator.d.ts.map +1 -0
  65. package/dist/analyzers/source-comparator.js +225 -0
  66. package/dist/analyzers/source-comparator.js.map +1 -0
  67. package/dist/business-rules/business-rules-analyzer.d.ts +44 -0
  68. package/dist/business-rules/business-rules-analyzer.d.ts.map +1 -0
  69. package/dist/business-rules/business-rules-analyzer.js +363 -0
  70. package/dist/business-rules/business-rules-analyzer.js.map +1 -0
  71. package/dist/business-rules/business-rules-generator.d.ts +78 -0
  72. package/dist/business-rules/business-rules-generator.d.ts.map +1 -0
  73. package/dist/business-rules/business-rules-generator.js +357 -0
  74. package/dist/business-rules/business-rules-generator.js.map +1 -0
  75. package/dist/business-rules/extractors/rule-extractors.d.ts +50 -0
  76. package/dist/business-rules/extractors/rule-extractors.d.ts.map +1 -0
  77. package/dist/business-rules/extractors/rule-extractors.js +189 -0
  78. package/dist/business-rules/extractors/rule-extractors.js.map +1 -0
  79. package/dist/business-rules/value-generators.d.ts +70 -0
  80. package/dist/business-rules/value-generators.d.ts.map +1 -0
  81. package/dist/business-rules/value-generators.js +142 -0
  82. package/dist/business-rules/value-generators.js.map +1 -0
  83. package/dist/executor/auth-providers/auth-header-builder.d.ts +16 -0
  84. package/dist/executor/auth-providers/auth-header-builder.d.ts.map +1 -0
  85. package/dist/executor/auth-providers/auth-header-builder.js +47 -0
  86. package/dist/executor/auth-providers/auth-header-builder.js.map +1 -0
  87. package/dist/executor/auth-providers/oauth2-provider.d.ts +19 -0
  88. package/dist/executor/auth-providers/oauth2-provider.d.ts.map +1 -0
  89. package/dist/executor/auth-providers/oauth2-provider.js +114 -0
  90. package/dist/executor/auth-providers/oauth2-provider.js.map +1 -0
  91. package/dist/executor/http-client.d.ts +133 -0
  92. package/dist/executor/http-client.d.ts.map +1 -0
  93. package/dist/executor/http-client.js +172 -0
  94. package/dist/executor/http-client.js.map +1 -0
  95. package/dist/executor/http-request-builder.d.ts +69 -0
  96. package/dist/executor/http-request-builder.d.ts.map +1 -0
  97. package/dist/executor/http-request-builder.js +140 -0
  98. package/dist/executor/http-request-builder.js.map +1 -0
  99. package/dist/executor/http-response-parser.d.ts +28 -0
  100. package/dist/executor/http-response-parser.d.ts.map +1 -0
  101. package/dist/executor/http-response-parser.js +74 -0
  102. package/dist/executor/http-response-parser.js.map +1 -0
  103. package/dist/executor/response-handler.d.ts +66 -0
  104. package/dist/executor/response-handler.d.ts.map +1 -0
  105. package/dist/executor/response-handler.js +135 -0
  106. package/dist/executor/response-handler.js.map +1 -0
  107. package/dist/executor/result-processor.d.ts +27 -0
  108. package/dist/executor/result-processor.d.ts.map +1 -0
  109. package/dist/executor/result-processor.js +140 -0
  110. package/dist/executor/result-processor.js.map +1 -0
  111. package/dist/executor/result-utils.d.ts +21 -0
  112. package/dist/executor/result-utils.d.ts.map +1 -0
  113. package/dist/executor/result-utils.js +29 -0
  114. package/dist/executor/result-utils.js.map +1 -0
  115. package/dist/executor/test-executor.d.ts +49 -0
  116. package/dist/executor/test-executor.d.ts.map +1 -0
  117. package/dist/executor/test-executor.js +226 -0
  118. package/dist/executor/test-executor.js.map +1 -0
  119. package/dist/executor/test-runner.d.ts +85 -0
  120. package/dist/executor/test-runner.d.ts.map +1 -0
  121. package/dist/executor/test-runner.js +177 -0
  122. package/dist/executor/test-runner.js.map +1 -0
  123. package/dist/executor/token-detector/index.d.ts +7 -0
  124. package/dist/executor/token-detector/index.d.ts.map +1 -0
  125. package/dist/executor/token-detector/index.js +7 -0
  126. package/dist/executor/token-detector/index.js.map +1 -0
  127. package/dist/executor/token-detector/token-detector.d.ts +64 -0
  128. package/dist/executor/token-detector/token-detector.d.ts.map +1 -0
  129. package/dist/executor/token-detector/token-detector.js +140 -0
  130. package/dist/executor/token-detector/token-detector.js.map +1 -0
  131. package/dist/generators/business-rule-from-stories-generator.d.ts +30 -0
  132. package/dist/generators/business-rule-from-stories-generator.d.ts.map +1 -0
  133. package/dist/generators/business-rule-from-stories-generator.js +227 -0
  134. package/dist/generators/business-rule-from-stories-generator.js.map +1 -0
  135. package/dist/generators/data/ai-data-generator.d.ts +23 -0
  136. package/dist/generators/data/ai-data-generator.d.ts.map +1 -0
  137. package/dist/generators/data/ai-data-generator.js +41 -0
  138. package/dist/generators/data/ai-data-generator.js.map +1 -0
  139. package/dist/generators/data/base-generator.d.ts +121 -0
  140. package/dist/generators/data/base-generator.d.ts.map +1 -0
  141. package/dist/generators/data/base-generator.js +200 -0
  142. package/dist/generators/data/base-generator.js.map +1 -0
  143. package/dist/generators/data/heuristic-data-generator.d.ts +28 -0
  144. package/dist/generators/data/heuristic-data-generator.d.ts.map +1 -0
  145. package/dist/generators/data/heuristic-data-generator.js +49 -0
  146. package/dist/generators/data/heuristic-data-generator.js.map +1 -0
  147. package/dist/generators/data/index.d.ts +48 -0
  148. package/dist/generators/data/index.d.ts.map +1 -0
  149. package/dist/generators/data/index.js +201 -0
  150. package/dist/generators/data/index.js.map +1 -0
  151. package/dist/generators/data/schema-walker.d.ts +45 -0
  152. package/dist/generators/data/schema-walker.d.ts.map +1 -0
  153. package/dist/generators/data/schema-walker.js +103 -0
  154. package/dist/generators/data/schema-walker.js.map +1 -0
  155. package/dist/generators/data/type-strategies.d.ts +79 -0
  156. package/dist/generators/data/type-strategies.d.ts.map +1 -0
  157. package/dist/generators/data/type-strategies.js +394 -0
  158. package/dist/generators/data/type-strategies.js.map +1 -0
  159. package/dist/generators/data-generator.d.ts +11 -0
  160. package/dist/generators/data-generator.d.ts.map +1 -0
  161. package/dist/generators/data-generator.js +11 -0
  162. package/dist/generators/data-generator.js.map +1 -0
  163. package/dist/generators/edge-case-generator.d.ts +55 -0
  164. package/dist/generators/edge-case-generator.d.ts.map +1 -0
  165. package/dist/generators/edge-case-generator.js +327 -0
  166. package/dist/generators/edge-case-generator.js.map +1 -0
  167. package/dist/generators/edge-cases/boundary-analyzer.d.ts +26 -0
  168. package/dist/generators/edge-cases/boundary-analyzer.d.ts.map +1 -0
  169. package/dist/generators/edge-cases/boundary-analyzer.js +95 -0
  170. package/dist/generators/edge-cases/boundary-analyzer.js.map +1 -0
  171. package/dist/generators/error-case-generator.d.ts +11 -0
  172. package/dist/generators/error-case-generator.d.ts.map +1 -0
  173. package/dist/generators/error-case-generator.js +11 -0
  174. package/dist/generators/error-case-generator.js.map +1 -0
  175. package/dist/generators/errors/auth-error-strategy.d.ts +36 -0
  176. package/dist/generators/errors/auth-error-strategy.d.ts.map +1 -0
  177. package/dist/generators/errors/auth-error-strategy.js +118 -0
  178. package/dist/generators/errors/auth-error-strategy.js.map +1 -0
  179. package/dist/generators/errors/business-error-strategy.d.ts +44 -0
  180. package/dist/generators/errors/business-error-strategy.d.ts.map +1 -0
  181. package/dist/generators/errors/business-error-strategy.js +152 -0
  182. package/dist/generators/errors/business-error-strategy.js.map +1 -0
  183. package/dist/generators/errors/error-strategy-factory.d.ts +27 -0
  184. package/dist/generators/errors/error-strategy-factory.d.ts.map +1 -0
  185. package/dist/generators/errors/error-strategy-factory.js +47 -0
  186. package/dist/generators/errors/error-strategy-factory.js.map +1 -0
  187. package/dist/generators/errors/error-strategy.d.ts +62 -0
  188. package/dist/generators/errors/error-strategy.d.ts.map +1 -0
  189. package/dist/generators/errors/error-strategy.js +69 -0
  190. package/dist/generators/errors/error-strategy.js.map +1 -0
  191. package/dist/generators/errors/index.d.ts +23 -0
  192. package/dist/generators/errors/index.d.ts.map +1 -0
  193. package/dist/generators/errors/index.js +73 -0
  194. package/dist/generators/errors/index.js.map +1 -0
  195. package/dist/generators/errors/validation-error-strategy.d.ts +25 -0
  196. package/dist/generators/errors/validation-error-strategy.d.ts.map +1 -0
  197. package/dist/generators/errors/validation-error-strategy.js +214 -0
  198. package/dist/generators/errors/validation-error-strategy.js.map +1 -0
  199. package/dist/generators/happy-path-generator.d.ts +93 -0
  200. package/dist/generators/happy-path-generator.d.ts.map +1 -0
  201. package/dist/generators/happy-path-generator.js +275 -0
  202. package/dist/generators/happy-path-generator.js.map +1 -0
  203. package/dist/generators/test-enricher.d.ts +44 -0
  204. package/dist/generators/test-enricher.d.ts.map +1 -0
  205. package/dist/generators/test-enricher.js +109 -0
  206. package/dist/generators/test-enricher.js.map +1 -0
  207. package/dist/index.d.ts +9 -0
  208. package/dist/index.d.ts.map +1 -0
  209. package/dist/index.js +14 -0
  210. package/dist/index.js.map +1 -0
  211. package/dist/llm/ai-cache.d.ts +123 -0
  212. package/dist/llm/ai-cache.d.ts.map +1 -0
  213. package/dist/llm/ai-cache.js +220 -0
  214. package/dist/llm/ai-cache.js.map +1 -0
  215. package/dist/llm/ai-client.d.ts +92 -0
  216. package/dist/llm/ai-client.d.ts.map +1 -0
  217. package/dist/llm/ai-client.js +386 -0
  218. package/dist/llm/ai-client.js.map +1 -0
  219. package/dist/llm/data-generator-ai.d.ts +84 -0
  220. package/dist/llm/data-generator-ai.d.ts.map +1 -0
  221. package/dist/llm/data-generator-ai.js +284 -0
  222. package/dist/llm/data-generator-ai.js.map +1 -0
  223. package/dist/llm/index.d.ts +7 -0
  224. package/dist/llm/index.d.ts.map +1 -0
  225. package/dist/llm/index.js +7 -0
  226. package/dist/llm/index.js.map +1 -0
  227. package/dist/mcp/handlers/base-handler.d.ts +72 -0
  228. package/dist/mcp/handlers/base-handler.d.ts.map +1 -0
  229. package/dist/mcp/handlers/base-handler.js +86 -0
  230. package/dist/mcp/handlers/base-handler.js.map +1 -0
  231. package/dist/mcp/handlers/compare-sources.d.ts +91 -0
  232. package/dist/mcp/handlers/compare-sources.d.ts.map +1 -0
  233. package/dist/mcp/handlers/compare-sources.js +182 -0
  234. package/dist/mcp/handlers/compare-sources.js.map +1 -0
  235. package/dist/mcp/handlers/export-results.d.ts +53 -0
  236. package/dist/mcp/handlers/export-results.d.ts.map +1 -0
  237. package/dist/mcp/handlers/export-results.js +132 -0
  238. package/dist/mcp/handlers/export-results.js.map +1 -0
  239. package/dist/mcp/handlers/export-to-postman.d.ts +65 -0
  240. package/dist/mcp/handlers/export-to-postman.d.ts.map +1 -0
  241. package/dist/mcp/handlers/export-to-postman.js +128 -0
  242. package/dist/mcp/handlers/export-to-postman.js.map +1 -0
  243. package/dist/mcp/handlers/generate-tests.d.ts +74 -0
  244. package/dist/mcp/handlers/generate-tests.d.ts.map +1 -0
  245. package/dist/mcp/handlers/generate-tests.js +519 -0
  246. package/dist/mcp/handlers/generate-tests.js.map +1 -0
  247. package/dist/mcp/handlers/index.d.ts +13 -0
  248. package/dist/mcp/handlers/index.d.ts.map +1 -0
  249. package/dist/mcp/handlers/index.js +12 -0
  250. package/dist/mcp/handlers/index.js.map +1 -0
  251. package/dist/mcp/handlers/run-tests.d.ts +89 -0
  252. package/dist/mcp/handlers/run-tests.d.ts.map +1 -0
  253. package/dist/mcp/handlers/run-tests.js +233 -0
  254. package/dist/mcp/handlers/run-tests.js.map +1 -0
  255. package/dist/mcp/handlers/types.d.ts +61 -0
  256. package/dist/mcp/handlers/types.d.ts.map +1 -0
  257. package/dist/mcp/handlers/types.js +9 -0
  258. package/dist/mcp/handlers/types.js.map +1 -0
  259. package/dist/mcp/server.d.ts +64 -0
  260. package/dist/mcp/server.d.ts.map +1 -0
  261. package/dist/mcp/server.js +200 -0
  262. package/dist/mcp/server.js.map +1 -0
  263. package/dist/mcp/services/file-service.d.ts +66 -0
  264. package/dist/mcp/services/file-service.d.ts.map +1 -0
  265. package/dist/mcp/services/file-service.js +143 -0
  266. package/dist/mcp/services/file-service.js.map +1 -0
  267. package/dist/mcp/services/llm-service.d.ts +70 -0
  268. package/dist/mcp/services/llm-service.d.ts.map +1 -0
  269. package/dist/mcp/services/llm-service.js +189 -0
  270. package/dist/mcp/services/llm-service.js.map +1 -0
  271. package/dist/mcp/services/postman-service.d.ts +128 -0
  272. package/dist/mcp/services/postman-service.d.ts.map +1 -0
  273. package/dist/mcp/services/postman-service.js +266 -0
  274. package/dist/mcp/services/postman-service.js.map +1 -0
  275. package/dist/mcp/services/report-service.d.ts +81 -0
  276. package/dist/mcp/services/report-service.d.ts.map +1 -0
  277. package/dist/mcp/services/report-service.js +210 -0
  278. package/dist/mcp/services/report-service.js.map +1 -0
  279. package/dist/mcp/services/spec-service.d.ts +58 -0
  280. package/dist/mcp/services/spec-service.d.ts.map +1 -0
  281. package/dist/mcp/services/spec-service.js +140 -0
  282. package/dist/mcp/services/spec-service.js.map +1 -0
  283. package/dist/parsers/endpoint-extractor.d.ts +32 -0
  284. package/dist/parsers/endpoint-extractor.d.ts.map +1 -0
  285. package/dist/parsers/endpoint-extractor.js +160 -0
  286. package/dist/parsers/endpoint-extractor.js.map +1 -0
  287. package/dist/parsers/openapi-parser.d.ts +120 -0
  288. package/dist/parsers/openapi-parser.d.ts.map +1 -0
  289. package/dist/parsers/openapi-parser.js +257 -0
  290. package/dist/parsers/openapi-parser.js.map +1 -0
  291. package/dist/parsers/visitors/auth-visitor.d.ts +28 -0
  292. package/dist/parsers/visitors/auth-visitor.d.ts.map +1 -0
  293. package/dist/parsers/visitors/auth-visitor.js +116 -0
  294. package/dist/parsers/visitors/auth-visitor.js.map +1 -0
  295. package/dist/prd/index.d.ts +10 -0
  296. package/dist/prd/index.d.ts.map +1 -0
  297. package/dist/prd/index.js +10 -0
  298. package/dist/prd/index.js.map +1 -0
  299. package/dist/prd/prd-reader.d.ts +124 -0
  300. package/dist/prd/prd-reader.d.ts.map +1 -0
  301. package/dist/prd/prd-reader.js +308 -0
  302. package/dist/prd/prd-reader.js.map +1 -0
  303. package/dist/prd/prd-storage.d.ts +232 -0
  304. package/dist/prd/prd-storage.d.ts.map +1 -0
  305. package/dist/prd/prd-storage.js +129 -0
  306. package/dist/prd/prd-storage.js.map +1 -0
  307. package/dist/repairers/test-auto-repairer.d.ts +61 -0
  308. package/dist/repairers/test-auto-repairer.d.ts.map +1 -0
  309. package/dist/repairers/test-auto-repairer.js +213 -0
  310. package/dist/repairers/test-auto-repairer.js.map +1 -0
  311. package/dist/reporters/comparison-report-generator.d.ts +58 -0
  312. package/dist/reporters/comparison-report-generator.d.ts.map +1 -0
  313. package/dist/reporters/comparison-report-generator.js +369 -0
  314. package/dist/reporters/comparison-report-generator.js.map +1 -0
  315. package/dist/reporters/gherkin-formatter.d.ts +34 -0
  316. package/dist/reporters/gherkin-formatter.d.ts.map +1 -0
  317. package/dist/reporters/gherkin-formatter.js +231 -0
  318. package/dist/reporters/gherkin-formatter.js.map +1 -0
  319. package/dist/reporters/html-report-generator.d.ts +174 -0
  320. package/dist/reporters/html-report-generator.d.ts.map +1 -0
  321. package/dist/reporters/html-report-generator.js +194 -0
  322. package/dist/reporters/html-report-generator.js.map +1 -0
  323. package/dist/reporters/report-charts.d.ts +23 -0
  324. package/dist/reporters/report-charts.d.ts.map +1 -0
  325. package/dist/reporters/report-charts.js +182 -0
  326. package/dist/reporters/report-charts.js.map +1 -0
  327. package/dist/reporters/report-sections.d.ts +34 -0
  328. package/dist/reporters/report-sections.d.ts.map +1 -0
  329. package/dist/reporters/report-sections.js +481 -0
  330. package/dist/reporters/report-sections.js.map +1 -0
  331. package/dist/reporters/report-styles.d.ts +12 -0
  332. package/dist/reporters/report-styles.d.ts.map +1 -0
  333. package/dist/reporters/report-styles.js +412 -0
  334. package/dist/reporters/report-styles.js.map +1 -0
  335. package/dist/reporters/report-test-details.d.ts +56 -0
  336. package/dist/reporters/report-test-details.d.ts.map +1 -0
  337. package/dist/reporters/report-test-details.js +328 -0
  338. package/dist/reporters/report-test-details.js.map +1 -0
  339. package/dist/reporters/report-utils.d.ts +40 -0
  340. package/dist/reporters/report-utils.d.ts.map +1 -0
  341. package/dist/reporters/report-utils.js +163 -0
  342. package/dist/reporters/report-utils.js.map +1 -0
  343. package/dist/types/ai-config.d.ts +63 -0
  344. package/dist/types/ai-config.d.ts.map +1 -0
  345. package/dist/types/ai-config.js +79 -0
  346. package/dist/types/ai-config.js.map +1 -0
  347. package/dist/types/business-rules.d.ts +235 -0
  348. package/dist/types/business-rules.d.ts.map +1 -0
  349. package/dist/types/business-rules.js +6 -0
  350. package/dist/types/business-rules.js.map +1 -0
  351. package/dist/types/config.d.ts +106 -0
  352. package/dist/types/config.d.ts.map +1 -0
  353. package/dist/types/config.js +6 -0
  354. package/dist/types/config.js.map +1 -0
  355. package/dist/types/core.d.ts +72 -0
  356. package/dist/types/core.d.ts.map +1 -0
  357. package/dist/types/core.js +6 -0
  358. package/dist/types/core.js.map +1 -0
  359. package/dist/types/index.d.ts +17 -0
  360. package/dist/types/index.d.ts.map +1 -0
  361. package/dist/types/index.js +10 -0
  362. package/dist/types/index.js.map +1 -0
  363. package/dist/types/openapi.d.ts +139 -0
  364. package/dist/types/openapi.d.ts.map +1 -0
  365. package/dist/types/openapi.js +6 -0
  366. package/dist/types/openapi.js.map +1 -0
  367. package/dist/types/pact.d.ts +101 -0
  368. package/dist/types/pact.d.ts.map +1 -0
  369. package/dist/types/pact.js +6 -0
  370. package/dist/types/pact.js.map +1 -0
  371. package/dist/types/reporting.d.ts +93 -0
  372. package/dist/types/reporting.d.ts.map +1 -0
  373. package/dist/types/reporting.js +6 -0
  374. package/dist/types/reporting.js.map +1 -0
  375. package/dist/types/test-case.d.ts +233 -0
  376. package/dist/types/test-case.d.ts.map +1 -0
  377. package/dist/types/test-case.js +6 -0
  378. package/dist/types/test-case.js.map +1 -0
  379. package/dist/types/test-execution.d.ts +80 -0
  380. package/dist/types/test-execution.d.ts.map +1 -0
  381. package/dist/types/test-execution.js +6 -0
  382. package/dist/types/test-execution.js.map +1 -0
  383. package/dist/utils/auth-generator.d.ts +30 -0
  384. package/dist/utils/auth-generator.d.ts.map +1 -0
  385. package/dist/utils/auth-generator.js +68 -0
  386. package/dist/utils/auth-generator.js.map +1 -0
  387. package/dist/utils/config.d.ts +181 -0
  388. package/dist/utils/config.d.ts.map +1 -0
  389. package/dist/utils/config.js +141 -0
  390. package/dist/utils/config.js.map +1 -0
  391. package/dist/utils/coverage-calculator.d.ts +81 -0
  392. package/dist/utils/coverage-calculator.d.ts.map +1 -0
  393. package/dist/utils/coverage-calculator.js +134 -0
  394. package/dist/utils/coverage-calculator.js.map +1 -0
  395. package/dist/utils/data-loader.d.ts +52 -0
  396. package/dist/utils/data-loader.d.ts.map +1 -0
  397. package/dist/utils/data-loader.js +192 -0
  398. package/dist/utils/data-loader.js.map +1 -0
  399. package/dist/utils/errors.d.ts +167 -0
  400. package/dist/utils/errors.d.ts.map +1 -0
  401. package/dist/utils/errors.js +257 -0
  402. package/dist/utils/errors.js.map +1 -0
  403. package/dist/utils/logger.d.ts +220 -0
  404. package/dist/utils/logger.d.ts.map +1 -0
  405. package/dist/utils/logger.js +325 -0
  406. package/dist/utils/logger.js.map +1 -0
  407. package/dist/utils/openapi-discovery.d.ts +31 -0
  408. package/dist/utils/openapi-discovery.d.ts.map +1 -0
  409. package/dist/utils/openapi-discovery.js +322 -0
  410. package/dist/utils/openapi-discovery.js.map +1 -0
  411. package/dist/utils/path-resolver.d.ts +101 -0
  412. package/dist/utils/path-resolver.d.ts.map +1 -0
  413. package/dist/utils/path-resolver.js +167 -0
  414. package/dist/utils/path-resolver.js.map +1 -0
  415. package/dist/utils/resilience.d.ts +181 -0
  416. package/dist/utils/resilience.d.ts.map +1 -0
  417. package/dist/utils/resilience.js +269 -0
  418. package/dist/utils/resilience.js.map +1 -0
  419. package/dist/validators/openapi-validator.d.ts +198 -0
  420. package/dist/validators/openapi-validator.d.ts.map +1 -0
  421. package/dist/validators/openapi-validator.js +349 -0
  422. package/dist/validators/openapi-validator.js.map +1 -0
  423. package/dist/validators/response-matcher.d.ts +84 -0
  424. package/dist/validators/response-matcher.d.ts.map +1 -0
  425. package/dist/validators/response-matcher.js +234 -0
  426. package/dist/validators/response-matcher.js.map +1 -0
  427. package/dist/validators/schema-validator.d.ts +174 -0
  428. package/dist/validators/schema-validator.d.ts.map +1 -0
  429. package/dist/validators/schema-validator.js +340 -0
  430. package/dist/validators/schema-validator.js.map +1 -0
  431. package/package.json +76 -0
@@ -0,0 +1,327 @@
1
+ /**
2
+ * Edge Case Test Generator (Boundary Value Analysis)
3
+ *
4
+ * Generates test cases that explore edge cases and boundary values based on
5
+ * schema validations. Uses Boundary Value Analysis (BVA) technique to test
6
+ * values at the limits of acceptable ranges.
7
+ *
8
+ * @module generators/edge-case-generator
9
+ */
10
+ import { faker } from '@faker-js/faker';
11
+ import { generateDataFromSchemaSync, aiLevelToMode } from './data-generator.js';
12
+ import { generateAuthHeaders } from '../utils/auth-generator.js';
13
+ import { analyzeBoundaries } from './edge-cases/boundary-analyzer.js';
14
+ /**
15
+ * Generates edge case test cases for all endpoints
16
+ *
17
+ * Edge cases include:
18
+ * - Boundary values (min/max for numbers, minLength/maxLength for strings)
19
+ * - Empty values where allowed
20
+ * - Each enum value tested separately
21
+ * - Combinations of optional fields
22
+ *
23
+ * @param endpoints - Array of parsed endpoints
24
+ * @param options - Generation options
25
+ * @returns Array of edge case test cases
26
+ *
27
+ * @example
28
+ * ```typescript
29
+ * const spec = await parseOpenAPISpec('./api.yml');
30
+ * const endpoints = extractEndpoints(spec);
31
+ * const edgeCases = generateEdgeCaseTests(endpoints);
32
+ * console.log(`Generated ${edgeCases.length} edge case tests`);
33
+ * ```
34
+ */
35
+ export function generateEdgeCaseTests(endpoints, options = {}) {
36
+ const { seed, maxOptionalCombinations = 10 } = options;
37
+ if (seed !== undefined) {
38
+ faker.seed(seed);
39
+ }
40
+ const testCases = [];
41
+ for (const endpoint of endpoints) {
42
+ const cases = generateEdgeCasesForEndpoint(endpoint, maxOptionalCombinations, options);
43
+ testCases.push(...cases);
44
+ }
45
+ return testCases;
46
+ }
47
+ /**
48
+ * Generates edge case tests for a single endpoint
49
+ *
50
+ * @param endpoint - Parsed endpoint
51
+ * @param maxOptionalCombinations - Max combinations to generate
52
+ * @param options - Edge case options (for real data)
53
+ * @returns Array of edge case test cases
54
+ * @internal
55
+ */
56
+ function generateEdgeCasesForEndpoint(endpoint, maxOptionalCombinations, options = {}) {
57
+ const testCases = [];
58
+ if (!endpoint.requestBody) {
59
+ // No request body, no edge cases to generate
60
+ return testCases;
61
+ }
62
+ const schema = endpoint.requestBody;
63
+ const successStatus = getSuccessStatusCode(endpoint);
64
+ if (!successStatus) {
65
+ return testCases;
66
+ }
67
+ // 1. Generate boundary value tests for each field
68
+ const boundaryTests = generateBoundaryValueTests(endpoint, schema, successStatus, options);
69
+ testCases.push(...boundaryTests);
70
+ // 2. Generate enum value tests
71
+ const enumTests = generateEnumValueTests(endpoint, schema, successStatus, options);
72
+ testCases.push(...enumTests);
73
+ // 3. Generate optional field combination tests
74
+ const optionalTests = generateOptionalFieldTests(endpoint, schema, successStatus, maxOptionalCombinations, options);
75
+ testCases.push(...optionalTests);
76
+ return testCases;
77
+ }
78
+ /**
79
+ * Generates tests for boundary values (min/max)
80
+ *
81
+ * @param endpoint - Parsed endpoint
82
+ * @param schema - Request body schema
83
+ * @param successStatus - Expected success status code
84
+ * @param options - Edge case options (for real data)
85
+ * @returns Boundary value test cases
86
+ * @internal
87
+ */
88
+ function generateBoundaryValueTests(endpoint, schema, successStatus, options = {}) {
89
+ const testCases = [];
90
+ if (schema.type !== 'object' || !schema.properties) {
91
+ return testCases;
92
+ }
93
+ // For each property, generate boundary tests
94
+ for (const [propName, propSchema] of Object.entries(schema.properties)) {
95
+ if ('$ref' in propSchema)
96
+ continue;
97
+ const prop = propSchema;
98
+ const boundaries = analyzeBoundaries(prop, options);
99
+ for (const boundary of boundaries) {
100
+ // Create base body with required fields + REAL DATA
101
+ const body = generateBaseBody(schema, false, options);
102
+ // Set this field to boundary value
103
+ body[propName] = boundary.value;
104
+ const testCase = {
105
+ id: `edge-${endpoint.method.toLowerCase()}-${endpoint.path.replace(/[^a-zA-Z0-9]/g, '-')}-${propName}-${boundary.description.replace(/\s+/g, '-')}`,
106
+ name: `${endpoint.method} ${endpoint.path} - ${propName} ${boundary.description}`,
107
+ description: `Test ${propName} at ${boundary.description}`,
108
+ category: 'edge-case',
109
+ method: endpoint.method,
110
+ path: endpoint.path,
111
+ pathParams: generatePathParams(endpoint),
112
+ headers: generateAuthHeaders(endpoint.securitySchemes || []),
113
+ body,
114
+ contentType: endpoint.requestContentType,
115
+ expectedStatus: successStatus,
116
+ expectedSchema: endpoint.responses[successStatus],
117
+ validateSchema: true,
118
+ requiresAuth: endpoint.requiresAuth,
119
+ };
120
+ testCases.push(testCase);
121
+ }
122
+ }
123
+ return testCases;
124
+ }
125
+ // analyzeBoundaries is now in edge-cases/boundary-analyzer.ts
126
+ /**
127
+ * Generates tests for each enum value
128
+ *
129
+ * @param endpoint - Parsed endpoint
130
+ * @param schema - Request body schema
131
+ * @param successStatus - Expected success status
132
+ * @param options - Edge case options (for real data)
133
+ * @returns Enum value test cases
134
+ * @internal
135
+ */
136
+ function generateEnumValueTests(endpoint, schema, successStatus, options = {}) {
137
+ const testCases = [];
138
+ if (schema.type !== 'object' || !schema.properties) {
139
+ return testCases;
140
+ }
141
+ for (const [propName, propSchema] of Object.entries(schema.properties)) {
142
+ if ('$ref' in propSchema)
143
+ continue;
144
+ const prop = propSchema;
145
+ if (prop.enum && prop.enum.length > 0) {
146
+ // Test each enum value
147
+ for (const enumValue of prop.enum) {
148
+ const body = generateBaseBody(schema, false, options);
149
+ body[propName] = enumValue;
150
+ const testCase = {
151
+ id: `edge-${endpoint.method.toLowerCase()}-${endpoint.path.replace(/[^a-zA-Z0-9]/g, '-')}-${propName}-enum-${String(enumValue).replace(/\s+/g, '-')}`,
152
+ name: `${endpoint.method} ${endpoint.path} - ${propName} = ${String(enumValue)}`,
153
+ description: `Test ${propName} with enum value: ${String(enumValue)}`,
154
+ category: 'edge-case',
155
+ method: endpoint.method,
156
+ path: endpoint.path,
157
+ pathParams: generatePathParams(endpoint),
158
+ headers: generateAuthHeaders(endpoint.securitySchemes || []),
159
+ body,
160
+ contentType: endpoint.requestContentType,
161
+ expectedStatus: successStatus,
162
+ expectedSchema: endpoint.responses[successStatus],
163
+ validateSchema: true,
164
+ requiresAuth: endpoint.requiresAuth,
165
+ };
166
+ testCases.push(testCase);
167
+ }
168
+ }
169
+ }
170
+ return testCases;
171
+ }
172
+ /**
173
+ * Generates tests for different combinations of optional fields
174
+ *
175
+ * @param endpoint - Parsed endpoint
176
+ * @param schema - Request body schema
177
+ * @param successStatus - Expected success status
178
+ * @param maxCombinations - Maximum combinations to generate
179
+ * @param options - Edge case options (for real data)
180
+ * @returns Optional field combination test cases
181
+ * @internal
182
+ */
183
+ function generateOptionalFieldTests(endpoint, schema, successStatus, maxCombinations, options = {}) {
184
+ const testCases = [];
185
+ if (schema.type !== 'object' || !schema.properties) {
186
+ return testCases;
187
+ }
188
+ const required = new Set(schema.required || []);
189
+ const optional = Object.keys(schema.properties).filter(name => !required.has(name));
190
+ if (optional.length === 0) {
191
+ // No optional fields
192
+ return testCases;
193
+ }
194
+ // Test 1: Only required fields
195
+ const onlyRequiredBody = generateBaseBody(schema, false, options);
196
+ testCases.push({
197
+ id: `edge-${endpoint.method.toLowerCase()}-${endpoint.path.replace(/[^a-zA-Z0-9]/g, '-')}-only-required`,
198
+ name: `${endpoint.method} ${endpoint.path} - Only required fields`,
199
+ description: 'Request with only required fields (no optional)',
200
+ category: 'edge-case',
201
+ method: endpoint.method,
202
+ path: endpoint.path,
203
+ pathParams: generatePathParams(endpoint),
204
+ headers: generateAuthHeaders(endpoint.securitySchemes || []),
205
+ body: onlyRequiredBody,
206
+ contentType: endpoint.requestContentType,
207
+ expectedStatus: successStatus,
208
+ expectedSchema: endpoint.responses[successStatus],
209
+ validateSchema: true,
210
+ requiresAuth: endpoint.requiresAuth,
211
+ });
212
+ // Test 2: All fields (required + optional)
213
+ const allFieldsBody = generateBaseBody(schema, true, options);
214
+ testCases.push({
215
+ id: `edge-${endpoint.method.toLowerCase()}-${endpoint.path.replace(/[^a-zA-Z0-9]/g, '-')}-all-fields`,
216
+ name: `${endpoint.method} ${endpoint.path} - All fields`,
217
+ description: 'Request with all fields (required + optional)',
218
+ category: 'edge-case',
219
+ method: endpoint.method,
220
+ path: endpoint.path,
221
+ pathParams: generatePathParams(endpoint),
222
+ headers: generateAuthHeaders(endpoint.securitySchemes || []),
223
+ body: allFieldsBody,
224
+ contentType: endpoint.requestContentType,
225
+ expectedStatus: successStatus,
226
+ expectedSchema: endpoint.responses[successStatus],
227
+ validateSchema: true,
228
+ requiresAuth: endpoint.requiresAuth,
229
+ });
230
+ // Test 3: Individual optional fields (if not too many)
231
+ if (optional.length <= maxCombinations) {
232
+ for (const optField of optional) {
233
+ const body = generateBaseBody(schema, false, options);
234
+ const propSchema = schema.properties[optField];
235
+ if (!('$ref' in propSchema)) {
236
+ body[optField] = generateDataFromSchemaSync(propSchema, {
237
+ realData: options.realData,
238
+ useExamples: options.useExamples
239
+ });
240
+ }
241
+ testCases.push({
242
+ id: `edge-${endpoint.method.toLowerCase()}-${endpoint.path.replace(/[^a-zA-Z0-9]/g, '-')}-with-${optField}`,
243
+ name: `${endpoint.method} ${endpoint.path} - With optional ${optField}`,
244
+ description: `Request with required fields + optional field: ${optField}`,
245
+ category: 'edge-case',
246
+ method: endpoint.method,
247
+ path: endpoint.path,
248
+ pathParams: generatePathParams(endpoint),
249
+ headers: generateAuthHeaders(endpoint.securitySchemes || []),
250
+ body,
251
+ contentType: endpoint.requestContentType,
252
+ expectedStatus: successStatus,
253
+ expectedSchema: endpoint.responses[successStatus],
254
+ validateSchema: true,
255
+ requiresAuth: endpoint.requiresAuth,
256
+ });
257
+ }
258
+ }
259
+ return testCases;
260
+ }
261
+ /**
262
+ * Generates base body with required fields
263
+ *
264
+ * @param schema - Object schema
265
+ * @param includeOptional - Whether to include optional fields
266
+ * @param options - Edge case options (for real data)
267
+ * @returns Generated body object
268
+ * @internal
269
+ */
270
+ function generateBaseBody(schema, includeOptional = false, options = {}) {
271
+ const { aiLevel, aiMode, apiContext } = options;
272
+ const effectiveAiMode = aiLevelToMode(aiLevel, aiMode);
273
+ // Note: Using sync version - for AI modes, this will use faker fallback
274
+ // To fully support AI in edge cases, the entire edge-case-generator would need to be async
275
+ const result = generateDataFromSchemaSync(schema, {
276
+ includeOptional,
277
+ realData: options.realData,
278
+ useExamples: options.useExamples,
279
+ aiMode: effectiveAiMode || 'faker', // Force faker for sync compatibility
280
+ apiContext
281
+ });
282
+ // Ensure we always return an object
283
+ if (!result || typeof result !== 'object' || Array.isArray(result)) {
284
+ return {};
285
+ }
286
+ return result;
287
+ }
288
+ /**
289
+ * Generates path parameters for an endpoint
290
+ *
291
+ * @param endpoint - Parsed endpoint
292
+ * @returns Path parameters object
293
+ * @internal
294
+ */
295
+ function generatePathParams(endpoint) {
296
+ const params = {};
297
+ for (const param of endpoint.pathParams) {
298
+ if (param.schema && !('$ref' in param.schema)) {
299
+ const schema = param.schema;
300
+ if (schema.type === 'integer') {
301
+ params[param.name] = 1;
302
+ }
303
+ else if (schema.format === 'uuid') {
304
+ params[param.name] = faker.string.uuid();
305
+ }
306
+ else {
307
+ params[param.name] = faker.string.alphanumeric(10);
308
+ }
309
+ }
310
+ else {
311
+ params[param.name] = faker.string.uuid();
312
+ }
313
+ }
314
+ return params;
315
+ }
316
+ /**
317
+ * Gets expected success status code for endpoint
318
+ *
319
+ * @param endpoint - Parsed endpoint
320
+ * @returns Success status code or undefined
321
+ * @internal
322
+ */
323
+ function getSuccessStatusCode(endpoint) {
324
+ const codes = Object.keys(endpoint.responses).map(Number);
325
+ return codes.find(code => code >= 200 && code < 300);
326
+ }
327
+ //# sourceMappingURL=edge-case-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edge-case-generator.js","sourceRoot":"","sources":["../../src/generators/edge-case-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAGxC,OAAO,EAAE,0BAA0B,EAAE,aAAa,EAAyB,MAAM,qBAAqB,CAAC;AACvG,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEtE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,qBAAqB,CACnC,SAA2B,EAC3B,UAA2B,EAAE;IAE7B,MAAM,EAAE,IAAI,EAAE,uBAAuB,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;IAEvD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IAED,MAAM,SAAS,GAAe,EAAE,CAAC;IAEjC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,4BAA4B,CAAC,QAAQ,EAAE,uBAAuB,EAAE,OAAO,CAAC,CAAC;QACvF,SAAS,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AA0BD;;;;;;;;GAQG;AACH,SAAS,4BAA4B,CACnC,QAAwB,EACxB,uBAA+B,EAC/B,UAA2B,EAAE;IAE7B,MAAM,SAAS,GAAe,EAAE,CAAC;IAEjC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;QAC1B,6CAA6C;QAC7C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC;IACpC,MAAM,aAAa,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAErD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,kDAAkD;IAClD,MAAM,aAAa,GAAG,0BAA0B,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;IAC3F,SAAS,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;IAEjC,+BAA+B;IAC/B,MAAM,SAAS,GAAG,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;IACnF,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;IAE7B,+CAA+C;IAC/C,MAAM,aAAa,GAAG,0BAA0B,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,uBAAuB,EAAE,OAAO,CAAC,CAAC;IACpH,SAAS,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;IAEjC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,0BAA0B,CACjC,QAAwB,EACxB,MAA8B,EAC9B,aAAqB,EACrB,UAA2B,EAAE;IAE7B,MAAM,SAAS,GAAe,EAAE,CAAC;IAEjC,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACnD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,6CAA6C;IAC7C,KAAK,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;QACvE,IAAI,MAAM,IAAI,UAAU;YAAE,SAAS;QAEnC,MAAM,IAAI,GAAG,UAAoC,CAAC;QAClD,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAEpD,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;YAClC,oDAAoD;YACpD,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;YAEtD,mCAAmC;YACnC,IAAI,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;YAEhC,MAAM,QAAQ,GAAa;gBACzB,EAAE,EAAE,QAAQ,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,IAAI,QAAQ,IAAI,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;gBACnJ,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,IAAI,MAAM,QAAQ,IAAI,QAAQ,CAAC,WAAW,EAAE;gBACjF,WAAW,EAAE,QAAQ,QAAQ,OAAO,QAAQ,CAAC,WAAW,EAAE;gBAC1D,QAAQ,EAAE,WAAW;gBACrB,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,UAAU,EAAE,kBAAkB,CAAC,QAAQ,CAAC;gBACxC,OAAO,EAAE,mBAAmB,CAAC,QAAQ,CAAC,eAAe,IAAI,EAAE,CAAC;gBAC5D,IAAI;gBACJ,WAAW,EAAE,QAAQ,CAAC,kBAAkB;gBACxC,cAAc,EAAE,aAAa;gBAC7B,cAAc,EAAE,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC;gBACjD,cAAc,EAAE,IAAI;gBACpB,YAAY,EAAE,QAAQ,CAAC,YAAY;aACpC,CAAC;YAEF,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,8DAA8D;AAE9D;;;;;;;;;GASG;AACH,SAAS,sBAAsB,CAC7B,QAAwB,EACxB,MAA8B,EAC9B,aAAqB,EACrB,UAA2B,EAAE;IAE7B,MAAM,SAAS,GAAe,EAAE,CAAC;IAEjC,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACnD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;QACvE,IAAI,MAAM,IAAI,UAAU;YAAE,SAAS;QAEnC,MAAM,IAAI,GAAG,UAAoC,CAAC;QAElD,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtC,uBAAuB;YACvB,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBAClC,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;gBACtD,IAAI,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC;gBAE3B,MAAM,QAAQ,GAAa;oBACzB,EAAE,EAAE,QAAQ,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,IAAI,QAAQ,SAAS,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;oBACrJ,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,IAAI,MAAM,QAAQ,MAAM,MAAM,CAAC,SAAS,CAAC,EAAE;oBAChF,WAAW,EAAE,QAAQ,QAAQ,qBAAqB,MAAM,CAAC,SAAS,CAAC,EAAE;oBACrE,QAAQ,EAAE,WAAW;oBACrB,MAAM,EAAE,QAAQ,CAAC,MAAM;oBACvB,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,UAAU,EAAE,kBAAkB,CAAC,QAAQ,CAAC;oBACxC,OAAO,EAAE,mBAAmB,CAAC,QAAQ,CAAC,eAAe,IAAI,EAAE,CAAC;oBAC5D,IAAI;oBACJ,WAAW,EAAE,QAAQ,CAAC,kBAAkB;oBACxC,cAAc,EAAE,aAAa;oBAC7B,cAAc,EAAE,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC;oBACjD,cAAc,EAAE,IAAI;oBACpB,YAAY,EAAE,QAAQ,CAAC,YAAY;iBACpC,CAAC;gBAEF,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,0BAA0B,CACjC,QAAwB,EACxB,MAA8B,EAC9B,aAAqB,EACrB,eAAuB,EACvB,UAA2B,EAAE;IAE7B,MAAM,SAAS,GAAe,EAAE,CAAC;IAEjC,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACnD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAEpF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,qBAAqB;QACrB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,+BAA+B;IAC/B,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAClE,SAAS,CAAC,IAAI,CAAC;QACb,EAAE,EAAE,QAAQ,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,gBAAgB;QACxG,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,IAAI,yBAAyB;QAClE,WAAW,EAAE,iDAAiD;QAC9D,QAAQ,EAAE,WAAW;QACrB,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,UAAU,EAAE,kBAAkB,CAAC,QAAQ,CAAC;QACxC,OAAO,EAAE,mBAAmB,CAAC,QAAQ,CAAC,eAAe,IAAI,EAAE,CAAC;QAC5D,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,QAAQ,CAAC,kBAAkB;QACxC,cAAc,EAAE,aAAa;QAC7B,cAAc,EAAE,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC;QACjD,cAAc,EAAE,IAAI;QACpB,YAAY,EAAE,QAAQ,CAAC,YAAY;KACpC,CAAC,CAAC;IAEH,2CAA2C;IAC3C,MAAM,aAAa,GAAG,gBAAgB,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9D,SAAS,CAAC,IAAI,CAAC;QACb,EAAE,EAAE,QAAQ,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,aAAa;QACrG,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,IAAI,eAAe;QACxD,WAAW,EAAE,+CAA+C;QAC5D,QAAQ,EAAE,WAAW;QACrB,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,UAAU,EAAE,kBAAkB,CAAC,QAAQ,CAAC;QACxC,OAAO,EAAE,mBAAmB,CAAC,QAAQ,CAAC,eAAe,IAAI,EAAE,CAAC;QAC5D,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,QAAQ,CAAC,kBAAkB;QACxC,cAAc,EAAE,aAAa;QAC7B,cAAc,EAAE,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC;QACjD,cAAc,EAAE,IAAI;QACpB,YAAY,EAAE,QAAQ,CAAC,YAAY;KACpC,CAAC,CAAC;IAEH,uDAAuD;IACvD,IAAI,QAAQ,CAAC,MAAM,IAAI,eAAe,EAAE,CAAC;QACvC,KAAK,MAAM,QAAQ,IAAI,QAAQ,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;YACtD,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC/C,IAAI,CAAC,CAAC,MAAM,IAAI,UAAU,CAAC,EAAE,CAAC;gBAC5B,IAAI,CAAC,QAAQ,CAAC,GAAG,0BAA0B,CAAC,UAAoC,EAAE;oBAChF,QAAQ,EAAE,OAAO,CAAC,QAAQ;oBAC1B,WAAW,EAAE,OAAO,CAAC,WAAW;iBACjC,CAAC,CAAC;YACL,CAAC;YAED,SAAS,CAAC,IAAI,CAAC;gBACb,EAAE,EAAE,QAAQ,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,SAAS,QAAQ,EAAE;gBAC3G,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,IAAI,oBAAoB,QAAQ,EAAE;gBACvE,WAAW,EAAE,kDAAkD,QAAQ,EAAE;gBACzE,QAAQ,EAAE,WAAW;gBACrB,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,UAAU,EAAE,kBAAkB,CAAC,QAAQ,CAAC;gBACxC,OAAO,EAAE,mBAAmB,CAAC,QAAQ,CAAC,eAAe,IAAI,EAAE,CAAC;gBAC5D,IAAI;gBACJ,WAAW,EAAE,QAAQ,CAAC,kBAAkB;gBACxC,cAAc,EAAE,aAAa;gBAC7B,cAAc,EAAE,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC;gBACjD,cAAc,EAAE,IAAI;gBACpB,YAAY,EAAE,QAAQ,CAAC,YAAY;aACpC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,gBAAgB,CACvB,MAA8B,EAC9B,kBAA2B,KAAK,EAChC,UAA2B,EAAE;IAE7B,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IAChD,MAAM,eAAe,GAAG,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAEvD,wEAAwE;IACxE,2FAA2F;IAC3F,MAAM,MAAM,GAAG,0BAA0B,CAAC,MAAM,EAAE;QAChD,eAAe;QACf,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,MAAM,EAAE,eAAe,IAAI,OAAO,EAAG,qCAAqC;QAC1E,UAAU;KACX,CAAC,CAAC;IAEH,oCAAoC;IACpC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACnE,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,MAAiC,CAAC;AAC3C,CAAC;AAED;;;;;;GAMG;AACH,SAAS,kBAAkB,CAAC,QAAwB;IAClD,MAAM,MAAM,GAAoC,EAAE,CAAC;IAEnD,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;QACxC,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9C,MAAM,MAAM,GAAG,KAAK,CAAC,MAAgC,CAAC;YACtD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC9B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACzB,CAAC;iBAAM,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBACpC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YAC3C,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,SAAS,oBAAoB,CAAC,QAAwB;IACpD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1D,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC;AACvD,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Boundary Value Analyzer
3
+ *
4
+ * Analyzes OpenAPI schema properties to identify boundary values for testing.
5
+ * Implements Boundary Value Analysis (BVA) technique.
6
+ *
7
+ * @module generators/edge-cases/boundary-analyzer
8
+ */
9
+ import type { OpenAPIV3 } from 'openapi-types';
10
+ import type { BoundaryValue } from '../../types/index.js';
11
+ /**
12
+ * Options for boundary analysis
13
+ */
14
+ export interface BoundaryAnalysisOptions {
15
+ realData?: Record<string, unknown>;
16
+ useExamples?: boolean;
17
+ }
18
+ /**
19
+ * Analyzes a schema property to identify boundary values
20
+ *
21
+ * @param schema - Property schema
22
+ * @param options - Analysis options
23
+ * @returns Array of boundary values to test
24
+ */
25
+ export declare function analyzeBoundaries(schema: OpenAPIV3.SchemaObject, options?: BoundaryAnalysisOptions): BoundaryValue[];
26
+ //# sourceMappingURL=boundary-analyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boundary-analyzer.d.ts","sourceRoot":"","sources":["../../../src/generators/edge-cases/boundary-analyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAG1D;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,SAAS,CAAC,YAAY,EAC9B,OAAO,GAAE,uBAA4B,GACpC,aAAa,EAAE,CAiFjB"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Boundary Value Analyzer
3
+ *
4
+ * Analyzes OpenAPI schema properties to identify boundary values for testing.
5
+ * Implements Boundary Value Analysis (BVA) technique.
6
+ *
7
+ * @module generators/edge-cases/boundary-analyzer
8
+ */
9
+ import { generateDataFromSchemaSync } from '../data-generator.js';
10
+ /**
11
+ * Analyzes a schema property to identify boundary values
12
+ *
13
+ * @param schema - Property schema
14
+ * @param options - Analysis options
15
+ * @returns Array of boundary values to test
16
+ */
17
+ export function analyzeBoundaries(schema, options = {}) {
18
+ const boundaries = [];
19
+ switch (schema.type) {
20
+ case 'string':
21
+ if (schema.minLength !== undefined) {
22
+ boundaries.push({
23
+ type: 'valid',
24
+ value: 'x'.repeat(schema.minLength),
25
+ description: `minLength (${schema.minLength} chars)`,
26
+ });
27
+ }
28
+ if (schema.maxLength !== undefined) {
29
+ boundaries.push({
30
+ type: 'valid',
31
+ value: 'x'.repeat(schema.maxLength),
32
+ description: `maxLength (${schema.maxLength} chars)`,
33
+ });
34
+ }
35
+ break;
36
+ case 'integer':
37
+ case 'number':
38
+ if (schema.minimum !== undefined) {
39
+ boundaries.push({
40
+ type: 'valid',
41
+ value: schema.exclusiveMinimum ? schema.minimum + 1 : schema.minimum,
42
+ description: `minimum (${schema.minimum})`,
43
+ });
44
+ }
45
+ if (schema.maximum !== undefined) {
46
+ boundaries.push({
47
+ type: 'valid',
48
+ value: schema.exclusiveMaximum ? schema.maximum - 1 : schema.maximum,
49
+ description: `maximum (${schema.maximum})`,
50
+ });
51
+ }
52
+ if (schema.minimum === undefined && schema.maximum === undefined) {
53
+ boundaries.push({
54
+ type: 'valid',
55
+ value: 0,
56
+ description: 'zero',
57
+ });
58
+ }
59
+ break;
60
+ case 'array':
61
+ if ('items' in schema && schema.items) {
62
+ if (schema.minItems !== undefined) {
63
+ const items = [];
64
+ for (let i = 0; i < schema.minItems; i++) {
65
+ items.push(generateDataFromSchemaSync(schema.items, {
66
+ realData: options.realData,
67
+ useExamples: options.useExamples
68
+ }));
69
+ }
70
+ boundaries.push({
71
+ type: 'valid',
72
+ value: items,
73
+ description: `minItems (${schema.minItems})`,
74
+ });
75
+ }
76
+ if (schema.maxItems !== undefined) {
77
+ const items = [];
78
+ for (let i = 0; i < schema.maxItems; i++) {
79
+ items.push(generateDataFromSchemaSync(schema.items, {
80
+ realData: options.realData,
81
+ useExamples: options.useExamples
82
+ }));
83
+ }
84
+ boundaries.push({
85
+ type: 'valid',
86
+ value: items,
87
+ description: `maxItems (${schema.maxItems})`,
88
+ });
89
+ }
90
+ }
91
+ break;
92
+ }
93
+ return boundaries;
94
+ }
95
+ //# sourceMappingURL=boundary-analyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boundary-analyzer.js","sourceRoot":"","sources":["../../../src/generators/edge-cases/boundary-analyzer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Error Case Test Generator - Facade
3
+ *
4
+ * Re-exports all error case generation functionality from the modular errors/ directory.
5
+ * Maintained for backward compatibility.
6
+ *
7
+ * @module generators/error-case-generator
8
+ * @see generators/errors/index.ts for the implementation
9
+ */
10
+ export { generateErrorCaseTests, type ErrorCaseOptions, type ErrorStrategy, BaseErrorStrategy, UnauthorizedErrorStrategy, ForbiddenErrorStrategy, HeuristicAuthErrorStrategy, BadRequestErrorStrategy, NotFoundErrorStrategy, ConflictErrorStrategy, UnprocessableEntityErrorStrategy, GenericErrorStrategy, ErrorStrategyFactory, } from './errors/index.js';
11
+ //# sourceMappingURL=error-case-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-case-generator.d.ts","sourceRoot":"","sources":["../../src/generators/error-case-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,sBAAsB,EACtB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,iBAAiB,EACjB,yBAAyB,EACzB,sBAAsB,EACtB,0BAA0B,EAC1B,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,EACrB,gCAAgC,EAChC,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Error Case Test Generator - Facade
3
+ *
4
+ * Re-exports all error case generation functionality from the modular errors/ directory.
5
+ * Maintained for backward compatibility.
6
+ *
7
+ * @module generators/error-case-generator
8
+ * @see generators/errors/index.ts for the implementation
9
+ */
10
+ export { generateErrorCaseTests, BaseErrorStrategy, UnauthorizedErrorStrategy, ForbiddenErrorStrategy, HeuristicAuthErrorStrategy, BadRequestErrorStrategy, NotFoundErrorStrategy, ConflictErrorStrategy, UnprocessableEntityErrorStrategy, GenericErrorStrategy, ErrorStrategyFactory, } from './errors/index.js';
11
+ //# sourceMappingURL=error-case-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-case-generator.js","sourceRoot":"","sources":["../../src/generators/error-case-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,sBAAsB,EAGtB,iBAAiB,EACjB,yBAAyB,EACzB,sBAAsB,EACtB,0BAA0B,EAC1B,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,EACrB,gCAAgC,EAChC,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Auth Error Strategies - 401 and 403 scenarios
3
+ *
4
+ * @module generators/errors/auth-error-strategy
5
+ */
6
+ import type { OpenAPIV3 } from 'openapi-types';
7
+ import type { TestCase, ParsedEndpoint } from '../../types/index.js';
8
+ import { BaseErrorStrategy, type ErrorCaseOptions } from './error-strategy.js';
9
+ /**
10
+ * Strategy for 401 Unauthorized tests
11
+ * Generates: no-auth and invalid-token scenarios
12
+ */
13
+ export declare class UnauthorizedErrorStrategy extends BaseErrorStrategy {
14
+ readonly statusCodes: number[];
15
+ isApplicable(endpoint: ParsedEndpoint, spec: OpenAPIV3.Document): boolean;
16
+ generate(endpoint: ParsedEndpoint, _spec: OpenAPIV3.Document, options: ErrorCaseOptions): TestCase[];
17
+ }
18
+ /**
19
+ * Strategy for 403 Forbidden tests
20
+ * Generates: valid auth but insufficient permissions
21
+ */
22
+ export declare class ForbiddenErrorStrategy extends BaseErrorStrategy {
23
+ readonly statusCodes: number[];
24
+ isApplicable(_endpoint: ParsedEndpoint, _spec: OpenAPIV3.Document): boolean;
25
+ generate(endpoint: ParsedEndpoint, _spec: OpenAPIV3.Document, options: ErrorCaseOptions): TestCase[];
26
+ }
27
+ /**
28
+ * Strategy for heuristic 401 tests (when spec doesn't define 401 explicitly)
29
+ * Used in the heuristic fallback path
30
+ */
31
+ export declare class HeuristicAuthErrorStrategy extends BaseErrorStrategy {
32
+ readonly statusCodes: number[];
33
+ isApplicable(endpoint: ParsedEndpoint, _spec: OpenAPIV3.Document): boolean;
34
+ generate(endpoint: ParsedEndpoint, spec: OpenAPIV3.Document, options: ErrorCaseOptions): TestCase[];
35
+ }
36
+ //# sourceMappingURL=auth-error-strategy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-error-strategy.d.ts","sourceRoot":"","sources":["../../../src/generators/errors/auth-error-strategy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAErE,OAAO,EAAE,iBAAiB,EAAE,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE/E;;;GAGG;AACH,qBAAa,yBAA0B,SAAQ,iBAAiB;IAC9D,QAAQ,CAAC,WAAW,WAAS;IAE7B,YAAY,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,CAAC,QAAQ,GAAG,OAAO;IAIzE,QAAQ,CAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,gBAAgB,GAAG,QAAQ,EAAE;CAsCrG;AAED;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,iBAAiB;IAC3D,QAAQ,CAAC,WAAW,WAAS;IAE7B,YAAY,CAAC,SAAS,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,CAAC,QAAQ,GAAG,OAAO;IAI3E,QAAQ,CAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,gBAAgB,GAAG,QAAQ,EAAE;CAoBrG;AAED;;;GAGG;AACH,qBAAa,0BAA2B,SAAQ,iBAAiB;IAC/D,QAAQ,CAAC,WAAW,WAAS;IAE7B,YAAY,CAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,CAAC,QAAQ,GAAG,OAAO;IAI1E,QAAQ,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,gBAAgB,GAAG,QAAQ,EAAE;CA2BpG"}