@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.
- package/.env.example +91 -0
- package/README.md +472 -0
- package/dist/ai-engine/assertion-generator.d.ts +48 -0
- package/dist/ai-engine/assertion-generator.d.ts.map +1 -0
- package/dist/ai-engine/assertion-generator.js +166 -0
- package/dist/ai-engine/assertion-generator.js.map +1 -0
- package/dist/ai-engine/context-data-generator.d.ts +38 -0
- package/dist/ai-engine/context-data-generator.d.ts.map +1 -0
- package/dist/ai-engine/context-data-generator.js +146 -0
- package/dist/ai-engine/context-data-generator.js.map +1 -0
- package/dist/ai-engine/dataflow-detector.d.ts +53 -0
- package/dist/ai-engine/dataflow-detector.d.ts.map +1 -0
- package/dist/ai-engine/dataflow-detector.js +217 -0
- package/dist/ai-engine/dataflow-detector.js.map +1 -0
- package/dist/ai-engine/dependency-detector.d.ts +52 -0
- package/dist/ai-engine/dependency-detector.d.ts.map +1 -0
- package/dist/ai-engine/dependency-detector.js +241 -0
- package/dist/ai-engine/dependency-detector.js.map +1 -0
- package/dist/ai-engine/edge-case-suggester.d.ts +63 -0
- package/dist/ai-engine/edge-case-suggester.d.ts.map +1 -0
- package/dist/ai-engine/edge-case-suggester.js +177 -0
- package/dist/ai-engine/edge-case-suggester.js.map +1 -0
- package/dist/ai-engine/index.d.ts +13 -0
- package/dist/ai-engine/index.d.ts.map +1 -0
- package/dist/ai-engine/index.js +13 -0
- package/dist/ai-engine/index.js.map +1 -0
- package/dist/analyzers/ai-failure-analyzer.d.ts +41 -0
- package/dist/analyzers/ai-failure-analyzer.d.ts.map +1 -0
- package/dist/analyzers/ai-failure-analyzer.js +220 -0
- package/dist/analyzers/ai-failure-analyzer.js.map +1 -0
- package/dist/analyzers/comparison-utils.d.ts +31 -0
- package/dist/analyzers/comparison-utils.d.ts.map +1 -0
- package/dist/analyzers/comparison-utils.js +85 -0
- package/dist/analyzers/comparison-utils.js.map +1 -0
- package/dist/analyzers/context-analyzer.d.ts +49 -0
- package/dist/analyzers/context-analyzer.d.ts.map +1 -0
- package/dist/analyzers/context-analyzer.js +292 -0
- package/dist/analyzers/context-analyzer.js.map +1 -0
- package/dist/analyzers/dependency-analyzer.d.ts +44 -0
- package/dist/analyzers/dependency-analyzer.d.ts.map +1 -0
- package/dist/analyzers/dependency-analyzer.js +313 -0
- package/dist/analyzers/dependency-analyzer.js.map +1 -0
- package/dist/analyzers/failure-analyzer.d.ts +122 -0
- package/dist/analyzers/failure-analyzer.d.ts.map +1 -0
- package/dist/analyzers/failure-analyzer.js +140 -0
- package/dist/analyzers/failure-analyzer.js.map +1 -0
- package/dist/analyzers/failure-detectors/index.d.ts +33 -0
- package/dist/analyzers/failure-detectors/index.d.ts.map +1 -0
- package/dist/analyzers/failure-detectors/index.js +164 -0
- package/dist/analyzers/failure-detectors/index.js.map +1 -0
- package/dist/analyzers/failure-discrepancy-correlator.d.ts +111 -0
- package/dist/analyzers/failure-discrepancy-correlator.d.ts.map +1 -0
- package/dist/analyzers/failure-discrepancy-correlator.js +202 -0
- package/dist/analyzers/failure-discrepancy-correlator.js.map +1 -0
- package/dist/analyzers/index.d.ts +10 -0
- package/dist/analyzers/index.d.ts.map +1 -0
- package/dist/analyzers/index.js +10 -0
- package/dist/analyzers/index.js.map +1 -0
- package/dist/analyzers/semantic-matcher.d.ts +123 -0
- package/dist/analyzers/semantic-matcher.d.ts.map +1 -0
- package/dist/analyzers/semantic-matcher.js +297 -0
- package/dist/analyzers/semantic-matcher.js.map +1 -0
- package/dist/analyzers/source-comparator.d.ts +177 -0
- package/dist/analyzers/source-comparator.d.ts.map +1 -0
- package/dist/analyzers/source-comparator.js +225 -0
- package/dist/analyzers/source-comparator.js.map +1 -0
- package/dist/business-rules/business-rules-analyzer.d.ts +44 -0
- package/dist/business-rules/business-rules-analyzer.d.ts.map +1 -0
- package/dist/business-rules/business-rules-analyzer.js +363 -0
- package/dist/business-rules/business-rules-analyzer.js.map +1 -0
- package/dist/business-rules/business-rules-generator.d.ts +78 -0
- package/dist/business-rules/business-rules-generator.d.ts.map +1 -0
- package/dist/business-rules/business-rules-generator.js +357 -0
- package/dist/business-rules/business-rules-generator.js.map +1 -0
- package/dist/business-rules/extractors/rule-extractors.d.ts +50 -0
- package/dist/business-rules/extractors/rule-extractors.d.ts.map +1 -0
- package/dist/business-rules/extractors/rule-extractors.js +189 -0
- package/dist/business-rules/extractors/rule-extractors.js.map +1 -0
- package/dist/business-rules/value-generators.d.ts +70 -0
- package/dist/business-rules/value-generators.d.ts.map +1 -0
- package/dist/business-rules/value-generators.js +142 -0
- package/dist/business-rules/value-generators.js.map +1 -0
- package/dist/executor/auth-providers/auth-header-builder.d.ts +16 -0
- package/dist/executor/auth-providers/auth-header-builder.d.ts.map +1 -0
- package/dist/executor/auth-providers/auth-header-builder.js +47 -0
- package/dist/executor/auth-providers/auth-header-builder.js.map +1 -0
- package/dist/executor/auth-providers/oauth2-provider.d.ts +19 -0
- package/dist/executor/auth-providers/oauth2-provider.d.ts.map +1 -0
- package/dist/executor/auth-providers/oauth2-provider.js +114 -0
- package/dist/executor/auth-providers/oauth2-provider.js.map +1 -0
- package/dist/executor/http-client.d.ts +133 -0
- package/dist/executor/http-client.d.ts.map +1 -0
- package/dist/executor/http-client.js +172 -0
- package/dist/executor/http-client.js.map +1 -0
- package/dist/executor/http-request-builder.d.ts +69 -0
- package/dist/executor/http-request-builder.d.ts.map +1 -0
- package/dist/executor/http-request-builder.js +140 -0
- package/dist/executor/http-request-builder.js.map +1 -0
- package/dist/executor/http-response-parser.d.ts +28 -0
- package/dist/executor/http-response-parser.d.ts.map +1 -0
- package/dist/executor/http-response-parser.js +74 -0
- package/dist/executor/http-response-parser.js.map +1 -0
- package/dist/executor/response-handler.d.ts +66 -0
- package/dist/executor/response-handler.d.ts.map +1 -0
- package/dist/executor/response-handler.js +135 -0
- package/dist/executor/response-handler.js.map +1 -0
- package/dist/executor/result-processor.d.ts +27 -0
- package/dist/executor/result-processor.d.ts.map +1 -0
- package/dist/executor/result-processor.js +140 -0
- package/dist/executor/result-processor.js.map +1 -0
- package/dist/executor/result-utils.d.ts +21 -0
- package/dist/executor/result-utils.d.ts.map +1 -0
- package/dist/executor/result-utils.js +29 -0
- package/dist/executor/result-utils.js.map +1 -0
- package/dist/executor/test-executor.d.ts +49 -0
- package/dist/executor/test-executor.d.ts.map +1 -0
- package/dist/executor/test-executor.js +226 -0
- package/dist/executor/test-executor.js.map +1 -0
- package/dist/executor/test-runner.d.ts +85 -0
- package/dist/executor/test-runner.d.ts.map +1 -0
- package/dist/executor/test-runner.js +177 -0
- package/dist/executor/test-runner.js.map +1 -0
- package/dist/executor/token-detector/index.d.ts +7 -0
- package/dist/executor/token-detector/index.d.ts.map +1 -0
- package/dist/executor/token-detector/index.js +7 -0
- package/dist/executor/token-detector/index.js.map +1 -0
- package/dist/executor/token-detector/token-detector.d.ts +64 -0
- package/dist/executor/token-detector/token-detector.d.ts.map +1 -0
- package/dist/executor/token-detector/token-detector.js +140 -0
- package/dist/executor/token-detector/token-detector.js.map +1 -0
- package/dist/generators/business-rule-from-stories-generator.d.ts +30 -0
- package/dist/generators/business-rule-from-stories-generator.d.ts.map +1 -0
- package/dist/generators/business-rule-from-stories-generator.js +227 -0
- package/dist/generators/business-rule-from-stories-generator.js.map +1 -0
- package/dist/generators/data/ai-data-generator.d.ts +23 -0
- package/dist/generators/data/ai-data-generator.d.ts.map +1 -0
- package/dist/generators/data/ai-data-generator.js +41 -0
- package/dist/generators/data/ai-data-generator.js.map +1 -0
- package/dist/generators/data/base-generator.d.ts +121 -0
- package/dist/generators/data/base-generator.d.ts.map +1 -0
- package/dist/generators/data/base-generator.js +200 -0
- package/dist/generators/data/base-generator.js.map +1 -0
- package/dist/generators/data/heuristic-data-generator.d.ts +28 -0
- package/dist/generators/data/heuristic-data-generator.d.ts.map +1 -0
- package/dist/generators/data/heuristic-data-generator.js +49 -0
- package/dist/generators/data/heuristic-data-generator.js.map +1 -0
- package/dist/generators/data/index.d.ts +48 -0
- package/dist/generators/data/index.d.ts.map +1 -0
- package/dist/generators/data/index.js +201 -0
- package/dist/generators/data/index.js.map +1 -0
- package/dist/generators/data/schema-walker.d.ts +45 -0
- package/dist/generators/data/schema-walker.d.ts.map +1 -0
- package/dist/generators/data/schema-walker.js +103 -0
- package/dist/generators/data/schema-walker.js.map +1 -0
- package/dist/generators/data/type-strategies.d.ts +79 -0
- package/dist/generators/data/type-strategies.d.ts.map +1 -0
- package/dist/generators/data/type-strategies.js +394 -0
- package/dist/generators/data/type-strategies.js.map +1 -0
- package/dist/generators/data-generator.d.ts +11 -0
- package/dist/generators/data-generator.d.ts.map +1 -0
- package/dist/generators/data-generator.js +11 -0
- package/dist/generators/data-generator.js.map +1 -0
- package/dist/generators/edge-case-generator.d.ts +55 -0
- package/dist/generators/edge-case-generator.d.ts.map +1 -0
- package/dist/generators/edge-case-generator.js +327 -0
- package/dist/generators/edge-case-generator.js.map +1 -0
- package/dist/generators/edge-cases/boundary-analyzer.d.ts +26 -0
- package/dist/generators/edge-cases/boundary-analyzer.d.ts.map +1 -0
- package/dist/generators/edge-cases/boundary-analyzer.js +95 -0
- package/dist/generators/edge-cases/boundary-analyzer.js.map +1 -0
- package/dist/generators/error-case-generator.d.ts +11 -0
- package/dist/generators/error-case-generator.d.ts.map +1 -0
- package/dist/generators/error-case-generator.js +11 -0
- package/dist/generators/error-case-generator.js.map +1 -0
- package/dist/generators/errors/auth-error-strategy.d.ts +36 -0
- package/dist/generators/errors/auth-error-strategy.d.ts.map +1 -0
- package/dist/generators/errors/auth-error-strategy.js +118 -0
- package/dist/generators/errors/auth-error-strategy.js.map +1 -0
- package/dist/generators/errors/business-error-strategy.d.ts +44 -0
- package/dist/generators/errors/business-error-strategy.d.ts.map +1 -0
- package/dist/generators/errors/business-error-strategy.js +152 -0
- package/dist/generators/errors/business-error-strategy.js.map +1 -0
- package/dist/generators/errors/error-strategy-factory.d.ts +27 -0
- package/dist/generators/errors/error-strategy-factory.d.ts.map +1 -0
- package/dist/generators/errors/error-strategy-factory.js +47 -0
- package/dist/generators/errors/error-strategy-factory.js.map +1 -0
- package/dist/generators/errors/error-strategy.d.ts +62 -0
- package/dist/generators/errors/error-strategy.d.ts.map +1 -0
- package/dist/generators/errors/error-strategy.js +69 -0
- package/dist/generators/errors/error-strategy.js.map +1 -0
- package/dist/generators/errors/index.d.ts +23 -0
- package/dist/generators/errors/index.d.ts.map +1 -0
- package/dist/generators/errors/index.js +73 -0
- package/dist/generators/errors/index.js.map +1 -0
- package/dist/generators/errors/validation-error-strategy.d.ts +25 -0
- package/dist/generators/errors/validation-error-strategy.d.ts.map +1 -0
- package/dist/generators/errors/validation-error-strategy.js +214 -0
- package/dist/generators/errors/validation-error-strategy.js.map +1 -0
- package/dist/generators/happy-path-generator.d.ts +93 -0
- package/dist/generators/happy-path-generator.d.ts.map +1 -0
- package/dist/generators/happy-path-generator.js +275 -0
- package/dist/generators/happy-path-generator.js.map +1 -0
- package/dist/generators/test-enricher.d.ts +44 -0
- package/dist/generators/test-enricher.d.ts.map +1 -0
- package/dist/generators/test-enricher.js +109 -0
- package/dist/generators/test-enricher.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/llm/ai-cache.d.ts +123 -0
- package/dist/llm/ai-cache.d.ts.map +1 -0
- package/dist/llm/ai-cache.js +220 -0
- package/dist/llm/ai-cache.js.map +1 -0
- package/dist/llm/ai-client.d.ts +92 -0
- package/dist/llm/ai-client.d.ts.map +1 -0
- package/dist/llm/ai-client.js +386 -0
- package/dist/llm/ai-client.js.map +1 -0
- package/dist/llm/data-generator-ai.d.ts +84 -0
- package/dist/llm/data-generator-ai.d.ts.map +1 -0
- package/dist/llm/data-generator-ai.js +284 -0
- package/dist/llm/data-generator-ai.js.map +1 -0
- package/dist/llm/index.d.ts +7 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +7 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/mcp/handlers/base-handler.d.ts +72 -0
- package/dist/mcp/handlers/base-handler.d.ts.map +1 -0
- package/dist/mcp/handlers/base-handler.js +86 -0
- package/dist/mcp/handlers/base-handler.js.map +1 -0
- package/dist/mcp/handlers/compare-sources.d.ts +91 -0
- package/dist/mcp/handlers/compare-sources.d.ts.map +1 -0
- package/dist/mcp/handlers/compare-sources.js +182 -0
- package/dist/mcp/handlers/compare-sources.js.map +1 -0
- package/dist/mcp/handlers/export-results.d.ts +53 -0
- package/dist/mcp/handlers/export-results.d.ts.map +1 -0
- package/dist/mcp/handlers/export-results.js +132 -0
- package/dist/mcp/handlers/export-results.js.map +1 -0
- package/dist/mcp/handlers/export-to-postman.d.ts +65 -0
- package/dist/mcp/handlers/export-to-postman.d.ts.map +1 -0
- package/dist/mcp/handlers/export-to-postman.js +128 -0
- package/dist/mcp/handlers/export-to-postman.js.map +1 -0
- package/dist/mcp/handlers/generate-tests.d.ts +74 -0
- package/dist/mcp/handlers/generate-tests.d.ts.map +1 -0
- package/dist/mcp/handlers/generate-tests.js +519 -0
- package/dist/mcp/handlers/generate-tests.js.map +1 -0
- package/dist/mcp/handlers/index.d.ts +13 -0
- package/dist/mcp/handlers/index.d.ts.map +1 -0
- package/dist/mcp/handlers/index.js +12 -0
- package/dist/mcp/handlers/index.js.map +1 -0
- package/dist/mcp/handlers/run-tests.d.ts +89 -0
- package/dist/mcp/handlers/run-tests.d.ts.map +1 -0
- package/dist/mcp/handlers/run-tests.js +233 -0
- package/dist/mcp/handlers/run-tests.js.map +1 -0
- package/dist/mcp/handlers/types.d.ts +61 -0
- package/dist/mcp/handlers/types.d.ts.map +1 -0
- package/dist/mcp/handlers/types.js +9 -0
- package/dist/mcp/handlers/types.js.map +1 -0
- package/dist/mcp/server.d.ts +64 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +200 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/services/file-service.d.ts +66 -0
- package/dist/mcp/services/file-service.d.ts.map +1 -0
- package/dist/mcp/services/file-service.js +143 -0
- package/dist/mcp/services/file-service.js.map +1 -0
- package/dist/mcp/services/llm-service.d.ts +70 -0
- package/dist/mcp/services/llm-service.d.ts.map +1 -0
- package/dist/mcp/services/llm-service.js +189 -0
- package/dist/mcp/services/llm-service.js.map +1 -0
- package/dist/mcp/services/postman-service.d.ts +128 -0
- package/dist/mcp/services/postman-service.d.ts.map +1 -0
- package/dist/mcp/services/postman-service.js +266 -0
- package/dist/mcp/services/postman-service.js.map +1 -0
- package/dist/mcp/services/report-service.d.ts +81 -0
- package/dist/mcp/services/report-service.d.ts.map +1 -0
- package/dist/mcp/services/report-service.js +210 -0
- package/dist/mcp/services/report-service.js.map +1 -0
- package/dist/mcp/services/spec-service.d.ts +58 -0
- package/dist/mcp/services/spec-service.d.ts.map +1 -0
- package/dist/mcp/services/spec-service.js +140 -0
- package/dist/mcp/services/spec-service.js.map +1 -0
- package/dist/parsers/endpoint-extractor.d.ts +32 -0
- package/dist/parsers/endpoint-extractor.d.ts.map +1 -0
- package/dist/parsers/endpoint-extractor.js +160 -0
- package/dist/parsers/endpoint-extractor.js.map +1 -0
- package/dist/parsers/openapi-parser.d.ts +120 -0
- package/dist/parsers/openapi-parser.d.ts.map +1 -0
- package/dist/parsers/openapi-parser.js +257 -0
- package/dist/parsers/openapi-parser.js.map +1 -0
- package/dist/parsers/visitors/auth-visitor.d.ts +28 -0
- package/dist/parsers/visitors/auth-visitor.d.ts.map +1 -0
- package/dist/parsers/visitors/auth-visitor.js +116 -0
- package/dist/parsers/visitors/auth-visitor.js.map +1 -0
- package/dist/prd/index.d.ts +10 -0
- package/dist/prd/index.d.ts.map +1 -0
- package/dist/prd/index.js +10 -0
- package/dist/prd/index.js.map +1 -0
- package/dist/prd/prd-reader.d.ts +124 -0
- package/dist/prd/prd-reader.d.ts.map +1 -0
- package/dist/prd/prd-reader.js +308 -0
- package/dist/prd/prd-reader.js.map +1 -0
- package/dist/prd/prd-storage.d.ts +232 -0
- package/dist/prd/prd-storage.d.ts.map +1 -0
- package/dist/prd/prd-storage.js +129 -0
- package/dist/prd/prd-storage.js.map +1 -0
- package/dist/repairers/test-auto-repairer.d.ts +61 -0
- package/dist/repairers/test-auto-repairer.d.ts.map +1 -0
- package/dist/repairers/test-auto-repairer.js +213 -0
- package/dist/repairers/test-auto-repairer.js.map +1 -0
- package/dist/reporters/comparison-report-generator.d.ts +58 -0
- package/dist/reporters/comparison-report-generator.d.ts.map +1 -0
- package/dist/reporters/comparison-report-generator.js +369 -0
- package/dist/reporters/comparison-report-generator.js.map +1 -0
- package/dist/reporters/gherkin-formatter.d.ts +34 -0
- package/dist/reporters/gherkin-formatter.d.ts.map +1 -0
- package/dist/reporters/gherkin-formatter.js +231 -0
- package/dist/reporters/gherkin-formatter.js.map +1 -0
- package/dist/reporters/html-report-generator.d.ts +174 -0
- package/dist/reporters/html-report-generator.d.ts.map +1 -0
- package/dist/reporters/html-report-generator.js +194 -0
- package/dist/reporters/html-report-generator.js.map +1 -0
- package/dist/reporters/report-charts.d.ts +23 -0
- package/dist/reporters/report-charts.d.ts.map +1 -0
- package/dist/reporters/report-charts.js +182 -0
- package/dist/reporters/report-charts.js.map +1 -0
- package/dist/reporters/report-sections.d.ts +34 -0
- package/dist/reporters/report-sections.d.ts.map +1 -0
- package/dist/reporters/report-sections.js +481 -0
- package/dist/reporters/report-sections.js.map +1 -0
- package/dist/reporters/report-styles.d.ts +12 -0
- package/dist/reporters/report-styles.d.ts.map +1 -0
- package/dist/reporters/report-styles.js +412 -0
- package/dist/reporters/report-styles.js.map +1 -0
- package/dist/reporters/report-test-details.d.ts +56 -0
- package/dist/reporters/report-test-details.d.ts.map +1 -0
- package/dist/reporters/report-test-details.js +328 -0
- package/dist/reporters/report-test-details.js.map +1 -0
- package/dist/reporters/report-utils.d.ts +40 -0
- package/dist/reporters/report-utils.d.ts.map +1 -0
- package/dist/reporters/report-utils.js +163 -0
- package/dist/reporters/report-utils.js.map +1 -0
- package/dist/types/ai-config.d.ts +63 -0
- package/dist/types/ai-config.d.ts.map +1 -0
- package/dist/types/ai-config.js +79 -0
- package/dist/types/ai-config.js.map +1 -0
- package/dist/types/business-rules.d.ts +235 -0
- package/dist/types/business-rules.d.ts.map +1 -0
- package/dist/types/business-rules.js +6 -0
- package/dist/types/business-rules.js.map +1 -0
- package/dist/types/config.d.ts +106 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +6 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/core.d.ts +72 -0
- package/dist/types/core.d.ts.map +1 -0
- package/dist/types/core.js +6 -0
- package/dist/types/core.js.map +1 -0
- package/dist/types/index.d.ts +17 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +10 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/openapi.d.ts +139 -0
- package/dist/types/openapi.d.ts.map +1 -0
- package/dist/types/openapi.js +6 -0
- package/dist/types/openapi.js.map +1 -0
- package/dist/types/pact.d.ts +101 -0
- package/dist/types/pact.d.ts.map +1 -0
- package/dist/types/pact.js +6 -0
- package/dist/types/pact.js.map +1 -0
- package/dist/types/reporting.d.ts +93 -0
- package/dist/types/reporting.d.ts.map +1 -0
- package/dist/types/reporting.js +6 -0
- package/dist/types/reporting.js.map +1 -0
- package/dist/types/test-case.d.ts +233 -0
- package/dist/types/test-case.d.ts.map +1 -0
- package/dist/types/test-case.js +6 -0
- package/dist/types/test-case.js.map +1 -0
- package/dist/types/test-execution.d.ts +80 -0
- package/dist/types/test-execution.d.ts.map +1 -0
- package/dist/types/test-execution.js +6 -0
- package/dist/types/test-execution.js.map +1 -0
- package/dist/utils/auth-generator.d.ts +30 -0
- package/dist/utils/auth-generator.d.ts.map +1 -0
- package/dist/utils/auth-generator.js +68 -0
- package/dist/utils/auth-generator.js.map +1 -0
- package/dist/utils/config.d.ts +181 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +141 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/coverage-calculator.d.ts +81 -0
- package/dist/utils/coverage-calculator.d.ts.map +1 -0
- package/dist/utils/coverage-calculator.js +134 -0
- package/dist/utils/coverage-calculator.js.map +1 -0
- package/dist/utils/data-loader.d.ts +52 -0
- package/dist/utils/data-loader.d.ts.map +1 -0
- package/dist/utils/data-loader.js +192 -0
- package/dist/utils/data-loader.js.map +1 -0
- package/dist/utils/errors.d.ts +167 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +257 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/logger.d.ts +220 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +325 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/openapi-discovery.d.ts +31 -0
- package/dist/utils/openapi-discovery.d.ts.map +1 -0
- package/dist/utils/openapi-discovery.js +322 -0
- package/dist/utils/openapi-discovery.js.map +1 -0
- package/dist/utils/path-resolver.d.ts +101 -0
- package/dist/utils/path-resolver.d.ts.map +1 -0
- package/dist/utils/path-resolver.js +167 -0
- package/dist/utils/path-resolver.js.map +1 -0
- package/dist/utils/resilience.d.ts +181 -0
- package/dist/utils/resilience.d.ts.map +1 -0
- package/dist/utils/resilience.js +269 -0
- package/dist/utils/resilience.js.map +1 -0
- package/dist/validators/openapi-validator.d.ts +198 -0
- package/dist/validators/openapi-validator.d.ts.map +1 -0
- package/dist/validators/openapi-validator.js +349 -0
- package/dist/validators/openapi-validator.js.map +1 -0
- package/dist/validators/response-matcher.d.ts +84 -0
- package/dist/validators/response-matcher.d.ts.map +1 -0
- package/dist/validators/response-matcher.js +234 -0
- package/dist/validators/response-matcher.js.map +1 -0
- package/dist/validators/schema-validator.d.ts +174 -0
- package/dist/validators/schema-validator.d.ts.map +1 -0
- package/dist/validators/schema-validator.js +340 -0
- package/dist/validators/schema-validator.js.map +1 -0
- package/package.json +76 -0
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenAPI types - specification parsing and comparison
|
|
3
|
+
* @module types/openapi
|
|
4
|
+
*/
|
|
5
|
+
import type { OpenAPIV3 } from 'openapi-types';
|
|
6
|
+
import type { HttpMethod } from './core.js';
|
|
7
|
+
/**
|
|
8
|
+
* Parsed OpenAPI endpoint information
|
|
9
|
+
*/
|
|
10
|
+
export interface ParsedEndpoint {
|
|
11
|
+
/**
|
|
12
|
+
* HTTP method
|
|
13
|
+
*/
|
|
14
|
+
method: HttpMethod;
|
|
15
|
+
/**
|
|
16
|
+
* Path (e.g., /api/users/{id})
|
|
17
|
+
*/
|
|
18
|
+
path: string;
|
|
19
|
+
/**
|
|
20
|
+
* Operation object from OpenAPI spec
|
|
21
|
+
*/
|
|
22
|
+
operation: OpenAPIV3.OperationObject;
|
|
23
|
+
/**
|
|
24
|
+
* Path parameters
|
|
25
|
+
*/
|
|
26
|
+
pathParams: OpenAPIV3.ParameterObject[];
|
|
27
|
+
/**
|
|
28
|
+
* Query parameters
|
|
29
|
+
*/
|
|
30
|
+
queryParams: OpenAPIV3.ParameterObject[];
|
|
31
|
+
/**
|
|
32
|
+
* Header parameters
|
|
33
|
+
*/
|
|
34
|
+
headerParams: OpenAPIV3.ParameterObject[];
|
|
35
|
+
/**
|
|
36
|
+
* Request body schema (if applicable)
|
|
37
|
+
*/
|
|
38
|
+
requestBody?: OpenAPIV3.SchemaObject;
|
|
39
|
+
/**
|
|
40
|
+
* Content-Type for request body (from OpenAPI spec)
|
|
41
|
+
* @example 'application/json', 'application/x-www-form-urlencoded', 'multipart/form-data'
|
|
42
|
+
*/
|
|
43
|
+
requestContentType?: string;
|
|
44
|
+
/**
|
|
45
|
+
* Response schemas by status code
|
|
46
|
+
*/
|
|
47
|
+
responses: Record<number, OpenAPIV3.SchemaObject>;
|
|
48
|
+
/**
|
|
49
|
+
* Security requirements for this endpoint
|
|
50
|
+
*/
|
|
51
|
+
security?: OpenAPIV3.SecurityRequirementObject[];
|
|
52
|
+
/**
|
|
53
|
+
* Resolved security scheme objects for this endpoint
|
|
54
|
+
*/
|
|
55
|
+
securitySchemes?: OpenAPIV3.SecuritySchemeObject[];
|
|
56
|
+
/**
|
|
57
|
+
* Whether this endpoint requires authentication
|
|
58
|
+
* Determined from OpenAPI security field
|
|
59
|
+
* - security: [] → false (explicitly public)
|
|
60
|
+
* - security: [{ ... }] → true (requires auth)
|
|
61
|
+
* - security: undefined → true (uses global security)
|
|
62
|
+
*/
|
|
63
|
+
requiresAuth?: boolean;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Options for comparing two OpenAPI specifications
|
|
67
|
+
*/
|
|
68
|
+
export interface SpecComparisonOptions {
|
|
69
|
+
/**
|
|
70
|
+
* Whether to detect breaking changes
|
|
71
|
+
* @default true
|
|
72
|
+
*/
|
|
73
|
+
detectBreakingChanges?: boolean;
|
|
74
|
+
/**
|
|
75
|
+
* Whether to detect non-breaking changes
|
|
76
|
+
* @default true
|
|
77
|
+
*/
|
|
78
|
+
detectNonBreakingChanges?: boolean;
|
|
79
|
+
/**
|
|
80
|
+
* Whether to ignore description changes
|
|
81
|
+
* @default true
|
|
82
|
+
*/
|
|
83
|
+
ignoreDescriptionChanges?: boolean;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Result of comparing two OpenAPI specifications
|
|
87
|
+
*/
|
|
88
|
+
export interface SpecComparisonResult {
|
|
89
|
+
/**
|
|
90
|
+
* Breaking changes detected
|
|
91
|
+
*/
|
|
92
|
+
breakingChanges: SpecChange[];
|
|
93
|
+
/**
|
|
94
|
+
* Non-breaking changes detected
|
|
95
|
+
*/
|
|
96
|
+
nonBreakingChanges: SpecChange[];
|
|
97
|
+
/**
|
|
98
|
+
* Whether the specs are compatible (no breaking changes)
|
|
99
|
+
*/
|
|
100
|
+
isCompatible: boolean;
|
|
101
|
+
/**
|
|
102
|
+
* Summary message
|
|
103
|
+
*/
|
|
104
|
+
summary: string;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Represents a change between two OpenAPI specifications
|
|
108
|
+
*/
|
|
109
|
+
export interface SpecChange {
|
|
110
|
+
/**
|
|
111
|
+
* Type of change
|
|
112
|
+
*/
|
|
113
|
+
type: 'endpoint-removed' | 'endpoint-added' | 'field-removed' | 'field-added' | 'type-changed' | 'validation-added' | 'validation-removed' | 'status-code-changed';
|
|
114
|
+
/**
|
|
115
|
+
* Location of the change (endpoint path)
|
|
116
|
+
*/
|
|
117
|
+
location: string;
|
|
118
|
+
/**
|
|
119
|
+
* HTTP method (if applicable)
|
|
120
|
+
*/
|
|
121
|
+
method?: HttpMethod;
|
|
122
|
+
/**
|
|
123
|
+
* Description of the change
|
|
124
|
+
*/
|
|
125
|
+
description: string;
|
|
126
|
+
/**
|
|
127
|
+
* Old value (before change)
|
|
128
|
+
*/
|
|
129
|
+
oldValue?: unknown;
|
|
130
|
+
/**
|
|
131
|
+
* New value (after change)
|
|
132
|
+
*/
|
|
133
|
+
newValue?: unknown;
|
|
134
|
+
/**
|
|
135
|
+
* Whether this is a breaking change
|
|
136
|
+
*/
|
|
137
|
+
breaking: boolean;
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=openapi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../../src/types/openapi.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,MAAM,EAAE,UAAU,CAAC;IAEnB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,SAAS,EAAE,SAAS,CAAC,eAAe,CAAC;IAErC;;OAEG;IACH,UAAU,EAAE,SAAS,CAAC,eAAe,EAAE,CAAC;IAExC;;OAEG;IACH,WAAW,EAAE,SAAS,CAAC,eAAe,EAAE,CAAC;IAEzC;;OAEG;IACH,YAAY,EAAE,SAAS,CAAC,eAAe,EAAE,CAAC;IAE1C;;OAEG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC,YAAY,CAAC;IAErC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC;IAElD;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC,yBAAyB,EAAE,CAAC;IAEjD;;OAEG;IACH,eAAe,CAAC,EAAE,SAAS,CAAC,oBAAoB,EAAE,CAAC;IAEnD;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC;;;OAGG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAEnC;;;OAGG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,eAAe,EAAE,UAAU,EAAE,CAAC;IAE9B;;OAEG;IACH,kBAAkB,EAAE,UAAU,EAAE,CAAC;IAEjC;;OAEG;IACH,YAAY,EAAE,OAAO,CAAC;IAEtB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,IAAI,EAAE,kBAAkB,GAAG,gBAAgB,GAAG,eAAe,GAAG,aAAa,GACvE,cAAc,GAAG,kBAAkB,GAAG,oBAAoB,GAAG,qBAAqB,CAAC;IAEzF;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;IAEpB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,QAAQ,EAAE,OAAO,CAAC;CACnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openapi.js","sourceRoot":"","sources":["../../src/types/openapi.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pact contract types - consumer-driven contracts
|
|
3
|
+
* @module types/pact
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Pact consumer contract
|
|
7
|
+
*/
|
|
8
|
+
export interface PactContract {
|
|
9
|
+
/**
|
|
10
|
+
* Consumer information
|
|
11
|
+
*/
|
|
12
|
+
consumer: {
|
|
13
|
+
name: string;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Provider information
|
|
17
|
+
*/
|
|
18
|
+
provider: {
|
|
19
|
+
name: string;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* List of interactions between consumer and provider
|
|
23
|
+
*/
|
|
24
|
+
interactions: PactInteraction[];
|
|
25
|
+
/**
|
|
26
|
+
* Metadata about the contract
|
|
27
|
+
*/
|
|
28
|
+
metadata: {
|
|
29
|
+
pactSpecification: {
|
|
30
|
+
version: string;
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Represents a single interaction in a Pact contract
|
|
36
|
+
*/
|
|
37
|
+
export interface PactInteraction {
|
|
38
|
+
/**
|
|
39
|
+
* Description of what the interaction represents
|
|
40
|
+
*/
|
|
41
|
+
description: string;
|
|
42
|
+
/**
|
|
43
|
+
* Provider state required for this interaction
|
|
44
|
+
* @example "user with id exists"
|
|
45
|
+
*/
|
|
46
|
+
providerState?: string;
|
|
47
|
+
/**
|
|
48
|
+
* The request expected from the consumer
|
|
49
|
+
*/
|
|
50
|
+
request: {
|
|
51
|
+
method: string;
|
|
52
|
+
path: string;
|
|
53
|
+
query?: Record<string, string>;
|
|
54
|
+
headers?: Record<string, unknown>;
|
|
55
|
+
body?: unknown;
|
|
56
|
+
matchingRules?: Record<string, unknown>;
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* The response the provider should return
|
|
60
|
+
*/
|
|
61
|
+
response: {
|
|
62
|
+
status: number;
|
|
63
|
+
headers?: Record<string, unknown>;
|
|
64
|
+
body?: unknown;
|
|
65
|
+
matchingRules?: Record<string, unknown>;
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Pact matchers for flexible matching
|
|
70
|
+
*/
|
|
71
|
+
export type PactMatchers = Record<string, {
|
|
72
|
+
match: 'type' | 'regex' | 'integer' | 'decimal';
|
|
73
|
+
regex?: string;
|
|
74
|
+
min?: number;
|
|
75
|
+
}>;
|
|
76
|
+
/**
|
|
77
|
+
* Result of Pact provider verification
|
|
78
|
+
*/
|
|
79
|
+
export interface PactVerificationResult {
|
|
80
|
+
/**
|
|
81
|
+
* Whether verification succeeded
|
|
82
|
+
*/
|
|
83
|
+
success: boolean;
|
|
84
|
+
/**
|
|
85
|
+
* Provider name
|
|
86
|
+
*/
|
|
87
|
+
provider: string;
|
|
88
|
+
/**
|
|
89
|
+
* Verification output (if successful)
|
|
90
|
+
*/
|
|
91
|
+
output?: string;
|
|
92
|
+
/**
|
|
93
|
+
* Error message (if failed)
|
|
94
|
+
*/
|
|
95
|
+
error?: string;
|
|
96
|
+
/**
|
|
97
|
+
* Timestamp of verification
|
|
98
|
+
*/
|
|
99
|
+
timestamp: Date;
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=pact.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pact.d.ts","sourceRoot":"","sources":["../../src/types/pact.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IAEF;;OAEG;IACH,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IAEF;;OAEG;IACH,YAAY,EAAE,eAAe,EAAE,CAAC;IAEhC;;OAEG;IACH,QAAQ,EAAE;QACR,iBAAiB,EAAE;YACjB,OAAO,EAAE,MAAM,CAAC;SACjB,CAAC;KACH,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,OAAO,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAClC,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACzC,CAAC;IAEF;;OAEG;IACH,QAAQ,EAAE;QACR,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAClC,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACzC,CAAC;CACH;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,CAC/B,MAAM,EACN;IACE,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CACF,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,SAAS,EAAE,IAAI,CAAC;CACjB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pact.js","sourceRoot":"","sources":["../../src/types/pact.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reporting types - test results and violations
|
|
3
|
+
* @module types/reporting
|
|
4
|
+
*/
|
|
5
|
+
import type { HttpMethod } from './core.js';
|
|
6
|
+
import type { TestCase } from './test-case.js';
|
|
7
|
+
/**
|
|
8
|
+
* Summary of test execution for a complete test suite
|
|
9
|
+
*/
|
|
10
|
+
export interface TestSuiteSummary {
|
|
11
|
+
/**
|
|
12
|
+
* Total number of tests executed
|
|
13
|
+
*/
|
|
14
|
+
total: number;
|
|
15
|
+
/**
|
|
16
|
+
* Number of passed tests
|
|
17
|
+
*/
|
|
18
|
+
passed: number;
|
|
19
|
+
/**
|
|
20
|
+
* Number of failed tests
|
|
21
|
+
*/
|
|
22
|
+
failed: number;
|
|
23
|
+
/**
|
|
24
|
+
* Number of skipped tests
|
|
25
|
+
*/
|
|
26
|
+
skipped: number;
|
|
27
|
+
/**
|
|
28
|
+
* Total duration in milliseconds
|
|
29
|
+
*/
|
|
30
|
+
duration: number;
|
|
31
|
+
/**
|
|
32
|
+
* Average response time in milliseconds
|
|
33
|
+
*/
|
|
34
|
+
avgResponseTime: number;
|
|
35
|
+
/**
|
|
36
|
+
* Start time of test execution
|
|
37
|
+
*/
|
|
38
|
+
startTime: Date;
|
|
39
|
+
/**
|
|
40
|
+
* End time of test execution
|
|
41
|
+
*/
|
|
42
|
+
endTime: Date;
|
|
43
|
+
/**
|
|
44
|
+
* Tests grouped by category
|
|
45
|
+
*/
|
|
46
|
+
byCategory: Record<string, {
|
|
47
|
+
passed: number;
|
|
48
|
+
failed: number;
|
|
49
|
+
total: number;
|
|
50
|
+
}>;
|
|
51
|
+
/**
|
|
52
|
+
* Tests grouped by endpoint
|
|
53
|
+
*/
|
|
54
|
+
byEndpoint: Record<string, {
|
|
55
|
+
passed: number;
|
|
56
|
+
failed: number;
|
|
57
|
+
total: number;
|
|
58
|
+
}>;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Represents a violation of the OpenAPI contract
|
|
62
|
+
*/
|
|
63
|
+
export interface ContractViolation {
|
|
64
|
+
/**
|
|
65
|
+
* Type of violation
|
|
66
|
+
*/
|
|
67
|
+
type: 'missing-validation' | 'wrong-status' | 'schema-mismatch' | 'missing-field' | 'extra-field';
|
|
68
|
+
/**
|
|
69
|
+
* Severity of the violation
|
|
70
|
+
*/
|
|
71
|
+
severity: 'critical' | 'high' | 'medium' | 'low';
|
|
72
|
+
/**
|
|
73
|
+
* Endpoint where the violation occurred
|
|
74
|
+
*/
|
|
75
|
+
endpoint: string;
|
|
76
|
+
/**
|
|
77
|
+
* HTTP method
|
|
78
|
+
*/
|
|
79
|
+
method: HttpMethod;
|
|
80
|
+
/**
|
|
81
|
+
* Description of the violation
|
|
82
|
+
*/
|
|
83
|
+
description: string;
|
|
84
|
+
/**
|
|
85
|
+
* The test case that detected this violation
|
|
86
|
+
*/
|
|
87
|
+
testCase: TestCase;
|
|
88
|
+
/**
|
|
89
|
+
* Suggested fix for the violation
|
|
90
|
+
*/
|
|
91
|
+
suggestion?: string;
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=reporting.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reporting.d.ts","sourceRoot":"","sources":["../../src/types/reporting.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,eAAe,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,SAAS,EAAE,IAAI,CAAC;IAEhB;;OAEG;IACH,OAAO,EAAE,IAAI,CAAC;IAEd;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAE9E;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC/E;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,IAAI,EAAE,oBAAoB,GAAG,cAAc,GAAG,iBAAiB,GAAG,eAAe,GAAG,aAAa,CAAC;IAElG;;OAEG;IACH,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IAEjD;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,MAAM,EAAE,UAAU,CAAC;IAEnB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,QAAQ,EAAE,QAAQ,CAAC;IAEnB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reporting.js","sourceRoot":"","sources":["../../src/types/reporting.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test case types - definitions and configuration
|
|
3
|
+
* @module types/test-case
|
|
4
|
+
*/
|
|
5
|
+
import type { OpenAPIV3 } from 'openapi-types';
|
|
6
|
+
import type { HttpMethod, TestCaseCategory, TestStatus, ValidationError } from './core.js';
|
|
7
|
+
/**
|
|
8
|
+
* Represents a single test case to be executed
|
|
9
|
+
*/
|
|
10
|
+
export interface TestCase {
|
|
11
|
+
/**
|
|
12
|
+
* Unique identifier for the test case
|
|
13
|
+
*/
|
|
14
|
+
id: string;
|
|
15
|
+
/**
|
|
16
|
+
* Human-readable name describing what is being tested
|
|
17
|
+
*/
|
|
18
|
+
name: string;
|
|
19
|
+
/**
|
|
20
|
+
* Detailed description of the test case
|
|
21
|
+
*/
|
|
22
|
+
description?: string;
|
|
23
|
+
/**
|
|
24
|
+
* Category of the test case
|
|
25
|
+
*/
|
|
26
|
+
category: TestCaseCategory;
|
|
27
|
+
/**
|
|
28
|
+
* HTTP method to use
|
|
29
|
+
*/
|
|
30
|
+
method: HttpMethod;
|
|
31
|
+
/**
|
|
32
|
+
* Request path (e.g., /api/users/{id})
|
|
33
|
+
*/
|
|
34
|
+
path: string;
|
|
35
|
+
/**
|
|
36
|
+
* Path parameters to substitute in the path
|
|
37
|
+
* @example { id: '123' } for path /api/users/{id}
|
|
38
|
+
*/
|
|
39
|
+
pathParams?: Record<string, string | number>;
|
|
40
|
+
/**
|
|
41
|
+
* Query parameters to append to the URL
|
|
42
|
+
*/
|
|
43
|
+
queryParams?: Record<string, string | number | boolean>;
|
|
44
|
+
/**
|
|
45
|
+
* Request headers
|
|
46
|
+
*/
|
|
47
|
+
headers?: Record<string, string>;
|
|
48
|
+
/**
|
|
49
|
+
* Request body (for POST, PUT, PATCH)
|
|
50
|
+
*/
|
|
51
|
+
body?: unknown;
|
|
52
|
+
/**
|
|
53
|
+
* Content-Type for request body
|
|
54
|
+
* @example 'application/json', 'application/x-www-form-urlencoded', 'multipart/form-data'
|
|
55
|
+
* @default 'application/json'
|
|
56
|
+
*/
|
|
57
|
+
contentType?: string;
|
|
58
|
+
/**
|
|
59
|
+
* Expected HTTP status code
|
|
60
|
+
*/
|
|
61
|
+
expectedStatus: number;
|
|
62
|
+
/**
|
|
63
|
+
* Expected response schema (JSON Schema)
|
|
64
|
+
*/
|
|
65
|
+
expectedSchema?: OpenAPIV3.SchemaObject;
|
|
66
|
+
/**
|
|
67
|
+
* Expected error response pattern (for error cases)
|
|
68
|
+
*/
|
|
69
|
+
expectedError?: {
|
|
70
|
+
/**
|
|
71
|
+
* Field that should be mentioned in the error
|
|
72
|
+
*/
|
|
73
|
+
field?: string;
|
|
74
|
+
/**
|
|
75
|
+
* Pattern to match in error message
|
|
76
|
+
*/
|
|
77
|
+
message?: RegExp | string;
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* Whether to validate the response against the schema
|
|
81
|
+
* @default true
|
|
82
|
+
*/
|
|
83
|
+
validateSchema?: boolean;
|
|
84
|
+
/**
|
|
85
|
+
* Business rule ID that this test validates (if applicable)
|
|
86
|
+
*/
|
|
87
|
+
ruleId?: string;
|
|
88
|
+
/**
|
|
89
|
+
* Whether this endpoint requires authentication
|
|
90
|
+
* Determined from OpenAPI security schemes
|
|
91
|
+
* If false, auth headers will NOT be sent (e.g., public login endpoints)
|
|
92
|
+
* @default true
|
|
93
|
+
*/
|
|
94
|
+
requiresAuth?: boolean;
|
|
95
|
+
/**
|
|
96
|
+
* Expected error message for business rule violations
|
|
97
|
+
*/
|
|
98
|
+
expectedErrorMessage?: string;
|
|
99
|
+
/**
|
|
100
|
+
* Setup function to run before the test (e.g., create dependencies)
|
|
101
|
+
*/
|
|
102
|
+
setup?: () => Promise<void>;
|
|
103
|
+
/**
|
|
104
|
+
* Teardown function to run after the test (e.g., cleanup)
|
|
105
|
+
*/
|
|
106
|
+
teardown?: () => Promise<void>;
|
|
107
|
+
/**
|
|
108
|
+
* Custom token field name for auto-detection
|
|
109
|
+
* Use when your API returns the token in a non-standard field
|
|
110
|
+
* Supports dot notation for nested fields (e.g., "data.auth.token")
|
|
111
|
+
* @example 'myCustomToken', 'response.credentials.jwt', 'auth.session_key'
|
|
112
|
+
*/
|
|
113
|
+
tokenField?: string;
|
|
114
|
+
/**
|
|
115
|
+
* Origin of the test case
|
|
116
|
+
* - 'heuristic': Generated from schema rules and boundary analysis
|
|
117
|
+
* - 'ai': Generated by AI from domain knowledge or user stories
|
|
118
|
+
* @default 'heuristic'
|
|
119
|
+
*/
|
|
120
|
+
origin?: 'heuristic' | 'ai';
|
|
121
|
+
/**
|
|
122
|
+
* Confidence level in the test case
|
|
123
|
+
* - 'high': Derived directly from spec (happy-path, required fields)
|
|
124
|
+
* - 'medium': Boundary values, enum variations
|
|
125
|
+
* - 'low': AI-generated from user stories or domain inference
|
|
126
|
+
*/
|
|
127
|
+
confidence?: 'high' | 'medium' | 'low';
|
|
128
|
+
/**
|
|
129
|
+
* Internal metadata (not exposed to users)
|
|
130
|
+
*/
|
|
131
|
+
metadata?: Record<string, unknown>;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Result of executing a single test case
|
|
135
|
+
*/
|
|
136
|
+
export interface TestResult {
|
|
137
|
+
/**
|
|
138
|
+
* The test case that was executed
|
|
139
|
+
*/
|
|
140
|
+
testCase: TestCase;
|
|
141
|
+
/**
|
|
142
|
+
* Execution status
|
|
143
|
+
*/
|
|
144
|
+
status: TestStatus;
|
|
145
|
+
/**
|
|
146
|
+
* Actual HTTP status code received
|
|
147
|
+
*/
|
|
148
|
+
actualStatus?: number;
|
|
149
|
+
/**
|
|
150
|
+
* Actual response body received
|
|
151
|
+
*/
|
|
152
|
+
actualBody?: unknown;
|
|
153
|
+
/**
|
|
154
|
+
* Actual response headers received
|
|
155
|
+
*/
|
|
156
|
+
actualHeaders?: Record<string, string>;
|
|
157
|
+
/**
|
|
158
|
+
* Response time in milliseconds
|
|
159
|
+
*/
|
|
160
|
+
responseTime?: number;
|
|
161
|
+
/**
|
|
162
|
+
* Error message if the test failed
|
|
163
|
+
*/
|
|
164
|
+
error?: string;
|
|
165
|
+
/**
|
|
166
|
+
* Schema validation errors (if schema validation failed)
|
|
167
|
+
*/
|
|
168
|
+
schemaErrors?: ValidationError[];
|
|
169
|
+
/**
|
|
170
|
+
* Timestamp when the test started
|
|
171
|
+
*/
|
|
172
|
+
startTime: Date;
|
|
173
|
+
/**
|
|
174
|
+
* Timestamp when the test ended
|
|
175
|
+
*/
|
|
176
|
+
endTime?: Date;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Boundary value for testing edge cases
|
|
180
|
+
*/
|
|
181
|
+
export interface BoundaryValue {
|
|
182
|
+
/**
|
|
183
|
+
* Type of boundary value
|
|
184
|
+
*/
|
|
185
|
+
type: 'valid' | 'invalid';
|
|
186
|
+
/**
|
|
187
|
+
* The actual value to test
|
|
188
|
+
*/
|
|
189
|
+
value: unknown;
|
|
190
|
+
/**
|
|
191
|
+
* Description of what this boundary represents
|
|
192
|
+
*/
|
|
193
|
+
description: string;
|
|
194
|
+
/**
|
|
195
|
+
* Expected error type (for invalid boundaries)
|
|
196
|
+
*/
|
|
197
|
+
expectedError?: string;
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Configuration for test generation
|
|
201
|
+
*/
|
|
202
|
+
export interface TestGenerationConfig {
|
|
203
|
+
/**
|
|
204
|
+
* Whether to generate happy path tests
|
|
205
|
+
* @default true
|
|
206
|
+
*/
|
|
207
|
+
includeHappyPath?: boolean;
|
|
208
|
+
/**
|
|
209
|
+
* Whether to generate edge case tests
|
|
210
|
+
* @default true
|
|
211
|
+
*/
|
|
212
|
+
includeEdgeCases?: boolean;
|
|
213
|
+
/**
|
|
214
|
+
* Whether to generate error case tests
|
|
215
|
+
* @default true
|
|
216
|
+
*/
|
|
217
|
+
includeErrorCases?: boolean;
|
|
218
|
+
/**
|
|
219
|
+
* Maximum number of optional field combinations to test
|
|
220
|
+
* @default 10
|
|
221
|
+
*/
|
|
222
|
+
maxOptionalCombinations?: number;
|
|
223
|
+
/**
|
|
224
|
+
* Whether to generate tests for all enum values
|
|
225
|
+
* @default true
|
|
226
|
+
*/
|
|
227
|
+
testAllEnumValues?: boolean;
|
|
228
|
+
/**
|
|
229
|
+
* Additional custom test cases to include
|
|
230
|
+
*/
|
|
231
|
+
customTests?: TestCase[];
|
|
232
|
+
}
|
|
233
|
+
//# sourceMappingURL=test-case.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-case.d.ts","sourceRoot":"","sources":["../../src/types/test-case.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-case.js","sourceRoot":"","sources":["../../src/types/test-case.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|