@quadnix/octo 0.0.30 → 0.2.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/LICENSE +661 -0
- package/README.md +117 -8
- package/dist/app.type.d.ts +277 -19
- package/dist/app.type.js +80 -9
- package/dist/app.type.js.map +1 -1
- package/dist/decorators/action.decorator.d.ts +10 -6
- package/dist/decorators/action.decorator.js +19 -6
- package/dist/decorators/action.decorator.js.map +1 -1
- package/dist/decorators/anchor.decorator.d.ts +12 -5
- package/dist/decorators/anchor.decorator.js +12 -5
- package/dist/decorators/anchor.decorator.js.map +1 -1
- package/dist/decorators/enable-hook.decorator.d.ts +1 -1
- package/dist/decorators/enable-hook.decorator.js +1 -1
- package/dist/decorators/factory.decorator.d.ts +18 -34
- package/dist/decorators/factory.decorator.js +18 -34
- package/dist/decorators/factory.decorator.js.map +1 -1
- package/dist/decorators/model.decorator.d.ts +4 -6
- package/dist/decorators/model.decorator.js +2 -7
- package/dist/decorators/model.decorator.js.map +1 -1
- package/dist/decorators/module.decorator.d.ts +16 -10
- package/dist/decorators/module.decorator.js +16 -10
- package/dist/decorators/module.decorator.js.map +1 -1
- package/dist/decorators/on-event.decorator.d.ts +7 -2
- package/dist/decorators/on-event.decorator.js +5 -0
- package/dist/decorators/on-event.decorator.js.map +1 -1
- package/dist/decorators/resource.decorator.d.ts +50 -1
- package/dist/decorators/resource.decorator.js +38 -1
- package/dist/decorators/resource.decorator.js.map +1 -1
- package/dist/decorators/validate.decorator.d.ts +15 -1
- package/dist/decorators/validate.decorator.js +15 -1
- package/dist/decorators/validate.decorator.js.map +1 -1
- package/dist/errors/container.error.d.ts +18 -0
- package/dist/errors/container.error.js +18 -0
- package/dist/errors/container.error.js.map +1 -1
- package/dist/errors/index.d.ts +1 -0
- package/dist/errors/index.js +1 -0
- package/dist/errors/index.js.map +1 -1
- package/dist/errors/module.error.d.ts +6 -0
- package/dist/errors/module.error.js +6 -0
- package/dist/errors/module.error.js.map +1 -1
- package/dist/errors/node.error.d.ts +56 -0
- package/dist/errors/node.error.js +56 -0
- package/dist/errors/node.error.js.map +1 -1
- package/dist/errors/schema.error.d.ts +14 -1
- package/dist/errors/schema.error.js +11 -1
- package/dist/errors/schema.error.js.map +1 -1
- package/dist/errors/terraform.error.d.ts +20 -0
- package/dist/errors/terraform.error.js +24 -0
- package/dist/errors/terraform.error.js.map +1 -0
- package/dist/errors/transaction.error.d.ts +93 -2
- package/dist/errors/transaction.error.js +83 -0
- package/dist/errors/transaction.error.js.map +1 -1
- package/dist/events/action.event.d.ts +8 -4
- package/dist/events/action.event.js +2 -4
- package/dist/events/action.event.js.map +1 -1
- package/dist/events/command.event.d.ts +43 -0
- package/dist/events/command.event.js +33 -0
- package/dist/events/command.event.js.map +1 -0
- package/dist/events/event.model.d.ts +26 -8
- package/dist/events/event.model.js +15 -7
- package/dist/events/event.model.js.map +1 -1
- package/dist/events/hook/commit.hook.event.d.ts +1 -7
- package/dist/events/hook/commit.hook.event.js +0 -6
- package/dist/events/hook/commit.hook.event.js.map +1 -1
- package/dist/events/hook/hook.event.d.ts +1 -3
- package/dist/events/hook/hook.event.js +0 -2
- package/dist/events/hook/hook.event.js.map +1 -1
- package/dist/events/hook/model.hook.event.d.ts +1 -7
- package/dist/events/hook/model.hook.event.js +0 -6
- package/dist/events/hook/model.hook.event.js.map +1 -1
- package/dist/events/hook/resource.hook.event.d.ts +1 -7
- package/dist/events/hook/resource.hook.event.js +0 -6
- package/dist/events/hook/resource.hook.event.js.map +1 -1
- package/dist/events/index.d.ts +5 -0
- package/dist/events/index.js +5 -0
- package/dist/events/index.js.map +1 -1
- package/dist/events/mode-result.event.d.ts +57 -0
- package/dist/events/mode-result.event.js +24 -0
- package/dist/events/mode-result.event.js.map +1 -0
- package/dist/events/mode.event.d.ts +61 -0
- package/dist/events/mode.event.js +32 -0
- package/dist/events/mode.event.js.map +1 -0
- package/dist/events/module.event.d.ts +7 -5
- package/dist/events/module.event.js +3 -4
- package/dist/events/module.event.js.map +1 -1
- package/dist/events/registration.event.d.ts +19 -15
- package/dist/events/registration.event.js +18 -14
- package/dist/events/registration.event.js.map +1 -1
- package/dist/events/serialization.event.d.ts +16 -13
- package/dist/events/serialization.event.js +15 -12
- package/dist/events/serialization.event.js.map +1 -1
- package/dist/events/state.event.d.ts +102 -0
- package/dist/events/state.event.js +69 -0
- package/dist/events/state.event.js.map +1 -0
- package/dist/events/terraform.event.d.ts +78 -0
- package/dist/events/terraform.event.js +55 -0
- package/dist/events/terraform.event.js.map +1 -0
- package/dist/events/transaction.event.d.ts +3 -40
- package/dist/events/transaction.event.js +1 -29
- package/dist/events/transaction.event.js.map +1 -1
- package/dist/functions/container/container.d.ts +54 -13
- package/dist/functions/container/container.js +64 -19
- package/dist/functions/container/container.js.map +1 -1
- package/dist/functions/container/test-container.d.ts +43 -29
- package/dist/functions/container/test-container.js +71 -43
- package/dist/functions/container/test-container.js.map +1 -1
- package/dist/functions/dependency/dependency.d.ts +84 -23
- package/dist/functions/dependency/dependency.js +84 -14
- package/dist/functions/dependency/dependency.js.map +1 -1
- package/dist/functions/diff/aggregate-resource-actions.d.ts +19 -0
- package/dist/functions/diff/aggregate-resource-actions.js +41 -0
- package/dist/functions/diff/aggregate-resource-actions.js.map +1 -0
- package/dist/functions/diff/diff-metadata.d.ts +21 -3
- package/dist/functions/diff/diff-metadata.js +18 -0
- package/dist/functions/diff/diff-metadata.js.map +1 -1
- package/dist/functions/diff/diff.d.ts +68 -7
- package/dist/functions/diff/diff.js +44 -3
- package/dist/functions/diff/diff.js.map +1 -1
- package/dist/functions/hook/commit.hook.d.ts +16 -1
- package/dist/functions/hook/commit.hook.js +21 -6
- package/dist/functions/hook/commit.hook.js.map +1 -1
- package/dist/functions/hook/model-action.hook.d.ts +16 -1
- package/dist/functions/hook/model-action.hook.js +21 -6
- package/dist/functions/hook/model-action.hook.js.map +1 -1
- package/dist/functions/hook/resource-action.hook.d.ts +16 -1
- package/dist/functions/hook/resource-action.hook.js +21 -6
- package/dist/functions/hook/resource-action.hook.js.map +1 -1
- package/dist/functions/node/node-action.abstract.d.ts +23 -2
- package/dist/functions/node/node-action.abstract.js +22 -8
- package/dist/functions/node/node-action.abstract.js.map +1 -1
- package/dist/functions/node/node.abstract.d.ts +56 -5
- package/dist/functions/node/node.abstract.js +106 -22
- package/dist/functions/node/node.abstract.js.map +1 -1
- package/dist/functions/node/node.interface.d.ts +3 -1
- package/dist/functions/schema/schema.d.ts +7 -0
- package/dist/functions/schema/schema.js +10 -1
- package/dist/functions/schema/schema.js.map +1 -1
- package/dist/index.d.ts +12 -6
- package/dist/index.js +9 -4
- package/dist/index.js.map +1 -1
- package/dist/index.type.d.ts +5 -0
- package/dist/index.type.js +2 -0
- package/dist/index.type.js.map +1 -0
- package/dist/main.d.ts +245 -14
- package/dist/main.js +377 -72
- package/dist/main.js.map +1 -1
- package/dist/models/account/account.model.d.ts +43 -7
- package/dist/models/account/account.model.js +56 -8
- package/dist/models/account/account.model.js.map +1 -1
- package/dist/models/account/account.schema.d.ts +13 -1
- package/dist/models/account/account.schema.js +12 -0
- package/dist/models/account/account.schema.js.map +1 -1
- package/dist/models/app/app.model.d.ts +13 -8
- package/dist/models/app/app.model.js +17 -32
- package/dist/models/app/app.model.js.map +1 -1
- package/dist/models/app/app.schema.d.ts +6 -0
- package/dist/models/app/app.schema.js +6 -0
- package/dist/models/app/app.schema.js.map +1 -1
- package/dist/models/deployment/deployment.model.d.ts +13 -1
- package/dist/models/deployment/deployment.model.js +16 -4
- package/dist/models/deployment/deployment.model.js.map +1 -1
- package/dist/models/deployment/deployment.schema.d.ts +6 -0
- package/dist/models/deployment/deployment.schema.js +6 -0
- package/dist/models/deployment/deployment.schema.js.map +1 -1
- package/dist/models/environment/environment.model.d.ts +15 -3
- package/dist/models/environment/environment.model.js +22 -10
- package/dist/models/environment/environment.model.js.map +1 -1
- package/dist/models/environment/environment.schema.d.ts +2 -0
- package/dist/models/environment/environment.schema.js +2 -0
- package/dist/models/environment/environment.schema.js.map +1 -1
- package/dist/models/execution/execution.model.d.ts +21 -3
- package/dist/models/execution/execution.model.js +47 -29
- package/dist/models/execution/execution.model.js.map +1 -1
- package/dist/models/execution/execution.schema.d.ts +11 -0
- package/dist/models/execution/execution.schema.js +11 -0
- package/dist/models/execution/execution.schema.js.map +1 -1
- package/dist/models/filesystem/filesystem.model.d.ts +27 -1
- package/dist/models/filesystem/filesystem.model.js +30 -4
- package/dist/models/filesystem/filesystem.model.js.map +1 -1
- package/dist/models/filesystem/filesystem.schema.d.ts +5 -0
- package/dist/models/filesystem/filesystem.schema.js +5 -0
- package/dist/models/filesystem/filesystem.schema.js.map +1 -1
- package/dist/models/image/image.model.d.ts +19 -5
- package/dist/models/image/image.model.js +25 -11
- package/dist/models/image/image.model.js.map +1 -1
- package/dist/models/image/image.schema.d.ts +8 -0
- package/dist/models/image/image.schema.js +8 -0
- package/dist/models/image/image.schema.js.map +1 -1
- package/dist/models/model-action.interface.d.ts +17 -4
- package/dist/models/model.abstract.d.ts +96 -1
- package/dist/models/model.abstract.js +107 -8
- package/dist/models/model.abstract.js.map +1 -1
- package/dist/models/model.interface.d.ts +3 -0
- package/dist/models/pipeline/pipeline.model.d.ts +14 -2
- package/dist/models/pipeline/pipeline.model.js +19 -7
- package/dist/models/pipeline/pipeline.model.js.map +1 -1
- package/dist/models/pipeline/pipeline.schema.d.ts +8 -0
- package/dist/models/pipeline/pipeline.schema.js +8 -0
- package/dist/models/pipeline/pipeline.schema.js.map +1 -1
- package/dist/models/region/region.model.d.ts +16 -1
- package/dist/models/region/region.model.js +19 -4
- package/dist/models/region/region.model.js.map +1 -1
- package/dist/models/region/region.schema.d.ts +6 -0
- package/dist/models/region/region.schema.js +6 -0
- package/dist/models/region/region.schema.js.map +1 -1
- package/dist/models/server/server.model.d.ts +15 -3
- package/dist/models/server/server.model.js +18 -6
- package/dist/models/server/server.model.js.map +1 -1
- package/dist/models/server/server.schema.d.ts +3 -1
- package/dist/models/server/server.schema.js +3 -1
- package/dist/models/server/server.schema.js.map +1 -1
- package/dist/models/service/service.model.d.ts +37 -6
- package/dist/models/service/service.model.js +65 -11
- package/dist/models/service/service.model.js.map +1 -1
- package/dist/models/service/service.schema.d.ts +48 -1
- package/dist/models/service/service.schema.js +56 -1
- package/dist/models/service/service.schema.js.map +1 -1
- package/dist/models/subnet/subnet.model.d.ts +27 -3
- package/dist/models/subnet/subnet.model.js +40 -16
- package/dist/models/subnet/subnet.model.js.map +1 -1
- package/dist/models/subnet/subnet.schema.d.ts +9 -0
- package/dist/models/subnet/subnet.schema.js +9 -0
- package/dist/models/subnet/subnet.schema.js.map +1 -1
- package/dist/modes/apply-transaction.d.ts +23 -0
- package/dist/modes/apply-transaction.js +25 -0
- package/dist/modes/apply-transaction.js.map +1 -0
- package/dist/modes/commit.mode.d.ts +54 -0
- package/dist/modes/commit.mode.js +235 -0
- package/dist/modes/commit.mode.js.map +1 -0
- package/dist/modes/generate.mode.d.ts +30 -0
- package/dist/modes/generate.mode.js +50 -0
- package/dist/modes/generate.mode.js.map +1 -0
- package/dist/modes/run-action.mode.d.ts +30 -0
- package/dist/modes/run-action.mode.js +140 -0
- package/dist/modes/run-action.mode.js.map +1 -0
- package/dist/modes/validate.mode.d.ts +186 -0
- package/dist/modes/validate.mode.js +558 -0
- package/dist/modes/validate.mode.js.map +1 -0
- package/dist/modules/module.abstract.d.ts +51 -0
- package/dist/modules/module.abstract.js +36 -0
- package/dist/modules/module.abstract.js.map +1 -1
- package/dist/modules/module.container.d.ts +43 -1
- package/dist/modules/module.container.js +77 -5
- package/dist/modules/module.container.js.map +1 -1
- package/dist/modules/test-module.container.d.ts +139 -25
- package/dist/modules/test-module.container.js +383 -199
- package/dist/modules/test-module.container.js.map +1 -1
- package/dist/overlays/anchor.abstract.d.ts +32 -1
- package/dist/overlays/anchor.abstract.js +42 -11
- package/dist/overlays/anchor.abstract.js.map +1 -1
- package/dist/overlays/anchor.schema.d.ts +21 -0
- package/dist/overlays/anchor.schema.js +21 -0
- package/dist/overlays/anchor.schema.js.map +1 -1
- package/dist/overlays/overlay-data.repository.d.ts +18 -0
- package/dist/overlays/overlay-data.repository.js +18 -0
- package/dist/overlays/overlay-data.repository.js.map +1 -1
- package/dist/overlays/overlay.abstract.d.ts +56 -1
- package/dist/overlays/overlay.abstract.js +79 -20
- package/dist/overlays/overlay.abstract.js.map +1 -1
- package/dist/overlays/overlay.schema.d.ts +20 -0
- package/dist/overlays/overlay.schema.js +20 -0
- package/dist/overlays/overlay.schema.js.map +1 -1
- package/dist/resources/resource-action.interface.d.ts +29 -3
- package/dist/resources/resource-data.repository.d.ts +63 -1
- package/dist/resources/resource-data.repository.js +94 -4
- package/dist/resources/resource-data.repository.js.map +1 -1
- package/dist/resources/resource.abstract.d.ts +163 -6
- package/dist/resources/resource.abstract.js +223 -59
- package/dist/resources/resource.abstract.js.map +1 -1
- package/dist/resources/resource.interface.d.ts +0 -2
- package/dist/resources/resource.schema.d.ts +39 -1
- package/dist/resources/resource.schema.js +38 -0
- package/dist/resources/resource.schema.js.map +1 -1
- package/dist/resources/terraform-resource.abstract.d.ts +44 -0
- package/dist/resources/terraform-resource.abstract.js +45 -0
- package/dist/resources/terraform-resource.abstract.js.map +1 -0
- package/dist/services/event/event.service.d.ts +32 -5
- package/dist/services/event/event.service.js +58 -16
- package/dist/services/event/event.service.js.map +1 -1
- package/dist/services/input/input.service.d.ts +82 -5
- package/dist/services/input/input.service.js +143 -12
- package/dist/services/input/input.service.js.map +1 -1
- package/dist/services/schema-translation/schema-translation.service.d.ts +9 -0
- package/dist/services/schema-translation/schema-translation.service.js +9 -0
- package/dist/services/schema-translation/schema-translation.service.js.map +1 -1
- package/dist/services/serialization/model/model-serialization.service.d.ts +25 -3
- package/dist/services/serialization/model/model-serialization.service.js +113 -62
- package/dist/services/serialization/model/model-serialization.service.js.map +1 -1
- package/dist/services/serialization/resource/resource-serialization.service.d.ts +36 -6
- package/dist/services/serialization/resource/resource-serialization.service.js +77 -28
- package/dist/services/serialization/resource/resource-serialization.service.js.map +1 -1
- package/dist/services/state-management/local.state-provider.d.ts +67 -4
- package/dist/services/state-management/local.state-provider.js +168 -41
- package/dist/services/state-management/local.state-provider.js.map +1 -1
- package/dist/services/state-management/remote.state-provider.d.ts +216 -0
- package/dist/services/state-management/remote.state-provider.js +645 -0
- package/dist/services/state-management/remote.state-provider.js.map +1 -0
- package/dist/services/state-management/state-management.service.d.ts +195 -17
- package/dist/services/state-management/state-management.service.js +259 -10
- package/dist/services/state-management/state-management.service.js.map +1 -1
- package/dist/services/state-management/state-provider.interface.d.ts +98 -3
- package/dist/services/state-management/state-provider.interface.js +14 -1
- package/dist/services/state-management/state-provider.interface.js.map +1 -1
- package/dist/services/state-management/terraform-state.service.d.ts +99 -0
- package/dist/services/state-management/terraform-state.service.js +197 -0
- package/dist/services/state-management/terraform-state.service.js.map +1 -0
- package/dist/services/state-management/test.state-provider.d.ts +42 -4
- package/dist/services/state-management/test.state-provider.js +77 -25
- package/dist/services/state-management/test.state-provider.js.map +1 -1
- package/dist/services/terraform/terraform.service.d.ts +480 -0
- package/dist/services/terraform/terraform.service.js +1082 -0
- package/dist/services/terraform/terraform.service.js.map +1 -0
- package/dist/services/terraform/terraform.type.d.ts +387 -0
- package/dist/services/terraform/terraform.type.js +579 -0
- package/dist/services/terraform/terraform.type.js.map +1 -0
- package/dist/services/transaction/transaction.service.d.ts +110 -10
- package/dist/services/transaction/transaction.service.js +570 -251
- package/dist/services/transaction/transaction.service.js.map +1 -1
- package/dist/services/validation/validation.service.d.ts +15 -3
- package/dist/services/validation/validation.service.js +12 -0
- package/dist/services/validation/validation.service.js.map +1 -1
- package/dist/utilities/array/array.utility.d.ts +3 -0
- package/dist/utilities/array/array.utility.js +3 -0
- package/dist/utilities/array/array.utility.js.map +1 -1
- package/dist/{functions → utilities}/diff/diff.utility.d.ts +19 -3
- package/dist/{functions → utilities}/diff/diff.utility.js +57 -41
- package/dist/utilities/diff/diff.utility.js.map +1 -0
- package/dist/utilities/file/file.utility.d.ts +16 -2
- package/dist/utilities/file/file.utility.js +23 -61
- package/dist/utilities/file/file.utility.js.map +1 -1
- package/dist/utilities/hcl/hcl.utility.d.ts +128 -0
- package/dist/utilities/hcl/hcl.utility.js +402 -0
- package/dist/utilities/hcl/hcl.utility.js.map +1 -0
- package/dist/utilities/http/http.utility.d.ts +57 -0
- package/dist/utilities/http/http.utility.js +98 -0
- package/dist/utilities/http/http.utility.js.map +1 -0
- package/dist/utilities/node/node.utility.d.ts +3 -0
- package/dist/utilities/node/node.utility.js +3 -0
- package/dist/utilities/node/node.utility.js.map +1 -1
- package/dist/utilities/object/object.utility.d.ts +12 -0
- package/dist/utilities/object/object.utility.js +12 -0
- package/dist/utilities/object/object.utility.js.map +1 -1
- package/dist/utilities/project/project.utility.d.ts +28 -0
- package/dist/utilities/project/project.utility.js +35 -0
- package/dist/utilities/project/project.utility.js.map +1 -0
- package/dist/utilities/string/string.utility.d.ts +41 -0
- package/dist/utilities/string/string.utility.js +65 -0
- package/dist/utilities/string/string.utility.js.map +1 -0
- package/dist/utilities/terraform/terraform.utility.d.ts +276 -0
- package/dist/utilities/terraform/terraform.utility.js +623 -0
- package/dist/utilities/terraform/terraform.utility.js.map +1 -0
- package/dist/utilities/test-helpers/test-classes.d.ts +36 -30
- package/dist/utilities/test-helpers/test-classes.js +38 -39
- package/dist/utilities/test-helpers/test-classes.js.map +1 -1
- package/dist/utilities/test-helpers/test-models.d.ts +8 -1
- package/dist/utilities/test-helpers/test-models.js +37 -12
- package/dist/utilities/test-helpers/test-models.js.map +1 -1
- package/dist/utilities/test-helpers/test-modes.d.ts +315 -0
- package/dist/utilities/test-helpers/test-modes.js +486 -0
- package/dist/utilities/test-helpers/test-modes.js.map +1 -0
- package/dist/utilities/test-helpers/test-modules.d.ts +47 -0
- package/dist/utilities/test-helpers/test-modules.js +85 -0
- package/dist/utilities/test-helpers/test-modules.js.map +1 -0
- package/dist/utilities/test-helpers/test-overlays.d.ts +20 -2
- package/dist/utilities/test-helpers/test-overlays.js +56 -6
- package/dist/utilities/test-helpers/test-overlays.js.map +1 -1
- package/dist/utilities/test-helpers/test-resources.d.ts +23 -3
- package/dist/utilities/test-helpers/test-resources.js +83 -23
- package/dist/utilities/test-helpers/test-resources.js.map +1 -1
- package/dist/utilities/validation/validation.utility.d.ts +24 -0
- package/dist/utilities/validation/validation.utility.js +24 -0
- package/dist/utilities/validation/validation.utility.js.map +1 -1
- package/package.json +12 -6
- package/dist/functions/diff/diff.utility.js.map +0 -1
- package/dist/services/capture/capture.service.d.ts +0 -19
- package/dist/services/capture/capture.service.js +0 -43
- package/dist/services/capture/capture.service.js.map +0 -1
- package/dist/services/state-management/local-encryption.state-provider.d.ts +0 -20
- package/dist/services/state-management/local-encryption.state-provider.js +0 -90
- package/dist/services/state-management/local-encryption.state-provider.js.map +0 -1
- package/dist/utilities/cidr/cidr.utility.d.ts +0 -10
- package/dist/utilities/cidr/cidr.utility.js +0 -51
- package/dist/utilities/cidr/cidr.utility.js.map +0 -1
|
@@ -0,0 +1,486 @@
|
|
|
1
|
+
import { mkdtemp, rm } from 'node:fs/promises';
|
|
2
|
+
import { tmpdir } from 'node:os';
|
|
3
|
+
import { join } from 'path';
|
|
4
|
+
import { NodeType, } from '../../app.type.js';
|
|
5
|
+
import { ResourceError } from '../../errors/index.js';
|
|
6
|
+
import { TestContainer } from '../../functions/container/test-container.js';
|
|
7
|
+
import { Diff, DiffAction } from '../../functions/diff/diff.js';
|
|
8
|
+
import { ANodeAction } from '../../functions/node/node-action.abstract.js';
|
|
9
|
+
import { TestModuleContainer } from '../../modules/test-module.container.js';
|
|
10
|
+
import { ResourceDataRepository } from '../../resources/resource-data.repository.js';
|
|
11
|
+
import { AResource } from '../../resources/resource.abstract.js';
|
|
12
|
+
import { ATerraformResource } from '../../resources/terraform-resource.abstract.js';
|
|
13
|
+
import { StateManagementService } from '../../services/state-management/state-management.service.js';
|
|
14
|
+
import { TestStateProvider } from '../../services/state-management/test.state-provider.js';
|
|
15
|
+
import { TerraformService } from '../../services/terraform/terraform.service.js';
|
|
16
|
+
import { TransactionService } from '../../services/transaction/transaction.service.js';
|
|
17
|
+
import { DiffUtility } from '../diff/diff.utility.js';
|
|
18
|
+
/**
|
|
19
|
+
* The action of {@link ExternalIgwResource}, filtering, recording and answering each diff as its
|
|
20
|
+
* {@link TestModes} says.
|
|
21
|
+
*
|
|
22
|
+
* @internal
|
|
23
|
+
*/
|
|
24
|
+
class IgwResourceAction extends ANodeAction {
|
|
25
|
+
/**
|
|
26
|
+
* @internal
|
|
27
|
+
*/
|
|
28
|
+
constructor(testModes) {
|
|
29
|
+
super();
|
|
30
|
+
this.testModes = testModes;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* @internal
|
|
34
|
+
*/
|
|
35
|
+
filter(diff) {
|
|
36
|
+
return this.testModes.igwActionFilter(diff);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* @internal
|
|
40
|
+
*/
|
|
41
|
+
async handle(diff) {
|
|
42
|
+
this.testModes.igwActionHandledDiffs.push(diff);
|
|
43
|
+
if (this.testModes.igwActionHandler) {
|
|
44
|
+
return this.testModes.igwActionHandler(diff);
|
|
45
|
+
}
|
|
46
|
+
return diff.action === 'delete' ? {} : this.testModes.igwResponse;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* An external resource: lifecycle runs outside terraform via a resource action.
|
|
51
|
+
*
|
|
52
|
+
* @internal
|
|
53
|
+
*/
|
|
54
|
+
export class ExternalIgwResource extends AResource {
|
|
55
|
+
static { this.NODE_NAME = 'external-igw'; }
|
|
56
|
+
static { this.NODE_PACKAGE = '@octo'; }
|
|
57
|
+
static { this.NODE_SCHEMA = {}; }
|
|
58
|
+
static { this.NODE_TYPE = NodeType.RESOURCE; }
|
|
59
|
+
/**
|
|
60
|
+
* @internal
|
|
61
|
+
*/
|
|
62
|
+
constructor(resourceId, properties = {}, parents = []) {
|
|
63
|
+
super(resourceId, properties, parents);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* A native terraform resource that references an (external) parent via `getRef`.
|
|
68
|
+
*
|
|
69
|
+
* @internal
|
|
70
|
+
*/
|
|
71
|
+
export class TfSgResource extends ATerraformResource {
|
|
72
|
+
static { this.NODE_NAME = 'tf-sg'; }
|
|
73
|
+
static { this.NODE_PACKAGE = '@octo'; }
|
|
74
|
+
static { this.NODE_SCHEMA = {}; }
|
|
75
|
+
static { this.NODE_TYPE = NodeType.RESOURCE; }
|
|
76
|
+
/**
|
|
77
|
+
* @internal
|
|
78
|
+
*/
|
|
79
|
+
constructor(resourceId, properties = {}, parents = []) {
|
|
80
|
+
super(resourceId, properties, parents);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* @internal
|
|
84
|
+
*/
|
|
85
|
+
async toHCL(terraform) {
|
|
86
|
+
const igw = this.parents[0];
|
|
87
|
+
const sgTf = terraform.addOctoTerraformResource(this);
|
|
88
|
+
sgTf.addTerraformResource('aws_security_group', this.resourceId, {
|
|
89
|
+
igw_id: terraform.getRef(igw, 'igwId'),
|
|
90
|
+
});
|
|
91
|
+
sgTf.output({ SgId: terraform.raw(`aws_security_group.${this.resourceId}.id`) });
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* A native terraform resource that contributes an `aws_vpc` block and publishes its id.
|
|
96
|
+
*
|
|
97
|
+
* @internal
|
|
98
|
+
*/
|
|
99
|
+
export class TfVpcResource extends ATerraformResource {
|
|
100
|
+
static { this.NODE_NAME = 'tf-vpc'; }
|
|
101
|
+
static { this.NODE_PACKAGE = '@octo'; }
|
|
102
|
+
static { this.NODE_SCHEMA = {}; }
|
|
103
|
+
static { this.NODE_TYPE = NodeType.RESOURCE; }
|
|
104
|
+
/**
|
|
105
|
+
* @internal
|
|
106
|
+
*/
|
|
107
|
+
constructor(resourceId, properties = {}, parents = []) {
|
|
108
|
+
super(resourceId, properties, parents);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* @internal
|
|
112
|
+
*/
|
|
113
|
+
async toHCL(terraform) {
|
|
114
|
+
// Bind a provider only when the resource carries an accountId, so the default (provider-less)
|
|
115
|
+
// graph keeps exercising the no-provider path while a provider-aware test can opt in.
|
|
116
|
+
const provider = this.properties['accountId']
|
|
117
|
+
? {
|
|
118
|
+
provider: {
|
|
119
|
+
accountId: this.properties['accountId'],
|
|
120
|
+
regionId: this.properties['regionId'],
|
|
121
|
+
},
|
|
122
|
+
}
|
|
123
|
+
: undefined;
|
|
124
|
+
const vpcTf = terraform.addOctoTerraformResource(this, provider);
|
|
125
|
+
vpcTf.addTerraformResource('aws_vpc', this.resourceId, { cidr_block: this.properties['CidrBlock'] });
|
|
126
|
+
vpcTf.output({ VpcId: terraform.raw(`aws_vpc.${this.resourceId}.id`) });
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* A native terraform resource whose author declares that any property change recreates it: its
|
|
131
|
+
* `diffProperties` emits a single `REPLACE` instead of a granular update. Used to exercise the
|
|
132
|
+
* first-class REPLACE action and the validate replacement cascade.
|
|
133
|
+
*
|
|
134
|
+
* @internal
|
|
135
|
+
*/
|
|
136
|
+
export class ReplacingTfVpcResource extends ATerraformResource {
|
|
137
|
+
static { this.NODE_NAME = 'replacing-tf-vpc'; }
|
|
138
|
+
static { this.NODE_PACKAGE = '@octo'; }
|
|
139
|
+
static { this.NODE_SCHEMA = {}; }
|
|
140
|
+
static { this.NODE_TYPE = NodeType.RESOURCE; }
|
|
141
|
+
/**
|
|
142
|
+
* @internal
|
|
143
|
+
*/
|
|
144
|
+
constructor(resourceId, properties = {}, parents = []) {
|
|
145
|
+
super(resourceId, properties, parents);
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* @internal
|
|
149
|
+
*/
|
|
150
|
+
async diffProperties(previous) {
|
|
151
|
+
if (!DiffUtility.isObjectDeepEquals(previous.properties, this.properties)) {
|
|
152
|
+
return [new Diff(this, DiffAction.REPLACE, 'properties', '', 'CidrBlock change forces VPC recreation')];
|
|
153
|
+
}
|
|
154
|
+
return [];
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* @internal
|
|
158
|
+
*/
|
|
159
|
+
async toHCL(terraform) {
|
|
160
|
+
const vpcTf = terraform.addOctoTerraformResource(this);
|
|
161
|
+
vpcTf.addTerraformResource('aws_vpc', this.resourceId, { cidr_block: this.properties['CidrBlock'] });
|
|
162
|
+
vpcTf.output({ VpcId: terraform.raw(`aws_vpc.${this.resourceId}.id`) });
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* A native terraform resource whose author refuses any property update by throwing in
|
|
167
|
+
* `diffProperties`. Used to prove that an author refusal in a `diff*` method aborts generation
|
|
168
|
+
* before any HCL is built. Its `toHCL` records every invocation in {@link toHCLInvocations}, so a
|
|
169
|
+
* test can assert it was never reached when the diff threw.
|
|
170
|
+
*
|
|
171
|
+
* @internal
|
|
172
|
+
*/
|
|
173
|
+
export class RefusingTfResource extends ATerraformResource {
|
|
174
|
+
static { this.NODE_NAME = 'refusing-tf'; }
|
|
175
|
+
static { this.NODE_PACKAGE = '@octo'; }
|
|
176
|
+
static { this.NODE_SCHEMA = {}; }
|
|
177
|
+
static { this.NODE_TYPE = NodeType.RESOURCE; }
|
|
178
|
+
static { this.toHCLInvocations = []; }
|
|
179
|
+
/**
|
|
180
|
+
* @internal
|
|
181
|
+
*/
|
|
182
|
+
constructor(resourceId, properties = {}, parents = []) {
|
|
183
|
+
super(resourceId, properties, parents);
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* @internal
|
|
187
|
+
*/
|
|
188
|
+
async diffProperties(previous) {
|
|
189
|
+
if (!DiffUtility.isObjectDeepEquals(previous.properties, this.properties)) {
|
|
190
|
+
throw new ResourceError('Cannot update RefusingTfResource once it has been created!', this);
|
|
191
|
+
}
|
|
192
|
+
return super.diffProperties(previous);
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* @internal
|
|
196
|
+
*/
|
|
197
|
+
async toHCL(terraform) {
|
|
198
|
+
RefusingTfResource.toHCLInvocations.push(this.resourceId);
|
|
199
|
+
const tf = terraform.addOctoTerraformResource(this);
|
|
200
|
+
tf.addTerraformResource('aws_vpc', this.resourceId, { cidr_block: this.properties['CidrBlock'] });
|
|
201
|
+
tf.output({ VpcId: terraform.raw(`aws_vpc.${this.resourceId}.id`) });
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Test harness for the `Octo` mode functions. {@link create} bootstraps an isolated container (via
|
|
206
|
+
* {@link TestContainer}) with real test terraform + transaction services and an external igw
|
|
207
|
+
* resource action, mirroring the wiring an `Octo` boot performs; the mode functions under test
|
|
208
|
+
* resolve those services from the container themselves. The instance exposes the standard
|
|
209
|
+
* vpc → igw → sg graph across two module folders plus helpers to fabricate terraform plan/state
|
|
210
|
+
* fixtures.
|
|
211
|
+
*
|
|
212
|
+
* @internal
|
|
213
|
+
*/
|
|
214
|
+
export class TestModes {
|
|
215
|
+
/**
|
|
216
|
+
* @internal
|
|
217
|
+
*/
|
|
218
|
+
constructor(octo, outputDir, resourceDataRepository, stateManagementService, terraformService, testModuleContainer) {
|
|
219
|
+
this.octo = octo;
|
|
220
|
+
this.outputDir = outputDir;
|
|
221
|
+
this.resourceDataRepository = resourceDataRepository;
|
|
222
|
+
this.stateManagementService = stateManagementService;
|
|
223
|
+
this.terraformService = terraformService;
|
|
224
|
+
this.testModuleContainer = testModuleContainer;
|
|
225
|
+
this.igwActionHandledDiffs = [];
|
|
226
|
+
/**
|
|
227
|
+
* The response the igw resource action returns. Mutable, and deliberately looser than
|
|
228
|
+
* `BaseResourceSchema['response']`, so a spec can hand back what a real SDK action can return at
|
|
229
|
+
* runtime but the schema type forbids - a number, a boolean, a null.
|
|
230
|
+
*/
|
|
231
|
+
this.igwResponse = { igwId: 'igw-0real' };
|
|
232
|
+
this.outputs = new Map();
|
|
233
|
+
this.plans = new Map();
|
|
234
|
+
this.terraformConfigs = [];
|
|
235
|
+
this.terraformProviders = [];
|
|
236
|
+
/**
|
|
237
|
+
* What the igw resource action matches. Mutable so a spec can narrow it and exercise a diff that
|
|
238
|
+
* no registered action handles.
|
|
239
|
+
*/
|
|
240
|
+
this.igwActionFilter = () => true;
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* @internal
|
|
244
|
+
*/
|
|
245
|
+
static async create() {
|
|
246
|
+
const container = await TestContainer.create({ mocks: [] }, { factoryTimeoutInMs: 500, force: true });
|
|
247
|
+
const [resourceDataRepository, terraformService, transactionService] = await Promise.all([
|
|
248
|
+
container.get(ResourceDataRepository),
|
|
249
|
+
container.get(TerraformService),
|
|
250
|
+
container.get(TransactionService),
|
|
251
|
+
]);
|
|
252
|
+
const testModuleContainer = new TestModuleContainer(container);
|
|
253
|
+
await testModuleContainer.initialize(new TestStateProvider());
|
|
254
|
+
const stateManagementService = await container.get(StateManagementService);
|
|
255
|
+
const outputDir = await mkdtemp(join(tmpdir(), 'octo-modes-test-'));
|
|
256
|
+
const instance = new TestModes(testModuleContainer['octo'], outputDir, resourceDataRepository, stateManagementService, terraformService, testModuleContainer);
|
|
257
|
+
// Registered after the instance exists so the action can read/append its mutable state. No
|
|
258
|
+
// transaction runs during initialize(), so registering here is in time for the mode under test.
|
|
259
|
+
const igwResourceAction = new IgwResourceAction(instance);
|
|
260
|
+
transactionService.registerResourceActions(ExternalIgwResource, [igwResourceAction]);
|
|
261
|
+
return instance;
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Registers an additional resource into an existing module folder, the way a model action would
|
|
265
|
+
* contribute a new resource on a re-run. Use after {@link createResourceGraph} to exercise an add
|
|
266
|
+
* of a brand-new resource (module-attributed, so it lands in the named folder rather than the
|
|
267
|
+
* provider-less `default` folder).
|
|
268
|
+
*/
|
|
269
|
+
async addResource(moduleId, resource) {
|
|
270
|
+
await this.testModuleContainer.createResources(moduleId, [resource]);
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Simulates deleting every terraform config/provider declaration from `octo.yml`: the next
|
|
274
|
+
* simulated fresh process boots without them, the way a real process would after the edit.
|
|
275
|
+
*/
|
|
276
|
+
clearTerraformRegistrations() {
|
|
277
|
+
this.terraformConfigs.length = 0;
|
|
278
|
+
this.terraformProviders.length = 0;
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Takes the app lock the CLI would have taken, unless the caller supplied one, and releases it
|
|
282
|
+
* afterwards however the commit turned out, so a test never leaves one behind.
|
|
283
|
+
*
|
|
284
|
+
* @internal
|
|
285
|
+
*/
|
|
286
|
+
async commit(app, options, transaction) {
|
|
287
|
+
await this.simulateFreshProcess();
|
|
288
|
+
const lockId = options.lockId ?? (await this.stateManagementService.lockApp()).lockId;
|
|
289
|
+
try {
|
|
290
|
+
return await this.octo.commit(app, { ...options, lockId }, transaction);
|
|
291
|
+
}
|
|
292
|
+
finally {
|
|
293
|
+
await this.stateManagementService.unlockApp(lockId);
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* The same two folders as {@link createResourceGraph}, with the security group reading
|
|
298
|
+
* the vpc across the folder boundary instead of the (external) internet gateway. That is the one
|
|
299
|
+
* shape the standard graph cannot make: a terraform resource whose dependency output terragrunt
|
|
300
|
+
* can mock.
|
|
301
|
+
*
|
|
302
|
+
* @internal
|
|
303
|
+
*/
|
|
304
|
+
async createCrossModuleResourceGraph(options) {
|
|
305
|
+
const { app: [app], } = await this.testModuleContainer.createTestModels('app-module', { app: ['test-app'] });
|
|
306
|
+
const vpc = new TfVpcResource('vpc-1', { CidrBlock: '10.0.0.0/16' });
|
|
307
|
+
const sg = new TfSgResource('sg-1', {}, [vpc]);
|
|
308
|
+
await this.testModuleContainer.createResources('region-module', [vpc], options);
|
|
309
|
+
await this.testModuleContainer.createResources('sg-module', [sg], options);
|
|
310
|
+
return { app: app, sg, vpc };
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* @internal
|
|
314
|
+
*/
|
|
315
|
+
async createProviderBoundResourceGraph(provider) {
|
|
316
|
+
const { app: [app], } = await this.testModuleContainer.createTestModels('app-module', { app: ['test-app'] });
|
|
317
|
+
const vpc = new TfVpcResource('vpc-1', {
|
|
318
|
+
accountId: provider.accountId,
|
|
319
|
+
CidrBlock: '10.0.0.0/16',
|
|
320
|
+
regionId: provider.regionId,
|
|
321
|
+
});
|
|
322
|
+
await this.testModuleContainer.createResources('region-module', [vpc]);
|
|
323
|
+
return { app: app, vpc };
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* Stages a single {@link RefusingTfResource} in `region-module`. With `save: true`, commits it so a
|
|
327
|
+
* later re-stage with changed properties drives an update that the resource refuses. Used to prove
|
|
328
|
+
* that an author refusal in `diff*` aborts generation before HCL is built.
|
|
329
|
+
*/
|
|
330
|
+
async createRefusingResourceGraph(options) {
|
|
331
|
+
const { app: [app], } = await this.testModuleContainer.createTestModels('app-module', { app: ['test-app'] });
|
|
332
|
+
const refusing = new RefusingTfResource('refuse-1', { CidrBlock: '10.0.0.0/16' });
|
|
333
|
+
await this.testModuleContainer.createResources('region-module', [refusing], options);
|
|
334
|
+
return { app: app, refusing };
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* Same `vpc → igw → sg` shape as {@link createResourceGraph}, but the vpc is a
|
|
338
|
+
* {@link ReplacingTfVpcResource}, so changing its properties later yields a REPLACE that cascades
|
|
339
|
+
* (in terraform) onto igw and sg. Used to exercise the validate replacement cascade.
|
|
340
|
+
*/
|
|
341
|
+
async createReplaceableResourceGraph(options) {
|
|
342
|
+
const { app: [app], } = await this.testModuleContainer.createTestModels('app-module', { app: ['test-app'] });
|
|
343
|
+
const vpc = new ReplacingTfVpcResource('vpc-1', { CidrBlock: '10.0.0.0/16' });
|
|
344
|
+
const igw = new ExternalIgwResource('igw-1', { Type: 'internet-gateway' }, [vpc]);
|
|
345
|
+
const sg = new TfSgResource('sg-1', {}, [igw]);
|
|
346
|
+
await this.testModuleContainer.createResources('region-module', [vpc, igw], options);
|
|
347
|
+
await this.testModuleContainer.createResources('sg-module', [sg], options);
|
|
348
|
+
return { app: app, igw, sg, vpc };
|
|
349
|
+
}
|
|
350
|
+
/**
|
|
351
|
+
* @internal
|
|
352
|
+
*/
|
|
353
|
+
async createResourceGraph(options) {
|
|
354
|
+
const { app: [app], } = await this.testModuleContainer.createTestModels('app-module', { app: ['test-app'] });
|
|
355
|
+
const vpc = new TfVpcResource('vpc-1', { CidrBlock: '10.0.0.0/16' });
|
|
356
|
+
const igw = new ExternalIgwResource('igw-1', { Type: 'internet-gateway' }, [vpc]);
|
|
357
|
+
const sg = new TfSgResource('sg-1', {}, [igw]);
|
|
358
|
+
await this.testModuleContainer.createResources('region-module', [vpc, igw], options);
|
|
359
|
+
await this.testModuleContainer.createResources('sg-module', [sg], options);
|
|
360
|
+
return { app: app, igw, sg, vpc };
|
|
361
|
+
}
|
|
362
|
+
/**
|
|
363
|
+
* @internal
|
|
364
|
+
*/
|
|
365
|
+
async generate(...args) {
|
|
366
|
+
await this.simulateFreshProcess();
|
|
367
|
+
return this.octo.generate(...args);
|
|
368
|
+
}
|
|
369
|
+
/**
|
|
370
|
+
* @internal
|
|
371
|
+
*/
|
|
372
|
+
async getCommittedTerraformState() {
|
|
373
|
+
const { userData } = await this.stateManagementService.getResourceState('resources-actual.json');
|
|
374
|
+
return {
|
|
375
|
+
terraformFolders: userData.terraformFolders ?? [],
|
|
376
|
+
terraformResources: userData.terraformResources ?? [],
|
|
377
|
+
};
|
|
378
|
+
}
|
|
379
|
+
/**
|
|
380
|
+
* @internal
|
|
381
|
+
*/
|
|
382
|
+
async getModelState() {
|
|
383
|
+
const { data } = await this.stateManagementService.getModelState('models.json');
|
|
384
|
+
return data;
|
|
385
|
+
}
|
|
386
|
+
/**
|
|
387
|
+
* @internal
|
|
388
|
+
*/
|
|
389
|
+
async getResourceState(fileName = 'resources-old.json') {
|
|
390
|
+
const { data } = await this.stateManagementService.getResourceState(fileName);
|
|
391
|
+
return data;
|
|
392
|
+
}
|
|
393
|
+
/**
|
|
394
|
+
* @internal
|
|
395
|
+
*/
|
|
396
|
+
async getTerraformFolderRecords() {
|
|
397
|
+
const { userData } = await this.stateManagementService.getModelState('models.json');
|
|
398
|
+
return userData.terraformFolders ?? [];
|
|
399
|
+
}
|
|
400
|
+
/**
|
|
401
|
+
* @internal
|
|
402
|
+
*/
|
|
403
|
+
registerTerraformConfig(...args) {
|
|
404
|
+
this.terraformConfigs.push(args);
|
|
405
|
+
this.octo.registerTerraformConfig(...args);
|
|
406
|
+
}
|
|
407
|
+
/**
|
|
408
|
+
* @internal
|
|
409
|
+
*/
|
|
410
|
+
registerTerraformProvider(...args) {
|
|
411
|
+
this.terraformProviders.push(args);
|
|
412
|
+
this.octo.registerTerraformProvider(...args);
|
|
413
|
+
}
|
|
414
|
+
/**
|
|
415
|
+
* @internal
|
|
416
|
+
*/
|
|
417
|
+
async runAction(...args) {
|
|
418
|
+
await this.simulateFreshProcess();
|
|
419
|
+
return this.octo.runAction(...args);
|
|
420
|
+
}
|
|
421
|
+
/**
|
|
422
|
+
* Plants a terraform folder record into `models.json`, as if a past generate had written those
|
|
423
|
+
* folders.
|
|
424
|
+
*/
|
|
425
|
+
async seedModelTerraformFolders(records) {
|
|
426
|
+
const { data, userData } = await this.stateManagementService.getModelState('models.json');
|
|
427
|
+
await this.stateManagementService.saveModelState('models.json', data, {
|
|
428
|
+
...userData,
|
|
429
|
+
terraformFolders: records,
|
|
430
|
+
});
|
|
431
|
+
}
|
|
432
|
+
/**
|
|
433
|
+
* Simulates the boot of a fresh octo process: fully reset the terraform service, then replay the
|
|
434
|
+
* recorded config/provider registrations (config before providers, as boot order requires).
|
|
435
|
+
*/
|
|
436
|
+
async simulateFreshProcess() {
|
|
437
|
+
this.terraformService.reset();
|
|
438
|
+
for (const args of this.terraformConfigs) {
|
|
439
|
+
this.octo.registerTerraformConfig(...args);
|
|
440
|
+
}
|
|
441
|
+
for (const args of this.terraformProviders) {
|
|
442
|
+
this.octo.registerTerraformProvider(...args);
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
/**
|
|
446
|
+
* @internal
|
|
447
|
+
*/
|
|
448
|
+
async teardown() {
|
|
449
|
+
await rm(this.outputDir, { force: true, recursive: true });
|
|
450
|
+
await this.testModuleContainer.reset();
|
|
451
|
+
await TestContainer.reset();
|
|
452
|
+
}
|
|
453
|
+
/**
|
|
454
|
+
* @internal
|
|
455
|
+
*/
|
|
456
|
+
async validate(...args) {
|
|
457
|
+
await this.simulateFreshProcess();
|
|
458
|
+
return this.octo.validate(...args);
|
|
459
|
+
}
|
|
460
|
+
/**
|
|
461
|
+
* @internal
|
|
462
|
+
*/
|
|
463
|
+
writePlan(moduleId, resourceChanges) {
|
|
464
|
+
this.plans.set(moduleId, {
|
|
465
|
+
resource_changes: resourceChanges.map((c) => ({
|
|
466
|
+
address: c.address,
|
|
467
|
+
change: {
|
|
468
|
+
actions: c.actions,
|
|
469
|
+
after: c.after,
|
|
470
|
+
after_sensitive: c.afterSensitive,
|
|
471
|
+
after_unknown: c.afterUnknown,
|
|
472
|
+
before: c.before,
|
|
473
|
+
before_sensitive: c.beforeSensitive,
|
|
474
|
+
},
|
|
475
|
+
mode: 'managed',
|
|
476
|
+
})),
|
|
477
|
+
});
|
|
478
|
+
}
|
|
479
|
+
/**
|
|
480
|
+
* @internal
|
|
481
|
+
*/
|
|
482
|
+
writeTfState(moduleId, outputs) {
|
|
483
|
+
this.outputs.set(moduleId, Object.fromEntries(Object.entries(outputs).map(([k, v]) => [k, { type: 'string', value: v }])));
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
//# sourceMappingURL=test-modes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-modes.js","sourceRoot":"","sources":["../../../src/utilities/test-helpers/test-modes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { Constructable, ModuleSchemaInputs, UnknownModel, UnknownModule } from '../../app.type.js';
|
|
2
|
+
import type { Container } from '../../functions/container/container.js';
|
|
3
|
+
import { App } from '../../models/app/app.model.js';
|
|
4
|
+
import { AModule } from '../../modules/module.abstract.js';
|
|
5
|
+
import { TestOverlay } from './test-classes.js';
|
|
6
|
+
/**
|
|
7
|
+
* The module a test helper ties a node to when its caller names none.
|
|
8
|
+
*
|
|
9
|
+
* @internal
|
|
10
|
+
*/
|
|
11
|
+
export declare const TEST_MODULE_ID = "test-module";
|
|
12
|
+
/**
|
|
13
|
+
* @internal
|
|
14
|
+
*/
|
|
15
|
+
declare class TestAppModuleSchema {
|
|
16
|
+
name: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* @internal
|
|
20
|
+
*/
|
|
21
|
+
declare class TestAppOverlayModuleSchema {
|
|
22
|
+
anchorName: string;
|
|
23
|
+
app: App;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* @internal
|
|
27
|
+
*/
|
|
28
|
+
export declare function createAppModule(): Constructable<AModule<TestAppModuleSchema, App>> & {
|
|
29
|
+
setClassName(className: string): Constructable<AModule<TestAppModuleSchema, App>>;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* @internal
|
|
33
|
+
*/
|
|
34
|
+
export declare function createAppOverlayModule(): Constructable<AModule<TestAppOverlayModuleSchema, TestOverlay>> & {
|
|
35
|
+
setClassName(className: string): Constructable<AModule<TestAppOverlayModuleSchema, TestOverlay>>;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* @internal
|
|
39
|
+
*/
|
|
40
|
+
export declare function runModule<M extends UnknownModule>(container: Container, { inputs, moduleId, type }: {
|
|
41
|
+
inputs: ModuleSchemaInputs<M>;
|
|
42
|
+
moduleId: string;
|
|
43
|
+
type: Constructable<M>;
|
|
44
|
+
}): Promise<{
|
|
45
|
+
[key: string]: UnknownModel;
|
|
46
|
+
}>;
|
|
47
|
+
export {};
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { Schema } from '../../functions/schema/schema.js';
|
|
2
|
+
import { App } from '../../models/app/app.model.js';
|
|
3
|
+
import { AModule } from '../../modules/module.abstract.js';
|
|
4
|
+
import { ModuleContainer } from '../../modules/module.container.js';
|
|
5
|
+
import { TestOverlay } from './test-classes.js';
|
|
6
|
+
/**
|
|
7
|
+
* The module a test helper ties a node to when its caller names none.
|
|
8
|
+
*
|
|
9
|
+
* @internal
|
|
10
|
+
*/
|
|
11
|
+
export const TEST_MODULE_ID = 'test-module';
|
|
12
|
+
/**
|
|
13
|
+
* @internal
|
|
14
|
+
*/
|
|
15
|
+
class TestAppModuleSchema {
|
|
16
|
+
constructor() {
|
|
17
|
+
this.name = Schema();
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* @internal
|
|
22
|
+
*/
|
|
23
|
+
class TestAppOverlayModuleSchema {
|
|
24
|
+
constructor() {
|
|
25
|
+
this.anchorName = Schema();
|
|
26
|
+
this.app = Schema();
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* @internal
|
|
31
|
+
*/
|
|
32
|
+
export function createAppModule() {
|
|
33
|
+
return class extends AModule {
|
|
34
|
+
static { this.MODULE_PACKAGE = '@octo'; }
|
|
35
|
+
static { this.MODULE_SCHEMA = TestAppModuleSchema; }
|
|
36
|
+
/**
|
|
37
|
+
* @internal
|
|
38
|
+
*/
|
|
39
|
+
static setClassName(className) {
|
|
40
|
+
Object.defineProperty(this, 'name', { value: className });
|
|
41
|
+
return this;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* @internal
|
|
45
|
+
*/
|
|
46
|
+
async onInit(inputs) {
|
|
47
|
+
return new App(inputs.name);
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* @internal
|
|
53
|
+
*/
|
|
54
|
+
export function createAppOverlayModule() {
|
|
55
|
+
return class extends AModule {
|
|
56
|
+
static { this.MODULE_PACKAGE = '@octo'; }
|
|
57
|
+
static { this.MODULE_SCHEMA = TestAppOverlayModuleSchema; }
|
|
58
|
+
/**
|
|
59
|
+
* @internal
|
|
60
|
+
*/
|
|
61
|
+
static setClassName(className) {
|
|
62
|
+
Object.defineProperty(this, 'name', { value: className });
|
|
63
|
+
return this;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* @internal
|
|
67
|
+
*/
|
|
68
|
+
async onInit(inputs) {
|
|
69
|
+
const anchor = inputs.app.getAnchor(inputs.anchorName);
|
|
70
|
+
return new TestOverlay('test-overlay', {}, [anchor]);
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* @internal
|
|
76
|
+
*/
|
|
77
|
+
export async function runModule(container, { inputs, moduleId, type }) {
|
|
78
|
+
const moduleContainer = await container.get(ModuleContainer);
|
|
79
|
+
if (moduleContainer.getMetadataIndex(type) === -1) {
|
|
80
|
+
moduleContainer.register(type, { packageName: type.MODULE_PACKAGE });
|
|
81
|
+
}
|
|
82
|
+
moduleContainer.load(type, moduleId, inputs);
|
|
83
|
+
return (await moduleContainer.apply());
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=test-modules.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-modules.js","sourceRoot":"","sources":["../../../src/utilities/test-helpers/test-modules.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAC1D,OAAO,EAAE,GAAG,EAAE,MAAM,+BAA+B,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,aAAa,CAAC;AAE5C;;GAEG;AACH,MAAM,mBAAmB;IAAzB;QACE,SAAI,GAAG,MAAM,EAAU,CAAC;IAC1B,CAAC;CAAA;AAED;;GAEG;AACH,MAAM,0BAA0B;IAAhC;QACE,eAAU,GAAG,MAAM,EAAU,CAAC;QAC9B,QAAG,GAAG,MAAM,EAAO,CAAC;IACtB,CAAC;CAAA;AAED;;GAEG;AACH,MAAM,UAAU,eAAe;IAG7B,OAAO,KAAM,SAAQ,OAAiC;iBAC3B,mBAAc,GAAG,OAAO,CAAC;iBAEzB,kBAAa,GAAG,mBAAmB,CAAC;QAE7D;;WAEG;QACH,MAAM,CAAC,YAAY,CAAC,SAAiB;YACnC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YAC1D,OAAO,IAAI,CAAC;QACd,CAAC;QAED;;WAEG;QACH,KAAK,CAAC,MAAM,CAAC,MAA2B;YACtC,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB;IAGpC,OAAO,KAAM,SAAQ,OAAgD;iBAC1C,mBAAc,GAAG,OAAO,CAAC;iBAEzB,kBAAa,GAAG,0BAA0B,CAAC;QAEpE;;WAEG;QACH,MAAM,CAAC,YAAY,CAAC,SAAiB;YACnC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YAC1D,OAAO,IAAI,CAAC;QACd,CAAC;QAED;;WAEG;QACH,KAAK,CAAC,MAAM,CAAC,MAAkC;YAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAE,CAAC;YACxD,OAAO,IAAI,WAAW,CAAC,cAAc,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QACvD,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,SAAoB,EACpB,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAA+E;IAEvG,MAAM,eAAe,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAE7D,IAAI,eAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAClD,eAAe,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,WAAW,EAAG,IAAkC,CAAC,cAAc,EAAE,CAAC,CAAC;IACtG,CAAC;IACD,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAE7C,OAAO,CAAC,MAAM,eAAe,CAAC,KAAK,EAAE,CAAoC,CAAC;AAC5E,CAAC"}
|