From acc415a676db272a480bf64e3257fdbdc581eecb Mon Sep 17 00:00:00 2001 From: Sanne Raymaekers Date: Tue, 6 Aug 2024 11:12:04 +0200 Subject: [PATCH] cloud/awscloud: test terminating a secure instance --- internal/cloud/awscloud/mocks_test.go | 10 ++++++++- .../cloud/awscloud/secure-instance_test.go | 22 +++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/internal/cloud/awscloud/mocks_test.go b/internal/cloud/awscloud/mocks_test.go index 00757d43a..ba0035ccd 100644 --- a/internal/cloud/awscloud/mocks_test.go +++ b/internal/cloud/awscloud/mocks_test.go @@ -262,6 +262,7 @@ func (m *ec2mock) DescribeInstanceStatus(ctx context.Context, input *ec2.Describ } func (m *ec2mock) RunInstances(ctx context.Context, input *ec2.RunInstancesInput, optfns ...func(*ec2.Options)) (*ec2.RunInstancesOutput, error) { + m.calledFn["RunInstances"] += 1 return nil, nil } @@ -286,7 +287,14 @@ func (m *ec2mock) CreateFleet(ctx context.Context, input *ec2.CreateFleetInput, func (m *ec2mock) DeleteFleets(ctx context.Context, input *ec2.DeleteFleetsInput, optfns ...func(*ec2.Options)) (*ec2.DeleteFleetsOutput, error) { m.calledFn["DeleteFleets"] += 1 - return nil, nil + return &ec2.DeleteFleetsOutput{ + UnsuccessfulFleetDeletions: nil, + SuccessfulFleetDeletions: []ec2types.DeleteFleetSuccessItem{ + { + FleetId: aws.String("fleet-id"), + }, + }, + }, nil } func (m *ec2mock) CopyImage(ctx context.Context, input *ec2.CopyImageInput, optfns ...func(*ec2.Options)) (*ec2.CopyImageOutput, error) { diff --git a/internal/cloud/awscloud/secure-instance_test.go b/internal/cloud/awscloud/secure-instance_test.go index ad4983161..824335c3c 100644 --- a/internal/cloud/awscloud/secure-instance_test.go +++ b/internal/cloud/awscloud/secure-instance_test.go @@ -82,3 +82,25 @@ func TestSIRunSecureInstance(t *testing.T) { require.Equal(t, 1, m.calledFn["CreateSecurityGroup"]) require.Equal(t, 1, m.calledFn["CreateLaunchTemplate"]) } + +func TestSITerminateSecureInstance(t *testing.T) { + m := newEc2Mock(t) + aws := awscloud.NewForTest(m, &ec2imdsmock{t, "instance-id", "region1"}, nil, nil, nil) + require.NotNil(t, aws) + + // Small hack, describeinstances returns terminate/running + // depending on how many times it was called. + m.calledFn["DescribeInstances"] = 1 + + err := aws.TerminateSecureInstance(&awscloud.SecureInstance{ + FleetID: "fleet-id", + SGID: "sg-id", + LTID: "lt-id", + InstanceID: "instance-id", + }) + require.NoError(t, err) + require.Equal(t, 1, m.calledFn["DeleteFleets"]) + require.Equal(t, 1, m.calledFn["DeleteSecurityGroup"]) + require.Equal(t, 1, m.calledFn["DeleteLaunchTemplate"]) + require.Equal(t, 2, m.calledFn["DescribeInstances"]) +}