@autobe/agent 0.30.0-dev.20260315 → 0.30.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +661 -661
- package/lib/constants/AutoBeTemplateFileConstant.d.ts +1 -1
- package/lib/factory/consentFunctionCall.js +4 -4
- package/lib/factory/createAutoBeContext.js +24 -24
- package/lib/factory/createAutoBeMessageContent.js +6 -6
- package/lib/index.mjs +41 -41
- package/lib/orchestrate/analyze/histories/transformAnalyzeScenarioHistory.js +18 -18
- package/lib/orchestrate/analyze/histories/transformAnalyzeScenarioReviewHistory.js +13 -13
- package/lib/orchestrate/analyze/histories/transformAnalyzeSectionCrossFileReviewHistory.js +47 -47
- package/lib/orchestrate/analyze/histories/transformAnalyzeSectionReviewHistory.js +66 -66
- package/lib/orchestrate/analyze/histories/transformAnalyzeWriteSectionHistory.js +91 -91
- package/lib/orchestrate/analyze/histories/transformAnalyzeWriteSectionPatchHistory.js +46 -46
- package/lib/orchestrate/analyze/histories/transformAnalyzeWriteUnitHistory.js +72 -72
- package/lib/orchestrate/analyze/orchestrateAnalyzeScenario.js +1 -1
- package/lib/orchestrate/analyze/orchestrateAnalyzeSectionCrossFileReview.js +1 -1
- package/lib/orchestrate/analyze/orchestrateAnalyzeSectionReview.js +1 -1
- package/lib/orchestrate/analyze/orchestrateAnalyzeWriteSection.js +1 -1
- package/lib/orchestrate/analyze/orchestrateAnalyzeWriteSectionPatch.js +1 -1
- package/lib/orchestrate/analyze/orchestrateAnalyzeWriteUnit.js +1 -1
- package/lib/orchestrate/common/histories/transformCommonCorrectCastingHistory.js +5 -5
- package/lib/orchestrate/common/histories/transformPreliminaryHistory.js +44 -44
- package/lib/orchestrate/common/histories/transformPreviousAndLatestCorrectHistory.js +44 -44
- package/lib/orchestrate/common/internal/fixPrelminaryApplication.js +22 -22
- package/lib/orchestrate/common/internal/validatePreliminary.js +116 -116
- package/lib/orchestrate/facade/createAutoBeFacadeController.js +3 -3
- package/lib/orchestrate/facade/structures/transformFacadeStateMessage.js +20 -20
- package/lib/orchestrate/interface/histories/transformInterfaceActionEndpointReviewHistory.js +34 -34
- package/lib/orchestrate/interface/histories/transformInterfaceActionEndpointWriteHistory.js +37 -37
- package/lib/orchestrate/interface/histories/transformInterfaceAuthorizationHistory.js +56 -56
- package/lib/orchestrate/interface/histories/transformInterfaceBaseEndpointReviewHistory.js +26 -26
- package/lib/orchestrate/interface/histories/transformInterfaceBaseEndpointWriteHistory.js +28 -28
- package/lib/orchestrate/interface/histories/transformInterfaceEndpointAuthorizationSection.js +11 -11
- package/lib/orchestrate/interface/histories/transformInterfaceGroupHistory.js +38 -38
- package/lib/orchestrate/interface/histories/transformInterfaceOperationHistory.js +29 -29
- package/lib/orchestrate/interface/histories/transformInterfaceOperationParameterHistory.js +15 -15
- package/lib/orchestrate/interface/histories/transformInterfaceOperationReviewHistory.js +6 -6
- package/lib/orchestrate/interface/histories/transformInterfacePrerequisiteHistory.js +25 -25
- package/lib/orchestrate/interface/histories/transformInterfaceSchemaCastingHistory.js +67 -67
- package/lib/orchestrate/interface/histories/transformInterfaceSchemaComplementHistory.js +60 -60
- package/lib/orchestrate/interface/histories/transformInterfaceSchemaRefineHistory.js +83 -83
- package/lib/orchestrate/interface/histories/transformInterfaceSchemaRenameHistory.js +29 -29
- package/lib/orchestrate/interface/histories/transformInterfaceSchemaReviewHistory.js +74 -74
- package/lib/orchestrate/interface/histories/transformInterfaceSchemaWriteHistory.js +46 -46
- package/lib/orchestrate/interface/orchestrateInterfaceAuthorization.js +1 -1
- package/lib/orchestrate/interface/orchestrateInterfaceEndpointReview.js +1 -1
- package/lib/orchestrate/interface/orchestrateInterfaceEndpointWrite.js +1 -1
- package/lib/orchestrate/interface/orchestrateInterfaceGroup.js +9 -9
- package/lib/orchestrate/interface/orchestrateInterfaceOperation.js +1 -1
- package/lib/orchestrate/interface/orchestrateInterfaceOperationReview.js +1 -1
- package/lib/orchestrate/interface/orchestrateInterfacePrerequisite.js +4 -4
- package/lib/orchestrate/interface/orchestrateInterfaceSchemaCasting.js +1 -1
- package/lib/orchestrate/interface/orchestrateInterfaceSchemaComplement.js +5 -5
- package/lib/orchestrate/interface/orchestrateInterfaceSchemaRefine.js +1 -1
- package/lib/orchestrate/interface/orchestrateInterfaceSchemaReview.js +1 -1
- package/lib/orchestrate/interface/orchestrateInterfaceSchemaWrite.js +1 -1
- package/lib/orchestrate/interface/programmers/AutoBeInterfaceAuthorizationProgrammer.js +90 -90
- package/lib/orchestrate/interface/programmers/AutoBeInterfaceEndpointProgrammer.js +6 -6
- package/lib/orchestrate/interface/programmers/AutoBeInterfaceEndpointReviewProgrammer.js +25 -25
- package/lib/orchestrate/interface/programmers/AutoBeInterfaceOperationProgrammer.js +71 -71
- package/lib/orchestrate/interface/programmers/AutoBeInterfacePrerequisiteProgrammer.js +162 -162
- package/lib/orchestrate/interface/programmers/AutoBeInterfaceSchemaProgrammer.js +11 -11
- package/lib/orchestrate/interface/programmers/AutoBeInterfaceSchemaPropertyReviseProgrammer.js +73 -73
- package/lib/orchestrate/interface/programmers/AutoBeInterfaceSchemaRefineProgrammer.js +35 -35
- package/lib/orchestrate/interface/programmers/AutoBeInterfaceSchemaReviewProgrammer.js +11 -11
- package/lib/orchestrate/interface/utils/AutoBeJsonSchemaFactory.js +4 -4
- package/lib/orchestrate/interface/utils/AutoBeJsonSchemaValidator.js +283 -283
- package/lib/orchestrate/interface/utils/fulfillJsonSchemaErrorMessages.js +76 -76
- package/lib/orchestrate/prisma/histories/transformPrismaAuthorizationHistory.js +76 -76
- package/lib/orchestrate/prisma/histories/transformPrismaAuthorizationReviewHistory.js +51 -51
- package/lib/orchestrate/prisma/histories/transformPrismaComponentReviewHistory.js +54 -54
- package/lib/orchestrate/prisma/histories/transformPrismaComponentsHistory.js +83 -83
- package/lib/orchestrate/prisma/histories/transformPrismaCorrectHistory.js +6 -6
- package/lib/orchestrate/prisma/histories/transformPrismaGroupHistory.js +22 -22
- package/lib/orchestrate/prisma/histories/transformPrismaGroupReviewHistory.js +41 -41
- package/lib/orchestrate/prisma/histories/transformPrismaSchemaHistory.js +39 -39
- package/lib/orchestrate/prisma/histories/transformPrismaSchemaReviewHistory.js +41 -41
- package/lib/orchestrate/prisma/orchestratePrismaAuthorization.js +1 -1
- package/lib/orchestrate/prisma/orchestratePrismaAuthorizationReview.js +1 -1
- package/lib/orchestrate/prisma/orchestratePrismaComponent.js +1 -1
- package/lib/orchestrate/prisma/orchestratePrismaComponentReview.js +1 -1
- package/lib/orchestrate/prisma/orchestratePrismaCorrect.js +1 -1
- package/lib/orchestrate/prisma/orchestratePrismaGroup.js +1 -1
- package/lib/orchestrate/prisma/orchestratePrismaGroupReview.js +1 -1
- package/lib/orchestrate/prisma/orchestratePrismaSchema.js +1 -1
- package/lib/orchestrate/prisma/orchestratePrismaSchemaReview.js +1 -1
- package/lib/orchestrate/prisma/programmers/AutoBeDatabaseAuthorizationProgrammer.js +23 -23
- package/lib/orchestrate/prisma/programmers/AutoBeDatabaseAuthorizationReviewProgrammer.js +7 -7
- package/lib/orchestrate/prisma/programmers/AutoBeDatabaseComponentProgrammer.js +5 -5
- package/lib/orchestrate/prisma/programmers/AutoBeDatabaseComponentReviewProgrammer.js +20 -20
- package/lib/orchestrate/prisma/programmers/AutoBeDatabaseGroupProgrammer.js +13 -13
- package/lib/orchestrate/prisma/programmers/AutoBeDatabaseGroupReviewProgrammer.js +51 -51
- package/lib/orchestrate/prisma/programmers/AutoBeDatabaseSchemaProgrammer.js +25 -25
- package/lib/orchestrate/realize/histories/transformRealizeAuthorizationCorrectHistory.js +28 -28
- package/lib/orchestrate/realize/histories/transformRealizeAuthorizationWriteHistory.js +14 -14
- package/lib/orchestrate/realize/histories/transformRealizeCollectorCorrectHistory.js +42 -42
- package/lib/orchestrate/realize/histories/transformRealizeCollectorPlanHistory.js +27 -27
- package/lib/orchestrate/realize/histories/transformRealizeCollectorWriteHistory.js +57 -57
- package/lib/orchestrate/realize/histories/transformRealizeCorrectCastingHistory.js +35 -35
- package/lib/orchestrate/realize/histories/transformRealizeOperationCorrectHistory.js +14 -14
- package/lib/orchestrate/realize/histories/transformRealizeOperationWriteHistory.js +37 -37
- package/lib/orchestrate/realize/histories/transformRealizeOperationWriteHistory.js.map +1 -1
- package/lib/orchestrate/realize/histories/transformRealizeTransformerCorrectHistory.js +47 -47
- package/lib/orchestrate/realize/histories/transformRealizeTransformerPlanHistory.js +27 -27
- package/lib/orchestrate/realize/histories/transformRealizeTransformerWriteHistory.js +51 -51
- package/lib/orchestrate/realize/orchestrateRealizeAuthorizationCorrect.js +1 -1
- package/lib/orchestrate/realize/orchestrateRealizeAuthorizationWrite.js +1 -1
- package/lib/orchestrate/realize/orchestrateRealizeCollectorCorrectOverall.js +1 -1
- package/lib/orchestrate/realize/orchestrateRealizeCollectorPlan.js +11 -11
- package/lib/orchestrate/realize/orchestrateRealizeCollectorWrite.js +1 -1
- package/lib/orchestrate/realize/orchestrateRealizeOperationCorrectOverall.js +1 -1
- package/lib/orchestrate/realize/orchestrateRealizeOperationWrite.js +1 -1
- package/lib/orchestrate/realize/orchestrateRealizeTransformerCorrectOverall.js +1 -1
- package/lib/orchestrate/realize/orchestrateRealizeTransformerPlan.js +11 -11
- package/lib/orchestrate/realize/orchestrateRealizeTransformerWrite.js +1 -1
- package/lib/orchestrate/realize/programmers/AutoBeRealizeCollectorProgrammer.js +41 -41
- package/lib/orchestrate/realize/programmers/AutoBeRealizeOperationProgrammer.js +21 -21
- package/lib/orchestrate/realize/programmers/AutoBeRealizeTransformerProgrammer.js +57 -57
- package/lib/orchestrate/realize/utils/getRealizeWriteInputType.js +3 -3
- package/lib/orchestrate/realize/utils/printErrorHints.js +5 -5
- package/lib/orchestrate/test/compile/getTestImportStatements.js +9 -9
- package/lib/orchestrate/test/histories/transformTestAuthorizeWriteHistory.js +38 -38
- package/lib/orchestrate/test/histories/transformTestGenerationWriteHistory.js +79 -79
- package/lib/orchestrate/test/histories/transformTestOperationWriteHistory.js +162 -162
- package/lib/orchestrate/test/histories/transformTestPrepareWriteHistory.js +54 -54
- package/lib/orchestrate/test/histories/transformTestScenarioHistory.js +31 -31
- package/lib/orchestrate/test/histories/transformTestScenarioReviewHistory.js +27 -27
- package/lib/orchestrate/test/orchestrateTestScenario.js +1 -1
- package/lib/orchestrate/test/orchestrateTestScenarioReview.js +1 -1
- package/lib/orchestrate/test/programmers/AutoBeTestAuthorizeProgrammer.js +31 -31
- package/lib/orchestrate/test/programmers/AutoBeTestGenerateProgrammer.js +23 -23
- package/lib/orchestrate/test/programmers/AutoBeTestOperationProgrammer.js +6 -6
- package/lib/orchestrate/test/programmers/AutoBeTestPrepareProgrammer.js +34 -34
- package/lib/orchestrate/test/programmers/AutoBeTestScenarioProgrammer.js +39 -39
- package/lib/utils/predicateStateMessage.js +19 -19
- package/lib/utils/validateEmptyCode.js +16 -16
- package/package.json +5 -5
- package/src/AutoBeAgent.ts +374 -374
- package/src/AutoBeAgentBase.ts +126 -126
- package/src/AutoBeMockAgent.ts +254 -254
- package/src/constants/AutoBeConfigConstant.ts +173 -173
- package/src/constants/AutoBeTemplateFileConstant.ts +1 -1
- package/src/context/AutoBeContext.ts +107 -107
- package/src/context/AutoBeState.ts +66 -66
- package/src/context/AutoBeTokenUsage.ts +307 -307
- package/src/context/AutoBeTokenUsageComponent.ts +227 -227
- package/src/describe/describe.ts +47 -47
- package/src/describe/image/histories/transformImageDescribeDraftHistories.ts +16 -16
- package/src/describe/image/orchestrateImageDescribeDraft.ts +200 -200
- package/src/describe/image/structures/IAutoBeImageDescribeDraftApplication.ts +92 -92
- package/src/describe/imageDescribe.ts +64 -64
- package/src/factory/consentFunctionCall.ts +141 -141
- package/src/factory/createAgenticaHistory.ts +71 -71
- package/src/factory/createAutoBeContext.ts +584 -584
- package/src/factory/createAutoBeMessageContent.ts +36 -36
- package/src/factory/createAutoBeState.ts +20 -20
- package/src/factory/getAutoBeGenerated.ts +317 -317
- package/src/factory/getAutoBeRealizeGenerated.ts +31 -31
- package/src/factory/getCriticalCompiler.ts +52 -52
- package/src/factory/index.ts +1 -1
- package/src/factory/mergeSystemMessages.ts +60 -60
- package/src/factory/supportFunctionCallFallback.ts +214 -214
- package/src/factory/supportMistral.ts +138 -138
- package/src/index.ts +16 -16
- package/src/orchestrate/analyze/fillTocDeterministic.ts +280 -280
- package/src/orchestrate/analyze/histories/transformAnalyzeScenarioHistory.ts +55 -55
- package/src/orchestrate/analyze/histories/transformAnalyzeScenarioReviewHistory.ts +74 -74
- package/src/orchestrate/analyze/histories/transformAnalyzeSectionCrossFileReviewHistory.ts +179 -179
- package/src/orchestrate/analyze/histories/transformAnalyzeSectionReviewHistory.ts +163 -163
- package/src/orchestrate/analyze/histories/transformAnalyzeWriteSectionHistory.ts +191 -191
- package/src/orchestrate/analyze/histories/transformAnalyzeWriteSectionPatchHistory.ts +122 -122
- package/src/orchestrate/analyze/histories/transformAnalyzeWriteUnitHistory.ts +161 -161
- package/src/orchestrate/analyze/index.ts +7 -7
- package/src/orchestrate/analyze/orchestrateAnalyze.ts +1693 -1693
- package/src/orchestrate/analyze/orchestrateAnalyzeScenario.ts +267 -267
- package/src/orchestrate/analyze/orchestrateAnalyzeScenarioReview.ts +122 -122
- package/src/orchestrate/analyze/orchestrateAnalyzeSectionCrossFileReview.ts +146 -146
- package/src/orchestrate/analyze/orchestrateAnalyzeSectionReview.ts +154 -154
- package/src/orchestrate/analyze/orchestrateAnalyzeWriteSection.ts +388 -388
- package/src/orchestrate/analyze/orchestrateAnalyzeWriteSectionPatch.ts +407 -407
- package/src/orchestrate/analyze/orchestrateAnalyzeWriteUnit.ts +348 -348
- package/src/orchestrate/analyze/programmers/AutoBeAnalyzeProgrammer.ts +149 -149
- package/src/orchestrate/analyze/structures/FixedAnalyzeTemplate.ts +961 -961
- package/src/orchestrate/analyze/structures/IAutoBeAnalyzeScenarioApplication.ts +141 -141
- package/src/orchestrate/analyze/structures/IAutoBeAnalyzeScenarioReviewApplication.ts +96 -96
- package/src/orchestrate/analyze/structures/IAutoBeAnalyzeSectionCrossFileReviewApplication.ts +160 -160
- package/src/orchestrate/analyze/structures/IAutoBeAnalyzeSectionReviewApplication.ts +192 -192
- package/src/orchestrate/analyze/structures/IAutoBeAnalyzeWriteSectionApplication.ts +142 -142
- package/src/orchestrate/analyze/structures/IAutoBeAnalyzeWriteUnitApplication.ts +123 -123
- package/src/orchestrate/analyze/utils/buildConstraintConsistencyReport.ts +813 -813
- package/src/orchestrate/analyze/utils/buildErrorCodeRegistry.ts +324 -324
- package/src/orchestrate/analyze/utils/buildHardValidators.ts +88 -88
- package/src/orchestrate/analyze/utils/detectInventedEntities.ts +87 -87
- package/src/orchestrate/analyze/utils/detectProseConstraintConflicts.ts +319 -319
- package/src/orchestrate/analyze/utils/repairSectionReviewUtils.ts +181 -181
- package/src/orchestrate/analyze/utils/repairUtils.ts +60 -60
- package/src/orchestrate/analyze/utils/validateScenarioBasics.ts +104 -104
- package/src/orchestrate/common/AutoBePreliminaryController.ts +400 -400
- package/src/orchestrate/common/histories/transformCommonCorrectCastingHistory.ts +32 -32
- package/src/orchestrate/common/histories/transformPreliminaryHistory.ts +742 -742
- package/src/orchestrate/common/histories/transformPreviousAndLatestCorrectHistory.ts +77 -77
- package/src/orchestrate/common/internal/complementPreliminaryCollection.ts +263 -263
- package/src/orchestrate/common/internal/convertToSectionEntries.ts +57 -57
- package/src/orchestrate/common/internal/createPreliminaryCollection.ts +76 -76
- package/src/orchestrate/common/internal/fixPrelminaryApplication.ts +346 -346
- package/src/orchestrate/common/internal/validatePreliminary.ts +671 -671
- package/src/orchestrate/common/orchestrateCommonCorrectCasting.ts +223 -223
- package/src/orchestrate/common/orchestratePreliminary.ts +610 -610
- package/src/orchestrate/common/structures/AutoBePreliminaryRequest.ts +42 -42
- package/src/orchestrate/common/structures/IAnalysisSectionEntry.ts +35 -35
- package/src/orchestrate/common/structures/IAutoBeCommonCorrectCastingApplication.ts +72 -72
- package/src/orchestrate/common/structures/IAutoBeOrchestrateResult.ts +28 -28
- package/src/orchestrate/common/structures/IAutoBePreliminaryCollection.ts +52 -52
- package/src/orchestrate/common/structures/IAutoBePreliminaryGetAnalysisSections.ts +34 -34
- package/src/orchestrate/common/structures/IAutoBePreliminaryGetDatabaseSchemas.ts +31 -31
- package/src/orchestrate/common/structures/IAutoBePreliminaryGetInterfaceOperations.ts +32 -32
- package/src/orchestrate/common/structures/IAutoBePreliminaryGetInterfaceSchemas.ts +31 -31
- package/src/orchestrate/common/structures/IAutoBePreliminaryGetPreviousAnalysisSections.ts +28 -28
- package/src/orchestrate/common/structures/IAutoBePreliminaryGetPreviousDatabaseSchemas.ts +88 -88
- package/src/orchestrate/common/structures/IAutoBePreliminaryGetPreviousInterfaceOperations.ts +102 -102
- package/src/orchestrate/common/structures/IAutoBePreliminaryGetPreviousInterfaceSchemas.ts +105 -105
- package/src/orchestrate/common/structures/IAutoBePreliminaryGetRealizeCollectors.ts +32 -32
- package/src/orchestrate/common/structures/IAutoBePreliminaryGetRealizeTransformers.ts +32 -32
- package/src/orchestrate/facade/createAutoBeFacadeController.ts +118 -118
- package/src/orchestrate/facade/histories/IAutoBeFacadeApplication.ts +139 -139
- package/src/orchestrate/facade/histories/IAutoBeFacadeApplicationProps.ts +8 -8
- package/src/orchestrate/facade/histories/IAutoBeFacadeApplicationResult.ts +9 -9
- package/src/orchestrate/facade/structures/transformFacadeStateMessage.ts +59 -59
- package/src/orchestrate/index.ts +5 -5
- package/src/orchestrate/interface/histories/transformInterfaceActionEndpointReviewHistory.ts +83 -83
- package/src/orchestrate/interface/histories/transformInterfaceActionEndpointWriteHistory.ts +78 -78
- package/src/orchestrate/interface/histories/transformInterfaceAuthorizationHistory.ts +129 -129
- package/src/orchestrate/interface/histories/transformInterfaceBaseEndpointReviewHistory.ts +74 -74
- package/src/orchestrate/interface/histories/transformInterfaceBaseEndpointWriteHistory.ts +68 -68
- package/src/orchestrate/interface/histories/transformInterfaceCommonHistory.ts +64 -64
- package/src/orchestrate/interface/histories/transformInterfaceEndpointAuthorizationSection.ts +42 -42
- package/src/orchestrate/interface/histories/transformInterfaceGroupHistory.ts +103 -103
- package/src/orchestrate/interface/histories/transformInterfaceOperationHistory.ts +81 -81
- package/src/orchestrate/interface/histories/transformInterfaceOperationParameterHistory.ts +53 -53
- package/src/orchestrate/interface/histories/transformInterfaceOperationReviewHistory.ts +49 -49
- package/src/orchestrate/interface/histories/transformInterfacePrerequisiteHistory.ts +94 -94
- package/src/orchestrate/interface/histories/transformInterfaceSchemaCastingHistory.ts +122 -122
- package/src/orchestrate/interface/histories/transformInterfaceSchemaComplementHistory.ts +192 -192
- package/src/orchestrate/interface/histories/transformInterfaceSchemaRefineHistory.ts +189 -189
- package/src/orchestrate/interface/histories/transformInterfaceSchemaRenameHistory.ts +63 -63
- package/src/orchestrate/interface/histories/transformInterfaceSchemaReviewHistory.ts +173 -173
- package/src/orchestrate/interface/histories/transformInterfaceSchemaWriteHistory.ts +88 -88
- package/src/orchestrate/interface/index.ts +6 -6
- package/src/orchestrate/interface/orchestrateInterface.ts +118 -118
- package/src/orchestrate/interface/orchestrateInterfaceActionEndpoint.ts +58 -58
- package/src/orchestrate/interface/orchestrateInterfaceAuthorization.ts +208 -208
- package/src/orchestrate/interface/orchestrateInterfaceBaseEndpoint.ts +55 -55
- package/src/orchestrate/interface/orchestrateInterfaceEndpoint.ts +67 -67
- package/src/orchestrate/interface/orchestrateInterfaceEndpointOverall.ts +80 -80
- package/src/orchestrate/interface/orchestrateInterfaceEndpointReview.ts +212 -212
- package/src/orchestrate/interface/orchestrateInterfaceEndpointWrite.ts +236 -236
- package/src/orchestrate/interface/orchestrateInterfaceGroup.ts +166 -166
- package/src/orchestrate/interface/orchestrateInterfaceOperation.ts +322 -322
- package/src/orchestrate/interface/orchestrateInterfaceOperationReview.ts +245 -245
- package/src/orchestrate/interface/orchestrateInterfacePrerequisite.ts +240 -240
- package/src/orchestrate/interface/orchestrateInterfaceSchema.ts +191 -191
- package/src/orchestrate/interface/orchestrateInterfaceSchemaCasting.ts +274 -274
- package/src/orchestrate/interface/orchestrateInterfaceSchemaComplement.ts +329 -329
- package/src/orchestrate/interface/orchestrateInterfaceSchemaRefine.ts +292 -292
- package/src/orchestrate/interface/orchestrateInterfaceSchemaRename.ts +266 -266
- package/src/orchestrate/interface/orchestrateInterfaceSchemaReview.ts +310 -310
- package/src/orchestrate/interface/orchestrateInterfaceSchemaWrite.ts +283 -283
- package/src/orchestrate/interface/programmers/AutoBeInterfaceAuthorizationProgrammer.ts +260 -260
- package/src/orchestrate/interface/programmers/AutoBeInterfaceEndpointProgrammer.ts +155 -155
- package/src/orchestrate/interface/programmers/AutoBeInterfaceEndpointReviewProgrammer.ts +139 -139
- package/src/orchestrate/interface/programmers/AutoBeInterfaceOperationProgrammer.ts +277 -277
- package/src/orchestrate/interface/programmers/AutoBeInterfacePrerequisiteProgrammer.ts +259 -259
- package/src/orchestrate/interface/programmers/AutoBeInterfaceSchemaProgrammer.ts +152 -152
- package/src/orchestrate/interface/programmers/AutoBeInterfaceSchemaPropertyReviseProgrammer.ts +347 -347
- package/src/orchestrate/interface/programmers/AutoBeInterfaceSchemaRefineProgrammer.ts +183 -183
- package/src/orchestrate/interface/programmers/AutoBeInterfaceSchemaReviewProgrammer.ts +263 -263
- package/src/orchestrate/interface/structures/IAutoBeInterfaceAuthorizationApplication.ts +135 -135
- package/src/orchestrate/interface/structures/IAutoBeInterfaceEndpointReviewApplication.ts +128 -128
- package/src/orchestrate/interface/structures/IAutoBeInterfaceEndpointWriteApplication.ts +133 -133
- package/src/orchestrate/interface/structures/IAutoBeInterfaceGroupApplication.ts +122 -122
- package/src/orchestrate/interface/structures/IAutoBeInterfaceOperationApplication.ts +178 -178
- package/src/orchestrate/interface/structures/IAutoBeInterfaceOperationReviewApplication.ts +175 -175
- package/src/orchestrate/interface/structures/IAutoBeInterfacePrerequisiteApplication.ts +130 -130
- package/src/orchestrate/interface/structures/IAutoBeInterfaceSchemaApplication.ts +121 -121
- package/src/orchestrate/interface/structures/IAutoBeInterfaceSchemaCastingApplication.ts +153 -153
- package/src/orchestrate/interface/structures/IAutoBeInterfaceSchemaComplementApplication.ts +123 -123
- package/src/orchestrate/interface/structures/IAutoBeInterfaceSchemaRefineApplication.ts +181 -181
- package/src/orchestrate/interface/structures/IAutoBeInterfaceSchemaRenameApplication.ts +45 -45
- package/src/orchestrate/interface/structures/IAutoBeInterfaceSchemaReviewApplication.ts +108 -108
- package/src/orchestrate/interface/utils/AutoBeJsonSchemaCollection.ts +42 -42
- package/src/orchestrate/interface/utils/AutoBeJsonSchemaFactory.ts +714 -714
- package/src/orchestrate/interface/utils/AutoBeJsonSchemaNamingConvention.ts +86 -86
- package/src/orchestrate/interface/utils/AutoBeJsonSchemaValidator.ts +725 -725
- package/src/orchestrate/interface/utils/fulfillJsonSchemaErrorMessages.ts +219 -219
- package/src/orchestrate/prisma/histories/transformPrismaAuthorizationHistory.ts +144 -144
- package/src/orchestrate/prisma/histories/transformPrismaAuthorizationReviewHistory.ts +104 -104
- package/src/orchestrate/prisma/histories/transformPrismaComponentReviewHistory.ts +97 -97
- package/src/orchestrate/prisma/histories/transformPrismaComponentsHistory.ts +136 -136
- package/src/orchestrate/prisma/histories/transformPrismaCorrectHistory.ts +41 -41
- package/src/orchestrate/prisma/histories/transformPrismaGroupHistory.ts +63 -63
- package/src/orchestrate/prisma/histories/transformPrismaGroupReviewHistory.ts +79 -79
- package/src/orchestrate/prisma/histories/transformPrismaSchemaHistory.ts +97 -97
- package/src/orchestrate/prisma/histories/transformPrismaSchemaReviewHistory.ts +126 -126
- package/src/orchestrate/prisma/index.ts +7 -7
- package/src/orchestrate/prisma/orchestratePrisma.ts +296 -296
- package/src/orchestrate/prisma/orchestratePrismaAuthorization.ts +173 -173
- package/src/orchestrate/prisma/orchestratePrismaAuthorizationReview.ts +183 -183
- package/src/orchestrate/prisma/orchestratePrismaComponent.ts +205 -205
- package/src/orchestrate/prisma/orchestratePrismaComponentReview.ts +205 -205
- package/src/orchestrate/prisma/orchestratePrismaCorrect.ts +265 -265
- package/src/orchestrate/prisma/orchestratePrismaGroup.ts +121 -121
- package/src/orchestrate/prisma/orchestratePrismaGroupReview.ts +141 -141
- package/src/orchestrate/prisma/orchestratePrismaSchema.ts +218 -218
- package/src/orchestrate/prisma/orchestratePrismaSchemaReview.ts +220 -220
- package/src/orchestrate/prisma/programmers/AutoBeDatabaseAuthorizationProgrammer.ts +86 -86
- package/src/orchestrate/prisma/programmers/AutoBeDatabaseAuthorizationReviewProgrammer.ts +103 -103
- package/src/orchestrate/prisma/programmers/AutoBeDatabaseComponentProgrammer.ts +80 -80
- package/src/orchestrate/prisma/programmers/AutoBeDatabaseComponentReviewProgrammer.ts +168 -168
- package/src/orchestrate/prisma/programmers/AutoBeDatabaseGroupProgrammer.ts +63 -63
- package/src/orchestrate/prisma/programmers/AutoBeDatabaseGroupReviewProgrammer.ts +210 -210
- package/src/orchestrate/prisma/programmers/AutoBeDatabaseModelProgrammer.ts +57 -57
- package/src/orchestrate/prisma/programmers/AutoBeDatabaseSchemaProgrammer.ts +92 -92
- package/src/orchestrate/prisma/structures/IAutoBeDatabaseAuthorizationApplication.ts +147 -147
- package/src/orchestrate/prisma/structures/IAutoBeDatabaseAuthorizationReviewApplication.ts +153 -153
- package/src/orchestrate/prisma/structures/IAutoBeDatabaseComponentApplication.ts +142 -142
- package/src/orchestrate/prisma/structures/IAutoBeDatabaseComponentReviewApplication.ts +151 -151
- package/src/orchestrate/prisma/structures/IAutoBeDatabaseCorrectApplication.ts +157 -157
- package/src/orchestrate/prisma/structures/IAutoBeDatabaseGroupApplication.ts +117 -117
- package/src/orchestrate/prisma/structures/IAutoBeDatabaseGroupReviewApplication.ts +154 -154
- package/src/orchestrate/prisma/structures/IAutoBeDatabaseSchemaApplication.ts +144 -144
- package/src/orchestrate/prisma/structures/IAutoBeDatabaseSchemaReviewApplication.ts +138 -138
- package/src/orchestrate/realize/histories/transformRealizeAuthorizationCorrectHistory.ts +89 -89
- package/src/orchestrate/realize/histories/transformRealizeAuthorizationWriteHistory.ts +45 -45
- package/src/orchestrate/realize/histories/transformRealizeCollectorCorrectHistory.ts +137 -137
- package/src/orchestrate/realize/histories/transformRealizeCollectorPlanHistory.ts +64 -64
- package/src/orchestrate/realize/histories/transformRealizeCollectorWriteHistory.ts +147 -147
- package/src/orchestrate/realize/histories/transformRealizeCorrectCastingHistory.ts +69 -69
- package/src/orchestrate/realize/histories/transformRealizeOperationCorrectHistory.ts +94 -94
- package/src/orchestrate/realize/histories/transformRealizeOperationWriteHistory.ts +127 -127
- package/src/orchestrate/realize/histories/transformRealizeTransformerCorrectHistory.ts +147 -147
- package/src/orchestrate/realize/histories/transformRealizeTransformerPlanHistory.ts +61 -61
- package/src/orchestrate/realize/histories/transformRealizeTransformerWriteHistory.ts +133 -133
- package/src/orchestrate/realize/histories/transformRealizeWriteMembershipHistory.ts +30 -30
- package/src/orchestrate/realize/index.ts +3 -3
- package/src/orchestrate/realize/internal/orchestrateRealizeCorrectCasting.ts +444 -444
- package/src/orchestrate/realize/internal/orchestrateRealizeCorrectOverall.ts +449 -449
- package/src/orchestrate/realize/orchestrateRealize.ts +143 -143
- package/src/orchestrate/realize/orchestrateRealizeAuthorizationCorrect.ts +207 -207
- package/src/orchestrate/realize/orchestrateRealizeAuthorizationWrite.ts +209 -209
- package/src/orchestrate/realize/orchestrateRealizeCollector.ts +41 -41
- package/src/orchestrate/realize/orchestrateRealizeCollectorCorrectCasting.ts +43 -43
- package/src/orchestrate/realize/orchestrateRealizeCollectorCorrectOverall.ts +157 -157
- package/src/orchestrate/realize/orchestrateRealizeCollectorPlan.ts +264 -264
- package/src/orchestrate/realize/orchestrateRealizeCollectorWrite.ts +225 -225
- package/src/orchestrate/realize/orchestrateRealizeOperation.ts +48 -48
- package/src/orchestrate/realize/orchestrateRealizeOperationCorrectCasting.ts +69 -69
- package/src/orchestrate/realize/orchestrateRealizeOperationCorrectOverall.ts +173 -173
- package/src/orchestrate/realize/orchestrateRealizeOperationWrite.ts +262 -262
- package/src/orchestrate/realize/orchestrateRealizeTransformer.ts +41 -41
- package/src/orchestrate/realize/orchestrateRealizeTransformerCorrectCasting.ts +38 -38
- package/src/orchestrate/realize/orchestrateRealizeTransformerCorrectOverall.ts +160 -160
- package/src/orchestrate/realize/orchestrateRealizeTransformerPlan.ts +254 -254
- package/src/orchestrate/realize/orchestrateRealizeTransformerWrite.ts +226 -226
- package/src/orchestrate/realize/programmers/AutoBeRealizeCollectorProgrammer.ts +424 -424
- package/src/orchestrate/realize/programmers/AutoBeRealizeOperationProgrammer.ts +409 -409
- package/src/orchestrate/realize/programmers/AutoBeRealizeTransformerProgrammer.ts +451 -451
- package/src/orchestrate/realize/programmers/compileRealizeFiles.ts +65 -65
- package/src/orchestrate/realize/structures/IAutoBeRealizeAuthorizationCorrectApplication.ts +119 -119
- package/src/orchestrate/realize/structures/IAutoBeRealizeAuthorizationWriteApplication.ts +167 -167
- package/src/orchestrate/realize/structures/IAutoBeRealizeCollectorCorrectApplication.ts +191 -191
- package/src/orchestrate/realize/structures/IAutoBeRealizeCollectorPlanApplication.ts +177 -177
- package/src/orchestrate/realize/structures/IAutoBeRealizeCollectorWriteApplication.ts +207 -207
- package/src/orchestrate/realize/structures/IAutoBeRealizeFunctionFailure.ts +11 -11
- package/src/orchestrate/realize/structures/IAutoBeRealizeOperationCorrectApplication.ts +134 -134
- package/src/orchestrate/realize/structures/IAutoBeRealizeOperationWriteApplication.ts +138 -138
- package/src/orchestrate/realize/structures/IAutoBeRealizeScenarioResult.ts +32 -32
- package/src/orchestrate/realize/structures/IAutoBeRealizeTransformerCorrectApplication.ts +248 -248
- package/src/orchestrate/realize/structures/IAutoBeRealizeTransformerPlanApplication.ts +150 -150
- package/src/orchestrate/realize/structures/IAutoBeRealizeTransformerWriteApplication.ts +278 -278
- package/src/orchestrate/realize/utils/AuthorizationFileSystem.ts +10 -10
- package/src/orchestrate/realize/utils/AutoBeRealizeAuthorizationFileSystem.ts +9 -9
- package/src/orchestrate/realize/utils/AutoBeRealizeAuthorizationReplaceImport.ts +62 -62
- package/src/orchestrate/realize/utils/InternalFileSystem.ts +12 -12
- package/src/orchestrate/realize/utils/ProviderFileSystem.ts +4 -4
- package/src/orchestrate/realize/utils/filterDiagnostics.ts +25 -25
- package/src/orchestrate/realize/utils/generateTS2339Hints.ts +54 -54
- package/src/orchestrate/realize/utils/getRealizeWriteImportStatements.ts +42 -42
- package/src/orchestrate/realize/utils/getRealizeWriteInputType.ts +88 -88
- package/src/orchestrate/realize/utils/printErrorHints.ts +54 -54
- package/src/orchestrate/test/compile/getTestArtifacts.ts +124 -124
- package/src/orchestrate/test/compile/getTestExternalDeclarations.ts +39 -39
- package/src/orchestrate/test/compile/getTestImportStatements.ts +27 -27
- package/src/orchestrate/test/experimental/orchestrateTestCorrect.ast +237 -237
- package/src/orchestrate/test/experimental/orchestrateTestWrite.ast +322 -322
- package/src/orchestrate/test/experimental/transformTestCorrectHistories.ast +52 -52
- package/src/orchestrate/test/histories/transformTestAuthorizeWriteHistory.ts +80 -80
- package/src/orchestrate/test/histories/transformTestCorrectOverallHistory.ts +116 -116
- package/src/orchestrate/test/histories/transformTestGenerationWriteHistory.ts +118 -118
- package/src/orchestrate/test/histories/transformTestOperationWriteHistory.ts +287 -287
- package/src/orchestrate/test/histories/transformTestPrepareWriteHistory.ts +95 -95
- package/src/orchestrate/test/histories/transformTestScenarioHistory.ts +120 -120
- package/src/orchestrate/test/histories/transformTestScenarioReviewHistory.ts +99 -99
- package/src/orchestrate/test/histories/transformTestValidateEvent.ts +11 -11
- package/src/orchestrate/test/index.ts +5 -5
- package/src/orchestrate/test/internal/orchestrateTestCorrectCasting.ts +96 -96
- package/src/orchestrate/test/internal/orchestrateTestCorrectOverall.ts +219 -219
- package/src/orchestrate/test/internal/orchestrateTestCorrectRequest.ts +206 -206
- package/src/orchestrate/test/orchestrateTest.ts +161 -161
- package/src/orchestrate/test/orchestrateTestAuthorize.ts +125 -125
- package/src/orchestrate/test/orchestrateTestAuthorizeWrite.ts +263 -263
- package/src/orchestrate/test/orchestrateTestGenerate.ts +121 -121
- package/src/orchestrate/test/orchestrateTestGenerateWrite.ts +211 -211
- package/src/orchestrate/test/orchestrateTestOperation.ts +133 -133
- package/src/orchestrate/test/orchestrateTestOperationWrite.ts +221 -221
- package/src/orchestrate/test/orchestrateTestPrepare.ts +117 -117
- package/src/orchestrate/test/orchestrateTestPrepareWrite.ts +264 -264
- package/src/orchestrate/test/orchestrateTestScenario.ts +290 -290
- package/src/orchestrate/test/orchestrateTestScenarioReview.ts +262 -262
- package/src/orchestrate/test/programmers/AutoBeTestAuthorizeProgrammer.ts +149 -149
- package/src/orchestrate/test/programmers/AutoBeTestFunctionProgrammer.ts +90 -90
- package/src/orchestrate/test/programmers/AutoBeTestGenerateProgrammer.ts +170 -170
- package/src/orchestrate/test/programmers/AutoBeTestOperationProgrammer.ts +168 -168
- package/src/orchestrate/test/programmers/AutoBeTestPrepareProgrammer.ts +261 -261
- package/src/orchestrate/test/programmers/AutoBeTestScenarioProgrammer.ts +316 -316
- package/src/orchestrate/test/structures/IAutoBeTestArtifacts.ts +8 -8
- package/src/orchestrate/test/structures/IAutoBeTestAuthorizationWriteApplication.ts +113 -113
- package/src/orchestrate/test/structures/IAutoBeTestAuthorizeWriteResult.ts +10 -10
- package/src/orchestrate/test/structures/IAutoBeTestCorrectOverallApplication.ts +134 -134
- package/src/orchestrate/test/structures/IAutoBeTestCorrectRequestApplication.ts +152 -152
- package/src/orchestrate/test/structures/IAutoBeTestFunction.ts +10 -10
- package/src/orchestrate/test/structures/IAutoBeTestFunctionFailure.ts +10 -10
- package/src/orchestrate/test/structures/IAutoBeTestGenerateProcedure.ts +15 -15
- package/src/orchestrate/test/structures/IAutoBeTestGenerationWriteApplication.ts +145 -145
- package/src/orchestrate/test/structures/IAutoBeTestOperationProcedure.ts +17 -17
- package/src/orchestrate/test/structures/IAutoBeTestOperationWriteApplication.ts +162 -162
- package/src/orchestrate/test/structures/IAutoBeTestPrepareCorrectOverallApplication.ts +194 -194
- package/src/orchestrate/test/structures/IAutoBeTestPrepareProcedure.ts +8 -8
- package/src/orchestrate/test/structures/IAutoBeTestPrepareWriteApplication.ts +147 -147
- package/src/orchestrate/test/structures/IAutoBeTestProcedure.ts +10 -10
- package/src/orchestrate/test/structures/IAutoBeTestScenarioApplication.ts +105 -105
- package/src/orchestrate/test/structures/IAutoBeTestScenarioArtifacts.ts +8 -8
- package/src/orchestrate/test/structures/IAutoBeTestScenarioAuthorizationActor.ts +7 -7
- package/src/orchestrate/test/structures/IAutoBeTestScenarioReviewApplication.ts +133 -133
- package/src/orchestrate/test/utils/getPrerequisites.ts +51 -51
- package/src/orchestrate/test/utils/getReferenceIds.ts +26 -26
- package/src/orchestrate/test/utils/insertScriptToTestResult.ts +14 -14
- package/src/structures/IAutoBeConfig.ts +110 -110
- package/src/structures/IAutoBeOrchestrateHistory.ts +44 -44
- package/src/structures/IAutoBeProps.ts +102 -102
- package/src/structures/IAutoBeVendor.ts +113 -113
- package/src/utils/AutoBePreliminaryExhaustedError.ts +30 -30
- package/src/utils/AutoBeTimeoutError.ts +35 -35
- package/src/utils/EmbeddingProvider.ts +4 -4
- package/src/utils/LocalEmbeddingProvider.ts +145 -145
- package/src/utils/RAGRetrieval.ts +411 -411
- package/src/utils/TimedConversation.ts +125 -125
- package/src/utils/backoffRetry.ts +169 -169
- package/src/utils/divideArray.ts +35 -35
- package/src/utils/emplaceMap.ts +31 -31
- package/src/utils/executeCachedBatch.ts +67 -67
- package/src/utils/forceRetry.ts +15 -15
- package/src/utils/getEmbedder.ts +16 -16
- package/src/utils/parseTextFunctionCall.ts +437 -437
- package/src/utils/predicateStateMessage.ts +131 -131
- package/src/utils/validateEmptyCode.ts +73 -73
- package/src/utils/validateEnglishOnly.ts +224 -224
- package/README.md +0 -261
|
@@ -1,316 +1,316 @@
|
|
|
1
|
-
import {
|
|
2
|
-
AutoBeInterfaceAuthorization,
|
|
3
|
-
AutoBeOpenApi,
|
|
4
|
-
AutoBeTestScenario,
|
|
5
|
-
} from "@autobe/interface";
|
|
6
|
-
import {
|
|
7
|
-
AutoBeOpenApiEndpointComparator,
|
|
8
|
-
MapUtil,
|
|
9
|
-
StringUtil,
|
|
10
|
-
} from "@autobe/utils";
|
|
11
|
-
import { HashMap, Pair, Singleton } from "tstl";
|
|
12
|
-
import { IValidation } from "typia";
|
|
13
|
-
|
|
14
|
-
import { IAutoBeTestScenarioAuthorizationActor } from "../structures/IAutoBeTestScenarioAuthorizationActor";
|
|
15
|
-
|
|
16
|
-
export namespace AutoBeTestScenarioProgrammer {
|
|
17
|
-
/**
|
|
18
|
-
* Create a HashMap associating endpoints with operations.
|
|
19
|
-
*
|
|
20
|
-
* @param operations - Array of operations to associate
|
|
21
|
-
* @returns HashMap with endpoint as key and operation as value
|
|
22
|
-
*/
|
|
23
|
-
export const associate = (
|
|
24
|
-
operations: AutoBeOpenApi.IOperation[],
|
|
25
|
-
): HashMap<AutoBeOpenApi.IEndpoint, AutoBeOpenApi.IOperation> =>
|
|
26
|
-
new HashMap<AutoBeOpenApi.IEndpoint, AutoBeOpenApi.IOperation>(
|
|
27
|
-
operations.map(
|
|
28
|
-
(op) =>
|
|
29
|
-
new Pair(
|
|
30
|
-
{
|
|
31
|
-
path: op.path,
|
|
32
|
-
method: op.method,
|
|
33
|
-
},
|
|
34
|
-
op,
|
|
35
|
-
),
|
|
36
|
-
),
|
|
37
|
-
AutoBeOpenApiEndpointComparator.hashCode,
|
|
38
|
-
AutoBeOpenApiEndpointComparator.equals,
|
|
39
|
-
);
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* Fulfill test scenario with missing authentication dependencies.
|
|
43
|
-
*
|
|
44
|
-
* Automatically adds missing authentication operations (join/login) to the
|
|
45
|
-
* scenario's dependencies based on authorization actor requirements.
|
|
46
|
-
*
|
|
47
|
-
* Authentication correction rules:
|
|
48
|
-
*
|
|
49
|
-
* - Single actor: Adds join operation if missing
|
|
50
|
-
* - Multiple actors: Adds join + login operations for each actor if missing
|
|
51
|
-
*
|
|
52
|
-
* This function mutates the scenario by prepending auth dependencies to
|
|
53
|
-
* ensure they execute before all other operations (correct execution order).
|
|
54
|
-
*
|
|
55
|
-
* Duplicate prevention: Tracks existing join/login operations in dependencies
|
|
56
|
-
* to avoid adding them twice.
|
|
57
|
-
*
|
|
58
|
-
* @param props - Fulfillment configuration
|
|
59
|
-
* @param props.dict - Endpoint to operation lookup map
|
|
60
|
-
* @param props.authorizations - Available authorization configurations
|
|
61
|
-
* @param props.operation - Target operation being tested
|
|
62
|
-
* @param props.scenario - Scenario to fulfill (will be mutated)
|
|
63
|
-
*/
|
|
64
|
-
export const fulfill = (props: {
|
|
65
|
-
dict: HashMap<AutoBeOpenApi.IEndpoint, AutoBeOpenApi.IOperation>;
|
|
66
|
-
authorizations: AutoBeInterfaceAuthorization[];
|
|
67
|
-
operation: AutoBeOpenApi.IOperation;
|
|
68
|
-
scenario: AutoBeTestScenario;
|
|
69
|
-
}): void => {
|
|
70
|
-
// Build map of all authorization actors with their join/login operations
|
|
71
|
-
const entireRoles: Map<string, IAutoBeTestScenarioAuthorizationActor> =
|
|
72
|
-
new Map();
|
|
73
|
-
for (const authorization of props.authorizations) {
|
|
74
|
-
for (const op of authorization.operations) {
|
|
75
|
-
if (op.authorizationType === null) continue;
|
|
76
|
-
const value: IAutoBeTestScenarioAuthorizationActor = MapUtil.take(
|
|
77
|
-
entireRoles,
|
|
78
|
-
authorization.name,
|
|
79
|
-
() => ({
|
|
80
|
-
name: authorization.name,
|
|
81
|
-
join: null,
|
|
82
|
-
login: null,
|
|
83
|
-
}),
|
|
84
|
-
);
|
|
85
|
-
if (op.authorizationType === "join") value.join = op;
|
|
86
|
-
else if (op.authorizationType === "login") value.login = op;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
// Gather authorization actors required by operation and its dependencies
|
|
91
|
-
const localRoles: Map<string, IAutoBeTestScenarioAuthorizationActor> =
|
|
92
|
-
new Map();
|
|
93
|
-
|
|
94
|
-
// Add operation's authorization actor
|
|
95
|
-
if (props.operation.authorizationActor !== null) {
|
|
96
|
-
MapUtil.take(localRoles, props.operation.authorizationActor, () => ({
|
|
97
|
-
name: props.operation.authorizationActor!,
|
|
98
|
-
join: null,
|
|
99
|
-
login: null,
|
|
100
|
-
}));
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
// Check existing dependencies to track what's already included
|
|
104
|
-
props.scenario.dependencies.forEach((d) => {
|
|
105
|
-
if (props.dict.has(d.endpoint)) {
|
|
106
|
-
const depOperation: AutoBeOpenApi.IOperation = props.dict.get(
|
|
107
|
-
d.endpoint,
|
|
108
|
-
);
|
|
109
|
-
|
|
110
|
-
// Track non-auth operation actors
|
|
111
|
-
if (depOperation.authorizationActor !== null) {
|
|
112
|
-
MapUtil.take(localRoles, depOperation.authorizationActor, () => ({
|
|
113
|
-
name: depOperation.authorizationActor!,
|
|
114
|
-
join: null,
|
|
115
|
-
login: null,
|
|
116
|
-
}));
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
// Track existing auth operations (join/login)
|
|
120
|
-
if (depOperation.authorizationType !== null) {
|
|
121
|
-
const actor = depOperation.authorizationActor;
|
|
122
|
-
if (actor !== null) {
|
|
123
|
-
const role = MapUtil.take(localRoles, actor, () => ({
|
|
124
|
-
name: actor,
|
|
125
|
-
join: null,
|
|
126
|
-
login: null,
|
|
127
|
-
}));
|
|
128
|
-
if (depOperation.authorizationType === "join") {
|
|
129
|
-
role.join = depOperation;
|
|
130
|
-
} else if (depOperation.authorizationType === "login") {
|
|
131
|
-
role.login = depOperation;
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
});
|
|
137
|
-
|
|
138
|
-
// Collect authentication dependencies to prepend
|
|
139
|
-
const authDeps: AutoBeTestScenario["dependencies"] = [];
|
|
140
|
-
|
|
141
|
-
// Single actor case - add join operation only
|
|
142
|
-
if (localRoles.size === 1) {
|
|
143
|
-
const actor: IAutoBeTestScenarioAuthorizationActor = localRoles
|
|
144
|
-
.values()
|
|
145
|
-
.next().value!;
|
|
146
|
-
if (actor.join === null) {
|
|
147
|
-
const joinOperation: AutoBeOpenApi.IOperation | null =
|
|
148
|
-
entireRoles.get(actor.name)?.join ?? null;
|
|
149
|
-
if (joinOperation === null)
|
|
150
|
-
throw new Error(
|
|
151
|
-
`Authorization actor '${actor.name}' requires join operation, but none is configured in authorization settings`,
|
|
152
|
-
);
|
|
153
|
-
|
|
154
|
-
authDeps.push({
|
|
155
|
-
endpoint: {
|
|
156
|
-
method: joinOperation.method,
|
|
157
|
-
path: joinOperation.path,
|
|
158
|
-
},
|
|
159
|
-
purpose: StringUtil.trim`
|
|
160
|
-
Essential authentication prerequisite:
|
|
161
|
-
This join operation (${joinOperation.method} ${joinOperation.path}) must be executed before any operations requiring '${actor.name}' actor authorization.
|
|
162
|
-
It establishes the necessary user account and authentication context for the '${actor.name}' actor, enabling subsequent API calls that depend on this specific authorization level.
|
|
163
|
-
Without this join operation, the main scenario endpoint and its dependencies will fail due to insufficient authentication credentials.
|
|
164
|
-
`,
|
|
165
|
-
});
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
// Multiple actors case - add both join and login operations
|
|
170
|
-
if (localRoles.size > 1) {
|
|
171
|
-
for (const role of localRoles.values()) {
|
|
172
|
-
if (role.join === null) {
|
|
173
|
-
const joinOperation: AutoBeOpenApi.IOperation | null =
|
|
174
|
-
entireRoles.get(role.name)?.join ?? null;
|
|
175
|
-
if (joinOperation === null)
|
|
176
|
-
throw new Error(
|
|
177
|
-
`Authorization actor '${role.name}' requires join operation for multi-actor scenarios, but none is configured in authorization settings`,
|
|
178
|
-
);
|
|
179
|
-
|
|
180
|
-
authDeps.push({
|
|
181
|
-
endpoint: {
|
|
182
|
-
path: joinOperation.path,
|
|
183
|
-
method: joinOperation.method,
|
|
184
|
-
},
|
|
185
|
-
purpose: StringUtil.trim`
|
|
186
|
-
Multi-actor authentication setup:
|
|
187
|
-
This join operation (${joinOperation.method} ${joinOperation.path}) is required to establish a '${role.name}' actor user account in the system.
|
|
188
|
-
This scenario involves multiple authorization actors, requiring separate user accounts for each actor to properly test cross-actor interactions and authorization boundaries.
|
|
189
|
-
The join operation creates the foundational user identity that will be used throughout the test scenario for '${role.name}' specific operations.
|
|
190
|
-
This join operation is required for the '${role.name}' actor authentication.
|
|
191
|
-
`,
|
|
192
|
-
});
|
|
193
|
-
}
|
|
194
|
-
if (role.login === null) {
|
|
195
|
-
const loginOperation: AutoBeOpenApi.IOperation | null =
|
|
196
|
-
entireRoles.get(role.name)?.login ?? null;
|
|
197
|
-
if (loginOperation === null)
|
|
198
|
-
throw new Error(
|
|
199
|
-
`Authorization actor '${role.name}' requires login operation for multi-actor scenarios, but none is configured in authorization settings`,
|
|
200
|
-
);
|
|
201
|
-
|
|
202
|
-
authDeps.push({
|
|
203
|
-
endpoint: {
|
|
204
|
-
path: loginOperation.path,
|
|
205
|
-
method: loginOperation.method,
|
|
206
|
-
},
|
|
207
|
-
purpose: StringUtil.trim`
|
|
208
|
-
Actor switching authentication:
|
|
209
|
-
This login operation (${loginOperation.method} ${loginOperation.path}) enables dynamic user actor switching during test execution for the '${role.name}' actor.
|
|
210
|
-
In scenarios with multiple actors, the test agent needs to authenticate as different users to simulate real-world multi-user interactions.
|
|
211
|
-
This login operation ensures proper session management and authorization context switching, allowing the test to validate permissions, access controls, and business logic that span across different user actors within a single test scenario.
|
|
212
|
-
This login operation may be required for user actor swapping between multiple actors.
|
|
213
|
-
`,
|
|
214
|
-
});
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
// Prepend authentication dependencies to ensure they execute first
|
|
220
|
-
props.scenario.dependencies = [...authDeps, ...props.scenario.dependencies];
|
|
221
|
-
};
|
|
222
|
-
|
|
223
|
-
/**
|
|
224
|
-
* Validate test scenario complete request.
|
|
225
|
-
*
|
|
226
|
-
* Validates:
|
|
227
|
-
*
|
|
228
|
-
* - Scenario endpoint matches target operation
|
|
229
|
-
* - All dependency endpoints exist in document operations
|
|
230
|
-
* - No self-referencing dependencies (operation depending on itself)
|
|
231
|
-
*
|
|
232
|
-
* Note: This function performs pure validation only. Call fulfill() before
|
|
233
|
-
* validation to ensure authentication dependencies are present.
|
|
234
|
-
*
|
|
235
|
-
* @param props - Validation configuration
|
|
236
|
-
*/
|
|
237
|
-
export const validate = (props: {
|
|
238
|
-
errors: IValidation.IError[];
|
|
239
|
-
dict: HashMap<AutoBeOpenApi.IEndpoint, AutoBeOpenApi.IOperation>;
|
|
240
|
-
operation: AutoBeOpenApi.IOperation;
|
|
241
|
-
scenario: AutoBeTestScenario;
|
|
242
|
-
accessor: string;
|
|
243
|
-
}): void => {
|
|
244
|
-
const table: Singleton<string> = new Singleton(() => {
|
|
245
|
-
const operations: AutoBeOpenApi.IOperation[] = props.dict
|
|
246
|
-
.toJSON()
|
|
247
|
-
.map((pair) => pair.second)
|
|
248
|
-
.filter(
|
|
249
|
-
(o) =>
|
|
250
|
-
AutoBeOpenApiEndpointComparator.equals(o, props.operation) ===
|
|
251
|
-
false,
|
|
252
|
-
);
|
|
253
|
-
return [
|
|
254
|
-
"",
|
|
255
|
-
"You must select one of the endpoints below:",
|
|
256
|
-
"",
|
|
257
|
-
" method | path ",
|
|
258
|
-
"--------|------",
|
|
259
|
-
...operations.map((op) => ` \`${op.method}\` | \`${op.path}\` `),
|
|
260
|
-
].join("\n");
|
|
261
|
-
});
|
|
262
|
-
|
|
263
|
-
if (
|
|
264
|
-
AutoBeOpenApiEndpointComparator.equals(
|
|
265
|
-
props.scenario.endpoint,
|
|
266
|
-
props.operation,
|
|
267
|
-
) === false
|
|
268
|
-
)
|
|
269
|
-
props.errors.push({
|
|
270
|
-
path: `${props.accessor}.endpoint`,
|
|
271
|
-
expected: "AutoBeOpenApi.IEndpoint",
|
|
272
|
-
value: props.scenario.endpoint,
|
|
273
|
-
description: StringUtil.trim`
|
|
274
|
-
The scenario endpoint must exactly match the target operation endpoint being tested.
|
|
275
|
-
|
|
276
|
-
- Expected endpoint: (method: ${props.operation.method}, path: ${props.operation.path})
|
|
277
|
-
- Received endpoint: (method: ${props.scenario.endpoint.method}, path: ${props.scenario.endpoint.path})
|
|
278
|
-
`,
|
|
279
|
-
});
|
|
280
|
-
props.scenario.dependencies.forEach((dep, j) => {
|
|
281
|
-
if (props.dict.has(dep.endpoint) === false)
|
|
282
|
-
props.errors.push({
|
|
283
|
-
path: `${props.accessor}.dependencies[${j}].endpoint`,
|
|
284
|
-
expected: "AutoBeOpenApi.IEndpoint",
|
|
285
|
-
value: dep.endpoint,
|
|
286
|
-
description: StringUtil.trim`
|
|
287
|
-
Dependency endpoint does not exist in the API document.
|
|
288
|
-
|
|
289
|
-
All dependencies must reference valid operations defined in the OpenAPI specification.
|
|
290
|
-
|
|
291
|
-
Invalid endpoint: ${dep.endpoint.method} ${dep.endpoint.path}
|
|
292
|
-
|
|
293
|
-
${table.get()}
|
|
294
|
-
`,
|
|
295
|
-
});
|
|
296
|
-
else if (
|
|
297
|
-
AutoBeOpenApiEndpointComparator.equals(dep.endpoint, props.operation)
|
|
298
|
-
)
|
|
299
|
-
props.errors.push({
|
|
300
|
-
path: `${props.accessor}.dependencies[${j}].endpoint`,
|
|
301
|
-
expected: "AutoBeOpenApi.IEndpoint",
|
|
302
|
-
value: dep.endpoint,
|
|
303
|
-
description: StringUtil.trim`
|
|
304
|
-
Scenario cannot depend on itself (circular dependency detected).
|
|
305
|
-
|
|
306
|
-
Dependencies must reference different operations, not the operation being tested.
|
|
307
|
-
|
|
308
|
-
Remove this dependency or replace it with a different prerequisite operation.
|
|
309
|
-
|
|
310
|
-
- Current operation: (method: ${props.operation.method}, path: ${props.operation.path})
|
|
311
|
-
- Self-referencing dependency: (method: ${dep.endpoint.method}, path: ${dep.endpoint.path})
|
|
312
|
-
`,
|
|
313
|
-
});
|
|
314
|
-
});
|
|
315
|
-
};
|
|
316
|
-
}
|
|
1
|
+
import {
|
|
2
|
+
AutoBeInterfaceAuthorization,
|
|
3
|
+
AutoBeOpenApi,
|
|
4
|
+
AutoBeTestScenario,
|
|
5
|
+
} from "@autobe/interface";
|
|
6
|
+
import {
|
|
7
|
+
AutoBeOpenApiEndpointComparator,
|
|
8
|
+
MapUtil,
|
|
9
|
+
StringUtil,
|
|
10
|
+
} from "@autobe/utils";
|
|
11
|
+
import { HashMap, Pair, Singleton } from "tstl";
|
|
12
|
+
import { IValidation } from "typia";
|
|
13
|
+
|
|
14
|
+
import { IAutoBeTestScenarioAuthorizationActor } from "../structures/IAutoBeTestScenarioAuthorizationActor";
|
|
15
|
+
|
|
16
|
+
export namespace AutoBeTestScenarioProgrammer {
|
|
17
|
+
/**
|
|
18
|
+
* Create a HashMap associating endpoints with operations.
|
|
19
|
+
*
|
|
20
|
+
* @param operations - Array of operations to associate
|
|
21
|
+
* @returns HashMap with endpoint as key and operation as value
|
|
22
|
+
*/
|
|
23
|
+
export const associate = (
|
|
24
|
+
operations: AutoBeOpenApi.IOperation[],
|
|
25
|
+
): HashMap<AutoBeOpenApi.IEndpoint, AutoBeOpenApi.IOperation> =>
|
|
26
|
+
new HashMap<AutoBeOpenApi.IEndpoint, AutoBeOpenApi.IOperation>(
|
|
27
|
+
operations.map(
|
|
28
|
+
(op) =>
|
|
29
|
+
new Pair(
|
|
30
|
+
{
|
|
31
|
+
path: op.path,
|
|
32
|
+
method: op.method,
|
|
33
|
+
},
|
|
34
|
+
op,
|
|
35
|
+
),
|
|
36
|
+
),
|
|
37
|
+
AutoBeOpenApiEndpointComparator.hashCode,
|
|
38
|
+
AutoBeOpenApiEndpointComparator.equals,
|
|
39
|
+
);
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Fulfill test scenario with missing authentication dependencies.
|
|
43
|
+
*
|
|
44
|
+
* Automatically adds missing authentication operations (join/login) to the
|
|
45
|
+
* scenario's dependencies based on authorization actor requirements.
|
|
46
|
+
*
|
|
47
|
+
* Authentication correction rules:
|
|
48
|
+
*
|
|
49
|
+
* - Single actor: Adds join operation if missing
|
|
50
|
+
* - Multiple actors: Adds join + login operations for each actor if missing
|
|
51
|
+
*
|
|
52
|
+
* This function mutates the scenario by prepending auth dependencies to
|
|
53
|
+
* ensure they execute before all other operations (correct execution order).
|
|
54
|
+
*
|
|
55
|
+
* Duplicate prevention: Tracks existing join/login operations in dependencies
|
|
56
|
+
* to avoid adding them twice.
|
|
57
|
+
*
|
|
58
|
+
* @param props - Fulfillment configuration
|
|
59
|
+
* @param props.dict - Endpoint to operation lookup map
|
|
60
|
+
* @param props.authorizations - Available authorization configurations
|
|
61
|
+
* @param props.operation - Target operation being tested
|
|
62
|
+
* @param props.scenario - Scenario to fulfill (will be mutated)
|
|
63
|
+
*/
|
|
64
|
+
export const fulfill = (props: {
|
|
65
|
+
dict: HashMap<AutoBeOpenApi.IEndpoint, AutoBeOpenApi.IOperation>;
|
|
66
|
+
authorizations: AutoBeInterfaceAuthorization[];
|
|
67
|
+
operation: AutoBeOpenApi.IOperation;
|
|
68
|
+
scenario: AutoBeTestScenario;
|
|
69
|
+
}): void => {
|
|
70
|
+
// Build map of all authorization actors with their join/login operations
|
|
71
|
+
const entireRoles: Map<string, IAutoBeTestScenarioAuthorizationActor> =
|
|
72
|
+
new Map();
|
|
73
|
+
for (const authorization of props.authorizations) {
|
|
74
|
+
for (const op of authorization.operations) {
|
|
75
|
+
if (op.authorizationType === null) continue;
|
|
76
|
+
const value: IAutoBeTestScenarioAuthorizationActor = MapUtil.take(
|
|
77
|
+
entireRoles,
|
|
78
|
+
authorization.name,
|
|
79
|
+
() => ({
|
|
80
|
+
name: authorization.name,
|
|
81
|
+
join: null,
|
|
82
|
+
login: null,
|
|
83
|
+
}),
|
|
84
|
+
);
|
|
85
|
+
if (op.authorizationType === "join") value.join = op;
|
|
86
|
+
else if (op.authorizationType === "login") value.login = op;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// Gather authorization actors required by operation and its dependencies
|
|
91
|
+
const localRoles: Map<string, IAutoBeTestScenarioAuthorizationActor> =
|
|
92
|
+
new Map();
|
|
93
|
+
|
|
94
|
+
// Add operation's authorization actor
|
|
95
|
+
if (props.operation.authorizationActor !== null) {
|
|
96
|
+
MapUtil.take(localRoles, props.operation.authorizationActor, () => ({
|
|
97
|
+
name: props.operation.authorizationActor!,
|
|
98
|
+
join: null,
|
|
99
|
+
login: null,
|
|
100
|
+
}));
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// Check existing dependencies to track what's already included
|
|
104
|
+
props.scenario.dependencies.forEach((d) => {
|
|
105
|
+
if (props.dict.has(d.endpoint)) {
|
|
106
|
+
const depOperation: AutoBeOpenApi.IOperation = props.dict.get(
|
|
107
|
+
d.endpoint,
|
|
108
|
+
);
|
|
109
|
+
|
|
110
|
+
// Track non-auth operation actors
|
|
111
|
+
if (depOperation.authorizationActor !== null) {
|
|
112
|
+
MapUtil.take(localRoles, depOperation.authorizationActor, () => ({
|
|
113
|
+
name: depOperation.authorizationActor!,
|
|
114
|
+
join: null,
|
|
115
|
+
login: null,
|
|
116
|
+
}));
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// Track existing auth operations (join/login)
|
|
120
|
+
if (depOperation.authorizationType !== null) {
|
|
121
|
+
const actor = depOperation.authorizationActor;
|
|
122
|
+
if (actor !== null) {
|
|
123
|
+
const role = MapUtil.take(localRoles, actor, () => ({
|
|
124
|
+
name: actor,
|
|
125
|
+
join: null,
|
|
126
|
+
login: null,
|
|
127
|
+
}));
|
|
128
|
+
if (depOperation.authorizationType === "join") {
|
|
129
|
+
role.join = depOperation;
|
|
130
|
+
} else if (depOperation.authorizationType === "login") {
|
|
131
|
+
role.login = depOperation;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
// Collect authentication dependencies to prepend
|
|
139
|
+
const authDeps: AutoBeTestScenario["dependencies"] = [];
|
|
140
|
+
|
|
141
|
+
// Single actor case - add join operation only
|
|
142
|
+
if (localRoles.size === 1) {
|
|
143
|
+
const actor: IAutoBeTestScenarioAuthorizationActor = localRoles
|
|
144
|
+
.values()
|
|
145
|
+
.next().value!;
|
|
146
|
+
if (actor.join === null) {
|
|
147
|
+
const joinOperation: AutoBeOpenApi.IOperation | null =
|
|
148
|
+
entireRoles.get(actor.name)?.join ?? null;
|
|
149
|
+
if (joinOperation === null)
|
|
150
|
+
throw new Error(
|
|
151
|
+
`Authorization actor '${actor.name}' requires join operation, but none is configured in authorization settings`,
|
|
152
|
+
);
|
|
153
|
+
|
|
154
|
+
authDeps.push({
|
|
155
|
+
endpoint: {
|
|
156
|
+
method: joinOperation.method,
|
|
157
|
+
path: joinOperation.path,
|
|
158
|
+
},
|
|
159
|
+
purpose: StringUtil.trim`
|
|
160
|
+
Essential authentication prerequisite:
|
|
161
|
+
This join operation (${joinOperation.method} ${joinOperation.path}) must be executed before any operations requiring '${actor.name}' actor authorization.
|
|
162
|
+
It establishes the necessary user account and authentication context for the '${actor.name}' actor, enabling subsequent API calls that depend on this specific authorization level.
|
|
163
|
+
Without this join operation, the main scenario endpoint and its dependencies will fail due to insufficient authentication credentials.
|
|
164
|
+
`,
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
// Multiple actors case - add both join and login operations
|
|
170
|
+
if (localRoles.size > 1) {
|
|
171
|
+
for (const role of localRoles.values()) {
|
|
172
|
+
if (role.join === null) {
|
|
173
|
+
const joinOperation: AutoBeOpenApi.IOperation | null =
|
|
174
|
+
entireRoles.get(role.name)?.join ?? null;
|
|
175
|
+
if (joinOperation === null)
|
|
176
|
+
throw new Error(
|
|
177
|
+
`Authorization actor '${role.name}' requires join operation for multi-actor scenarios, but none is configured in authorization settings`,
|
|
178
|
+
);
|
|
179
|
+
|
|
180
|
+
authDeps.push({
|
|
181
|
+
endpoint: {
|
|
182
|
+
path: joinOperation.path,
|
|
183
|
+
method: joinOperation.method,
|
|
184
|
+
},
|
|
185
|
+
purpose: StringUtil.trim`
|
|
186
|
+
Multi-actor authentication setup:
|
|
187
|
+
This join operation (${joinOperation.method} ${joinOperation.path}) is required to establish a '${role.name}' actor user account in the system.
|
|
188
|
+
This scenario involves multiple authorization actors, requiring separate user accounts for each actor to properly test cross-actor interactions and authorization boundaries.
|
|
189
|
+
The join operation creates the foundational user identity that will be used throughout the test scenario for '${role.name}' specific operations.
|
|
190
|
+
This join operation is required for the '${role.name}' actor authentication.
|
|
191
|
+
`,
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
if (role.login === null) {
|
|
195
|
+
const loginOperation: AutoBeOpenApi.IOperation | null =
|
|
196
|
+
entireRoles.get(role.name)?.login ?? null;
|
|
197
|
+
if (loginOperation === null)
|
|
198
|
+
throw new Error(
|
|
199
|
+
`Authorization actor '${role.name}' requires login operation for multi-actor scenarios, but none is configured in authorization settings`,
|
|
200
|
+
);
|
|
201
|
+
|
|
202
|
+
authDeps.push({
|
|
203
|
+
endpoint: {
|
|
204
|
+
path: loginOperation.path,
|
|
205
|
+
method: loginOperation.method,
|
|
206
|
+
},
|
|
207
|
+
purpose: StringUtil.trim`
|
|
208
|
+
Actor switching authentication:
|
|
209
|
+
This login operation (${loginOperation.method} ${loginOperation.path}) enables dynamic user actor switching during test execution for the '${role.name}' actor.
|
|
210
|
+
In scenarios with multiple actors, the test agent needs to authenticate as different users to simulate real-world multi-user interactions.
|
|
211
|
+
This login operation ensures proper session management and authorization context switching, allowing the test to validate permissions, access controls, and business logic that span across different user actors within a single test scenario.
|
|
212
|
+
This login operation may be required for user actor swapping between multiple actors.
|
|
213
|
+
`,
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
// Prepend authentication dependencies to ensure they execute first
|
|
220
|
+
props.scenario.dependencies = [...authDeps, ...props.scenario.dependencies];
|
|
221
|
+
};
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* Validate test scenario complete request.
|
|
225
|
+
*
|
|
226
|
+
* Validates:
|
|
227
|
+
*
|
|
228
|
+
* - Scenario endpoint matches target operation
|
|
229
|
+
* - All dependency endpoints exist in document operations
|
|
230
|
+
* - No self-referencing dependencies (operation depending on itself)
|
|
231
|
+
*
|
|
232
|
+
* Note: This function performs pure validation only. Call fulfill() before
|
|
233
|
+
* validation to ensure authentication dependencies are present.
|
|
234
|
+
*
|
|
235
|
+
* @param props - Validation configuration
|
|
236
|
+
*/
|
|
237
|
+
export const validate = (props: {
|
|
238
|
+
errors: IValidation.IError[];
|
|
239
|
+
dict: HashMap<AutoBeOpenApi.IEndpoint, AutoBeOpenApi.IOperation>;
|
|
240
|
+
operation: AutoBeOpenApi.IOperation;
|
|
241
|
+
scenario: AutoBeTestScenario;
|
|
242
|
+
accessor: string;
|
|
243
|
+
}): void => {
|
|
244
|
+
const table: Singleton<string> = new Singleton(() => {
|
|
245
|
+
const operations: AutoBeOpenApi.IOperation[] = props.dict
|
|
246
|
+
.toJSON()
|
|
247
|
+
.map((pair) => pair.second)
|
|
248
|
+
.filter(
|
|
249
|
+
(o) =>
|
|
250
|
+
AutoBeOpenApiEndpointComparator.equals(o, props.operation) ===
|
|
251
|
+
false,
|
|
252
|
+
);
|
|
253
|
+
return [
|
|
254
|
+
"",
|
|
255
|
+
"You must select one of the endpoints below:",
|
|
256
|
+
"",
|
|
257
|
+
" method | path ",
|
|
258
|
+
"--------|------",
|
|
259
|
+
...operations.map((op) => ` \`${op.method}\` | \`${op.path}\` `),
|
|
260
|
+
].join("\n");
|
|
261
|
+
});
|
|
262
|
+
|
|
263
|
+
if (
|
|
264
|
+
AutoBeOpenApiEndpointComparator.equals(
|
|
265
|
+
props.scenario.endpoint,
|
|
266
|
+
props.operation,
|
|
267
|
+
) === false
|
|
268
|
+
)
|
|
269
|
+
props.errors.push({
|
|
270
|
+
path: `${props.accessor}.endpoint`,
|
|
271
|
+
expected: "AutoBeOpenApi.IEndpoint",
|
|
272
|
+
value: props.scenario.endpoint,
|
|
273
|
+
description: StringUtil.trim`
|
|
274
|
+
The scenario endpoint must exactly match the target operation endpoint being tested.
|
|
275
|
+
|
|
276
|
+
- Expected endpoint: (method: ${props.operation.method}, path: ${props.operation.path})
|
|
277
|
+
- Received endpoint: (method: ${props.scenario.endpoint.method}, path: ${props.scenario.endpoint.path})
|
|
278
|
+
`,
|
|
279
|
+
});
|
|
280
|
+
props.scenario.dependencies.forEach((dep, j) => {
|
|
281
|
+
if (props.dict.has(dep.endpoint) === false)
|
|
282
|
+
props.errors.push({
|
|
283
|
+
path: `${props.accessor}.dependencies[${j}].endpoint`,
|
|
284
|
+
expected: "AutoBeOpenApi.IEndpoint",
|
|
285
|
+
value: dep.endpoint,
|
|
286
|
+
description: StringUtil.trim`
|
|
287
|
+
Dependency endpoint does not exist in the API document.
|
|
288
|
+
|
|
289
|
+
All dependencies must reference valid operations defined in the OpenAPI specification.
|
|
290
|
+
|
|
291
|
+
Invalid endpoint: ${dep.endpoint.method} ${dep.endpoint.path}
|
|
292
|
+
|
|
293
|
+
${table.get()}
|
|
294
|
+
`,
|
|
295
|
+
});
|
|
296
|
+
else if (
|
|
297
|
+
AutoBeOpenApiEndpointComparator.equals(dep.endpoint, props.operation)
|
|
298
|
+
)
|
|
299
|
+
props.errors.push({
|
|
300
|
+
path: `${props.accessor}.dependencies[${j}].endpoint`,
|
|
301
|
+
expected: "AutoBeOpenApi.IEndpoint",
|
|
302
|
+
value: dep.endpoint,
|
|
303
|
+
description: StringUtil.trim`
|
|
304
|
+
Scenario cannot depend on itself (circular dependency detected).
|
|
305
|
+
|
|
306
|
+
Dependencies must reference different operations, not the operation being tested.
|
|
307
|
+
|
|
308
|
+
Remove this dependency or replace it with a different prerequisite operation.
|
|
309
|
+
|
|
310
|
+
- Current operation: (method: ${props.operation.method}, path: ${props.operation.path})
|
|
311
|
+
- Self-referencing dependency: (method: ${dep.endpoint.method}, path: ${dep.endpoint.path})
|
|
312
|
+
`,
|
|
313
|
+
});
|
|
314
|
+
});
|
|
315
|
+
};
|
|
316
|
+
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { AutoBeOpenApi } from "@autobe/interface";
|
|
2
|
-
|
|
3
|
-
export interface IAutoBeTestArtifacts {
|
|
4
|
-
document: AutoBeOpenApi.IDocument;
|
|
5
|
-
sdk: Record<string, string>;
|
|
6
|
-
dto: Record<string, string>;
|
|
7
|
-
e2e: Record<string, string>;
|
|
8
|
-
}
|
|
1
|
+
import { AutoBeOpenApi } from "@autobe/interface";
|
|
2
|
+
|
|
3
|
+
export interface IAutoBeTestArtifacts {
|
|
4
|
+
document: AutoBeOpenApi.IDocument;
|
|
5
|
+
sdk: Record<string, string>;
|
|
6
|
+
dto: Record<string, string>;
|
|
7
|
+
e2e: Record<string, string>;
|
|
8
|
+
}
|