Skip to content

Commit

Permalink
Testing decommission toggle
Browse files Browse the repository at this point in the history
  • Loading branch information
flurdy committed Jan 24, 2025
1 parent 07249d5 commit 8f69753
Show file tree
Hide file tree
Showing 4 changed files with 79 additions and 20 deletions.
10 changes: 9 additions & 1 deletion src/api/undeploy/helpers/delete-deployment-file.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,16 @@ describe('#deleteDeploymentFiles', () => {
expect(removeDeployment).toHaveBeenCalledWith(serviceName, logger)
})

test('should not delete deployment file if decommission is disabled', async () => {
isFeatureEnabled.mockReturnValueOnce(false).mockReturnValue(true)

await deleteDeploymentFiles({ serviceName, logger })

expect(removeDeployment).toHaveBeenCalledTimes(0)
})

test('should not delete deployment file if feature disabled', async () => {
isFeatureEnabled.mockReturnValue(false)
isFeatureEnabled.mockReturnValueOnce(true).mockReturnValue(false)

await deleteDeploymentFiles({ serviceName, logger })

Expand Down
32 changes: 31 additions & 1 deletion src/api/undeploy/helpers/delete-ecs-service.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,37 @@ describe('#deleteEcsService', () => {
)
})

test('should not remove ECS service if feature disabled', async () => {
test('should not remove ECS service if decommission is enabled but feature is disabled', async () => {
isFeatureEnabled.mockReturnValueOnce(true).mockReturnValue(false)

await deleteEcsService({ serviceName, environment, logger })

expect(isFeatureEnabled).toHaveBeenCalledTimes(2)
expect(isFeatureEnabled).toHaveBeenNthCalledWith(
1,
featureToggles.decommissionService
)
expect(isFeatureEnabled).toHaveBeenLastCalledWith(
featureToggles.undeploy.deleteEcsService
)
expect(lookupTenantService).toHaveBeenCalledTimes(0)
expect(removeEcsService).toHaveBeenCalledTimes(0)
})

test('should not remove ECS service if decommission feature is disabled', async () => {
isFeatureEnabled.mockReturnValueOnce(false).mockReturnValue(true)

await deleteEcsService({ serviceName, environment, logger })

expect(isFeatureEnabled).toHaveBeenCalledTimes(1)
expect(isFeatureEnabled).toHaveBeenLastCalledWith(
featureToggles.decommissionService
)
expect(lookupTenantService).toHaveBeenCalledTimes(0)
expect(removeEcsService).toHaveBeenCalledTimes(0)
})

test('should not remove ECS service if both features are disabled', async () => {
isFeatureEnabled.mockReturnValue(false)

await deleteEcsService({ serviceName, environment, logger })
Expand Down
37 changes: 21 additions & 16 deletions src/api/undeploy/helpers/undeploy-service-from-environment.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,26 +39,31 @@ export async function undeployServiceFromEnvironment({
return
}

await registerUndeployment(serviceName, environment, user, undeploymentId)
if (isFeatureEnabled(featureToggles.decommissionService)) {
await registerUndeployment(serviceName, environment, user, undeploymentId)

if (isFeatureEnabled(featureToggles.scaleEcsToZero)) {
const shouldDeployByFile = deployFromFileEnvironments.includes(environment)
if (!shouldDeployByFile) {
logger.warn(
`Scaling ${serviceName} to zero in ${environment} not possible as env is not file based`
)
if (isFeatureEnabled(featureToggles.scaleEcsToZero)) {
const shouldDeployByFile =
deployFromFileEnvironments.includes(environment)
if (!shouldDeployByFile) {
logger.warn(
`Scaling ${serviceName} to zero in ${environment} not possible as env is not file based`
)
} else {
await scaleEcsToZero({
serviceName,
environment,
zone,
user,
undeploymentId,
logger
})
}
} else {
await scaleEcsToZero({
serviceName,
environment,
zone,
user,
undeploymentId,
logger
})
logger.info('Scale ECS Service to 0 feature is disabled')
}
} else {
logger.info('Scale ECS Service to 0 feature is disabled')
logger.info('Decommission feature is disabled')
}
return undeploymentId
}
Expand Down
20 changes: 18 additions & 2 deletions src/api/undeploy/helpers/undeploy-service-from-environment.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,17 +39,32 @@ async function callUndeployServiceFromEnvironment() {

describe('#undeployServiceFromEnvironment', () => {
test('should register undeployment', async () => {
isFeatureEnabled.mockReturnValue(true)

await callUndeployServiceFromEnvironment()

expect(registerUndeployment).toHaveBeenCalledTimes(1)
})

test('if not enabled should not call scaleEcsToZero', async () => {
isFeatureEnabled.mockReturnValue(false)
isFeatureEnabled.mockReturnValueOnce(true).mockReturnValue(false)

await callUndeployServiceFromEnvironment()

expect(isFeatureEnabled).toHaveBeenCalledWith(featureToggles.scaleEcsToZero)
expect(isFeatureEnabled).toHaveBeenLastCalledWith(
featureToggles.scaleEcsToZero
)
expect(scaleEcsToZero).toHaveBeenCalledTimes(0)
})

test('if decommission is not enabled should not call scaleEcsToZero', async () => {
isFeatureEnabled.mockReturnValueOnce(false).mockReturnValue(true)

await callUndeployServiceFromEnvironment()

expect(isFeatureEnabled).toHaveBeenLastCalledWith(
featureToggles.decommissionService
)
expect(scaleEcsToZero).toHaveBeenCalledTimes(0)
})

Expand All @@ -59,6 +74,7 @@ describe('#undeployServiceFromEnvironment', () => {
await callUndeployServiceFromEnvironment()

expect(isFeatureEnabled).toHaveBeenCalledWith(featureToggles.scaleEcsToZero)
expect(lookupServiceInEnvironment).toHaveBeenCalledTimes(1)
expect(scaleEcsToZero).toHaveBeenCalledTimes(1)
expect(scaleEcsToZero).toHaveBeenCalledWith({
serviceName,
Expand Down

0 comments on commit 8f69753

Please sign in to comment.