@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,70 @@
1
+ /**
2
+ * Business Rules Value Generators
3
+ *
4
+ * Registry of value generators for creating valid and invalid test data
5
+ * based on business rule validation types. Uses the Registry pattern.
6
+ *
7
+ * @module business-rules/value-generators
8
+ */
9
+ import type { BusinessRule } from '../types/index.js';
10
+ /**
11
+ * Type for valid value generators
12
+ */
13
+ type ValidValueGenerator = (validation: {
14
+ type: string;
15
+ value?: unknown;
16
+ format?: string;
17
+ regex?: string;
18
+ }, fieldName: string, allValidations: Array<{
19
+ type: string;
20
+ regex?: string;
21
+ }>) => unknown;
22
+ /**
23
+ * Map of validation types to valid value generators
24
+ */
25
+ export declare const validValueGenerators: Record<string, ValidValueGenerator>;
26
+ /**
27
+ * Type for invalid value generators
28
+ */
29
+ type InvalidValueGenerator = (validation: {
30
+ type: string;
31
+ value?: unknown;
32
+ regex?: string;
33
+ }, fieldName?: string) => unknown;
34
+ /**
35
+ * Map of validation types to invalid value generators
36
+ */
37
+ export declare const invalidValueGenerators: Record<string, InvalidValueGenerator>;
38
+ /**
39
+ * Applies valid values to data based on a business rule
40
+ *
41
+ * @param data - Base data object
42
+ * @param rule - Business rule
43
+ * @returns Data with valid rule values applied
44
+ */
45
+ export declare function applyValidRuleValues(data: unknown, rule: BusinessRule): unknown;
46
+ /**
47
+ * Generates an invalid value for testing based on a validation rule
48
+ *
49
+ * @param validation - Validation rule
50
+ * @param fieldName - Field name (for context)
51
+ * @returns Invalid value
52
+ */
53
+ export declare function generateInvalidValue(validation: {
54
+ type: string;
55
+ value?: unknown;
56
+ regex?: string;
57
+ }, fieldName?: string): unknown;
58
+ /**
59
+ * Generates a valid password that meets all validation requirements
60
+ *
61
+ * @param minLength - Minimum length
62
+ * @param validations - All validations for the password
63
+ * @returns Valid password string
64
+ */
65
+ export declare function generateValidPassword(minLength: number, validations: Array<{
66
+ type: string;
67
+ regex?: string;
68
+ }>): string;
69
+ export {};
70
+ //# sourceMappingURL=value-generators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"value-generators.d.ts","sourceRoot":"","sources":["../../src/business-rules/value-generators.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD;;GAEG;AACH,KAAK,mBAAmB,GAAG,CACzB,UAAU,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAC9E,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,KACpD,OAAO,CAAC;AAEb;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CA2CpE,CAAC;AAEF;;GAEG;AACH,KAAK,qBAAqB,GAAG,CAC3B,UAAU,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAC7D,SAAS,CAAC,EAAE,MAAM,KACf,OAAO,CAAC;AAEb;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAkCxE,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CAkB/E;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAC7D,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAGT;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GACnD,MAAM,CAqBR"}
@@ -0,0 +1,142 @@
1
+ /**
2
+ * Business Rules Value Generators
3
+ *
4
+ * Registry of value generators for creating valid and invalid test data
5
+ * based on business rule validation types. Uses the Registry pattern.
6
+ *
7
+ * @module business-rules/value-generators
8
+ */
9
+ import { faker } from '@faker-js/faker';
10
+ /**
11
+ * Map of validation types to valid value generators
12
+ */
13
+ export const validValueGenerators = {
14
+ minimum: (v) => typeof v.value === 'number' ? v.value + faker.number.int({ min: 0, max: 50 }) : undefined,
15
+ maximum: (v) => typeof v.value === 'number' ? v.value - faker.number.int({ min: 1, max: 10 }) : undefined,
16
+ minLength: (v, fieldName, allValidations) => {
17
+ if (typeof v.value !== 'number')
18
+ return undefined;
19
+ return fieldName === 'password'
20
+ ? generateValidPassword(v.value, allValidations)
21
+ : faker.string.alpha(v.value + 5);
22
+ },
23
+ maxLength: (v) => typeof v.value === 'number' ? faker.string.alpha(Math.floor(v.value / 2)) : undefined,
24
+ format: (v) => {
25
+ const formatGenerators = {
26
+ email: () => faker.internet.email(),
27
+ uuid: () => faker.string.uuid(),
28
+ date: () => faker.date.recent().toISOString().split('T')[0],
29
+ };
30
+ return v.format ? formatGenerators[v.format]?.() : undefined;
31
+ },
32
+ pattern: (v) => {
33
+ if (v.regex === '^[^\\s]+$')
34
+ return faker.internet.username().replace(/\s/g, '');
35
+ if (v.regex?.includes('[A-Z]'))
36
+ return faker.string.alpha({ length: 10, casing: 'mixed' });
37
+ return undefined;
38
+ },
39
+ unique: (_v, fieldName) => {
40
+ const timestamp = Date.now();
41
+ return fieldName === 'email'
42
+ ? `unique-${timestamp}-${faker.internet.email()}`
43
+ : `unique-${timestamp}-${faker.string.alphanumeric(8)}`;
44
+ },
45
+ enum: (v) => Array.isArray(v.value) && v.value.length > 0
46
+ ? faker.helpers.arrayElement(v.value)
47
+ : undefined,
48
+ };
49
+ /**
50
+ * Map of validation types to invalid value generators
51
+ */
52
+ export const invalidValueGenerators = {
53
+ minimum: (v) => typeof v.value === 'number'
54
+ ? v.value - faker.number.int({ min: 1, max: 10 })
55
+ : 0,
56
+ maximum: (v) => typeof v.value === 'number'
57
+ ? v.value + faker.number.int({ min: 1, max: 10 })
58
+ : 9999,
59
+ minLength: (v) => typeof v.value === 'number' && v.value > 0
60
+ ? faker.string.alpha(v.value - 1)
61
+ : '',
62
+ maxLength: (v) => typeof v.value === 'number'
63
+ ? faker.string.alpha(v.value + 10)
64
+ : faker.string.alpha(1000),
65
+ format: () => 'invalid-format-value',
66
+ pattern: (v) => {
67
+ if (v.regex === '^[^\\s]+$')
68
+ return 'has spaces in it';
69
+ if (v.regex?.includes('[A-Z]'))
70
+ return 'alllowercase';
71
+ if (v.regex?.includes('[0-9]'))
72
+ return 'nodigits';
73
+ return 'invalid';
74
+ },
75
+ unique: (_v, fieldName) => fieldName === 'email' ? 'existing@example.com' : 'duplicate-value',
76
+ enum: () => 'NOT_IN_ENUM',
77
+ };
78
+ /**
79
+ * Applies valid values to data based on a business rule
80
+ *
81
+ * @param data - Base data object
82
+ * @param rule - Business rule
83
+ * @returns Data with valid rule values applied
84
+ */
85
+ export function applyValidRuleValues(data, rule) {
86
+ if (typeof data !== 'object' || data === null || !rule.field) {
87
+ return data;
88
+ }
89
+ const dataObj = data;
90
+ for (const validation of rule.validations) {
91
+ const generator = validValueGenerators[validation.type];
92
+ if (generator) {
93
+ const value = generator(validation, rule.field, rule.validations);
94
+ if (value !== undefined) {
95
+ dataObj[rule.field] = value;
96
+ }
97
+ }
98
+ }
99
+ return dataObj;
100
+ }
101
+ /**
102
+ * Generates an invalid value for testing based on a validation rule
103
+ *
104
+ * @param validation - Validation rule
105
+ * @param fieldName - Field name (for context)
106
+ * @returns Invalid value
107
+ */
108
+ export function generateInvalidValue(validation, fieldName) {
109
+ const generator = invalidValueGenerators[validation.type];
110
+ return generator ? generator(validation, fieldName) : null;
111
+ }
112
+ /**
113
+ * Generates a valid password that meets all validation requirements
114
+ *
115
+ * @param minLength - Minimum length
116
+ * @param validations - All validations for the password
117
+ * @returns Valid password string
118
+ */
119
+ export function generateValidPassword(minLength, validations) {
120
+ let password = '';
121
+ const needsUpper = validations.some(v => v.regex?.includes('[A-Z]'));
122
+ const needsLower = validations.some(v => v.regex?.includes('[a-z]'));
123
+ const needsDigit = validations.some(v => v.regex?.includes('[0-9]'));
124
+ const needsSpecial = validations.some(v => v.regex?.includes('[^a-zA-Z0-9]'));
125
+ if (needsUpper)
126
+ password += faker.string.alpha({ length: 1, casing: 'upper' });
127
+ if (needsLower)
128
+ password += faker.string.alpha({ length: 1, casing: 'lower' });
129
+ if (needsDigit)
130
+ password += faker.string.numeric(1);
131
+ if (needsSpecial)
132
+ password += faker.helpers.arrayElement(['!', '@', '#', '$', '%']);
133
+ const remaining = minLength - password.length;
134
+ if (remaining > 0) {
135
+ password += faker.string.alphanumeric(remaining);
136
+ }
137
+ return password
138
+ .split('')
139
+ .sort(() => Math.random() - 0.5)
140
+ .join('');
141
+ }
142
+ //# sourceMappingURL=value-generators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"value-generators.js","sourceRoot":"","sources":["../../src/business-rules/value-generators.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Auth Header Builder
3
+ *
4
+ * Builds HTTP authentication headers from authentication configuration.
5
+ *
6
+ * @module executor/auth-providers/auth-header-builder
7
+ */
8
+ import type { Environment } from '../../types/index.js';
9
+ /**
10
+ * Gets authentication headers based on auth configuration
11
+ *
12
+ * @param auth - Authentication configuration
13
+ * @returns Headers object with auth credentials
14
+ */
15
+ export declare function getAuthHeaders(auth: Environment['auth']): Record<string, string>;
16
+ //# sourceMappingURL=auth-header-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-header-builder.d.ts","sourceRoot":"","sources":["../../../src/executor/auth-providers/auth-header-builder.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAwChF"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Auth Header Builder
3
+ *
4
+ * Builds HTTP authentication headers from authentication configuration.
5
+ *
6
+ * @module executor/auth-providers/auth-header-builder
7
+ */
8
+ /**
9
+ * Gets authentication headers based on auth configuration
10
+ *
11
+ * @param auth - Authentication configuration
12
+ * @returns Headers object with auth credentials
13
+ */
14
+ export function getAuthHeaders(auth) {
15
+ if (!auth) {
16
+ return {};
17
+ }
18
+ const headers = {};
19
+ switch (auth.type) {
20
+ case 'bearer':
21
+ if (auth.token) {
22
+ headers['Authorization'] = `Bearer ${auth.token}`;
23
+ }
24
+ break;
25
+ case 'api-key':
26
+ if (auth.apiKey) {
27
+ if (auth.apiKey.in === 'header') {
28
+ headers[auth.apiKey.name] = auth.apiKey.value;
29
+ }
30
+ // Query params are handled separately in request()
31
+ }
32
+ break;
33
+ case 'basic':
34
+ if (auth.basic) {
35
+ const credentials = Buffer.from(`${auth.basic.username}:${auth.basic.password}`).toString('base64');
36
+ headers['Authorization'] = `Basic ${credentials}`;
37
+ }
38
+ break;
39
+ case 'oauth2':
40
+ if (auth.oauth2?.accessToken) {
41
+ headers['Authorization'] = `Bearer ${auth.oauth2.accessToken}`;
42
+ }
43
+ break;
44
+ }
45
+ return headers;
46
+ }
47
+ //# sourceMappingURL=auth-header-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-header-builder.js","sourceRoot":"","sources":["../../../src/executor/auth-providers/auth-header-builder.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,IAAyB;IACtD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAA2B,EAAE,CAAC;IAE3C,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,QAAQ;YACX,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC;YACpD,CAAC;YACD,MAAM;QAER,KAAK,SAAS;YACZ,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;oBAChC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;gBAChD,CAAC;gBACD,mDAAmD;YACrD,CAAC;YACD,MAAM;QAER,KAAK,OAAO;YACV,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAC7B,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAChD,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACrB,OAAO,CAAC,eAAe,CAAC,GAAG,SAAS,WAAW,EAAE,CAAC;YACpD,CAAC;YACD,MAAM;QAER,KAAK,QAAQ;YACX,IAAI,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC;gBAC7B,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YACjE,CAAC;YACD,MAAM;IACV,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * OAuth2 Token Provider
3
+ *
4
+ * Handles OAuth2 token acquisition for client_credentials and password flows.
5
+ *
6
+ * @module executor/auth-providers/oauth2-provider
7
+ */
8
+ import type { Environment } from '../../types/index.js';
9
+ /**
10
+ * Acquires an OAuth2 access token and stores it in the auth configuration.
11
+ *
12
+ * Supports:
13
+ * - client_credentials (clientId + clientSecret)
14
+ * - password (username + password)
15
+ *
16
+ * @param auth - Authentication configuration (mutated to store accessToken)
17
+ */
18
+ export declare function acquireOAuth2Token(auth: Environment['auth']): Promise<void>;
19
+ //# sourceMappingURL=oauth2-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth2-provider.d.ts","sourceRoot":"","sources":["../../../src/executor/auth-providers/oauth2-provider.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAMxD;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAoGjF"}
@@ -0,0 +1,114 @@
1
+ /**
2
+ * OAuth2 Token Provider
3
+ *
4
+ * Handles OAuth2 token acquisition for client_credentials and password flows.
5
+ *
6
+ * @module executor/auth-providers/oauth2-provider
7
+ */
8
+ import { request } from '@playwright/test';
9
+ import { TestExecutionError, ErrorCode } from '../../utils/errors.js';
10
+ import { createLogger } from '../../utils/logger.js';
11
+ const log = createLogger('oauth2-provider');
12
+ /**
13
+ * Acquires an OAuth2 access token and stores it in the auth configuration.
14
+ *
15
+ * Supports:
16
+ * - client_credentials (clientId + clientSecret)
17
+ * - password (username + password)
18
+ *
19
+ * @param auth - Authentication configuration (mutated to store accessToken)
20
+ */
21
+ export async function acquireOAuth2Token(auth) {
22
+ if (!auth || auth.type !== 'oauth2' || !auth.oauth2) {
23
+ return;
24
+ }
25
+ if (auth.oauth2.accessToken) {
26
+ log.debug('OAuth2 token already exists, skipping acquisition');
27
+ return;
28
+ }
29
+ const { tokenUrl, flow, username, password, clientId, clientSecret, scopes } = auth.oauth2;
30
+ if (!tokenUrl) {
31
+ log.warn('OAuth2 tokenUrl missing, skipping token acquisition');
32
+ return;
33
+ }
34
+ try {
35
+ const body = new URLSearchParams();
36
+ if (flow === 'password' && username && password) {
37
+ // username omitted from log to avoid plaintext credential exposure
38
+ log.info('Acquiring OAuth2 token using password flow', { tokenUrl });
39
+ body.append('grant_type', 'password');
40
+ body.append('username', username);
41
+ body.append('password', password);
42
+ if (clientId)
43
+ body.append('client_id', clientId);
44
+ if (clientSecret)
45
+ body.append('client_secret', clientSecret);
46
+ }
47
+ else if (flow === 'clientCredentials' && clientId && clientSecret) {
48
+ log.info('Acquiring OAuth2 token using client_credentials flow', { tokenUrl });
49
+ body.append('grant_type', 'client_credentials');
50
+ body.append('client_id', clientId);
51
+ body.append('client_secret', clientSecret);
52
+ }
53
+ else {
54
+ // Auto-detect based on available credentials
55
+ if (username && password) {
56
+ log.info('Auto-detected password flow', { tokenUrl });
57
+ body.append('grant_type', 'password');
58
+ body.append('username', username);
59
+ body.append('password', password);
60
+ if (clientId)
61
+ body.append('client_id', clientId);
62
+ if (clientSecret)
63
+ body.append('client_secret', clientSecret);
64
+ }
65
+ else if (clientId && clientSecret) {
66
+ log.info('Auto-detected client_credentials flow', { tokenUrl });
67
+ body.append('grant_type', 'client_credentials');
68
+ body.append('client_id', clientId);
69
+ body.append('client_secret', clientSecret);
70
+ }
71
+ else {
72
+ log.warn('OAuth2 credentials incomplete, skipping token acquisition', {
73
+ hasUsername: !!username,
74
+ hasPassword: !!password,
75
+ hasClientId: !!clientId,
76
+ hasClientSecret: !!clientSecret
77
+ });
78
+ return;
79
+ }
80
+ }
81
+ if (scopes && scopes.length > 0) {
82
+ body.append('scope', scopes.join(' '));
83
+ }
84
+ // Use try/finally so tokenContext is always disposed, even on network errors
85
+ const tokenContext = await request.newContext();
86
+ let tokenResponse;
87
+ try {
88
+ const response = await tokenContext.post(tokenUrl, {
89
+ headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
90
+ data: body,
91
+ });
92
+ if (!response.ok()) {
93
+ const errorBody = await response.text();
94
+ throw new Error(`OAuth2 token request failed with status ${response.status()}: ${errorBody}`);
95
+ }
96
+ tokenResponse = await response.json();
97
+ }
98
+ finally {
99
+ await tokenContext.dispose();
100
+ }
101
+ auth.oauth2.accessToken = tokenResponse.access_token;
102
+ log.info('Successfully acquired OAuth2 access token', {
103
+ tokenType: tokenResponse.token_type,
104
+ expiresIn: tokenResponse.expires_in,
105
+ flow: flow || 'auto-detected'
106
+ });
107
+ }
108
+ catch (error) {
109
+ const errorMessage = error instanceof Error ? error.message : String(error);
110
+ log.error('Failed to acquire OAuth2 token', { error: errorMessage });
111
+ throw new TestExecutionError(ErrorCode.AUTH_ERROR, `OAuth2 token acquisition failed: ${errorMessage}`, 'Failed to obtain OAuth2 access token. Please check your credentials and token URL.', { tokenUrl, flow, clientId });
112
+ }
113
+ }
114
+ //# sourceMappingURL=oauth2-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth2-provider.js","sourceRoot":"","sources":["../../../src/executor/auth-providers/oauth2-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,133 @@
1
+ /**
2
+ * HTTP Client using Playwright
3
+ *
4
+ * Provides HTTP request/response capabilities using Playwright's APIRequestContext.
5
+ * Supports authentication, custom headers, timeouts, and detailed response capture.
6
+ *
7
+ * @module executor/http-client
8
+ */
9
+ import type { Environment, HttpMethod } from '../types/index.js';
10
+ /**
11
+ * HTTP Client for making API requests
12
+ *
13
+ * Uses Playwright's APIRequestContext for reliable HTTP operations
14
+ * with built-in retry logic, timeout handling, and response validation.
15
+ */
16
+ export declare class HttpClient {
17
+ private context;
18
+ private environment;
19
+ /**
20
+ * Creates a new HTTP client instance
21
+ *
22
+ * @param environment - Environment configuration with base URL and auth
23
+ *
24
+ * @example
25
+ * ```typescript
26
+ * const client = new HttpClient({
27
+ * name: 'local',
28
+ * baseUrl: 'http://localhost:8080',
29
+ * timeout: 5000,
30
+ * auth: { type: 'bearer', token: 'my-token' }
31
+ * });
32
+ *
33
+ * await client.initialize();
34
+ * const response = await client.request('GET', '/users');
35
+ * await client.dispose();
36
+ * ```
37
+ */
38
+ constructor(environment: Environment);
39
+ /**
40
+ * Initializes the HTTP client and creates the request context.
41
+ * Must be called before making any requests.
42
+ */
43
+ initialize(): Promise<void>;
44
+ /**
45
+ * Makes an HTTP request.
46
+ *
47
+ * @param method - HTTP method (GET, POST, PUT, PATCH, DELETE, etc.)
48
+ * @param path - Request path (can include path parameters)
49
+ * @param options - Request options (body, query params, headers)
50
+ * @returns HTTP response with status, headers, and body
51
+ */
52
+ request(method: HttpMethod, path: string, options?: {
53
+ body?: unknown;
54
+ queryParams?: Record<string, string | number | boolean>;
55
+ headers?: Record<string, string>;
56
+ pathParams?: Record<string, string | number>;
57
+ requiresAuth?: boolean;
58
+ contentType?: string;
59
+ }): Promise<{
60
+ status: number;
61
+ statusText: string;
62
+ headers: Record<string, string>;
63
+ body: unknown;
64
+ responseTime: number;
65
+ }>;
66
+ /**
67
+ * Disposes the HTTP client and cleans up resources.
68
+ */
69
+ dispose(): Promise<void>;
70
+ get(path: string, options?: {
71
+ queryParams?: Record<string, string | number | boolean>;
72
+ headers?: Record<string, string>;
73
+ pathParams?: Record<string, string | number>;
74
+ }): Promise<{
75
+ status: number;
76
+ statusText: string;
77
+ headers: Record<string, string>;
78
+ body: unknown;
79
+ responseTime: number;
80
+ }>;
81
+ post(path: string, body?: unknown, options?: {
82
+ queryParams?: Record<string, string | number | boolean>;
83
+ headers?: Record<string, string>;
84
+ pathParams?: Record<string, string | number>;
85
+ }): Promise<{
86
+ status: number;
87
+ statusText: string;
88
+ headers: Record<string, string>;
89
+ body: unknown;
90
+ responseTime: number;
91
+ }>;
92
+ put(path: string, body?: unknown, options?: {
93
+ queryParams?: Record<string, string | number | boolean>;
94
+ headers?: Record<string, string>;
95
+ pathParams?: Record<string, string | number>;
96
+ }): Promise<{
97
+ status: number;
98
+ statusText: string;
99
+ headers: Record<string, string>;
100
+ body: unknown;
101
+ responseTime: number;
102
+ }>;
103
+ patch(path: string, body?: unknown, options?: {
104
+ queryParams?: Record<string, string | number | boolean>;
105
+ headers?: Record<string, string>;
106
+ pathParams?: Record<string, string | number>;
107
+ }): Promise<{
108
+ status: number;
109
+ statusText: string;
110
+ headers: Record<string, string>;
111
+ body: unknown;
112
+ responseTime: number;
113
+ }>;
114
+ delete(path: string, options?: {
115
+ queryParams?: Record<string, string | number | boolean>;
116
+ headers?: Record<string, string>;
117
+ pathParams?: Record<string, string | number>;
118
+ }): Promise<{
119
+ status: number;
120
+ statusText: string;
121
+ headers: Record<string, string>;
122
+ body: unknown;
123
+ responseTime: number;
124
+ }>;
125
+ }
126
+ /**
127
+ * Creates and initializes an HTTP client in one step.
128
+ *
129
+ * @param environment - Environment configuration
130
+ * @returns Initialized HTTP client
131
+ */
132
+ export declare function createHttpClient(environment: Environment): Promise<HttpClient>;
133
+ //# sourceMappingURL=http-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../src/executor/http-client.ts"],"names":[],"mappings":"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"}