|
4 | 4 | "context" |
5 | 5 | "testing" |
6 | 6 |
|
| 7 | + "github.com/aws/aws-sdk-go-v2/aws" |
| 8 | + |
7 | 9 | cfntypes "github.com/aws/aws-sdk-go-v2/service/cloudformation/types" |
8 | 10 | "github.com/stretchr/testify/mock" |
9 | 11 |
|
@@ -57,6 +59,59 @@ func TestRemover_DeleteTasks(t *testing.T) { |
57 | 59 | } |
58 | 60 | } |
59 | 61 |
|
| 62 | +func TestRemover_DeleteTasks_ClusterDeleteCase(t *testing.T) { |
| 63 | + mockStackRemover := mocks.NewStackRemover(t) |
| 64 | + |
| 65 | + // Create mock stacks for ListCapabilityStacks (cap-a, cap-b) |
| 66 | + capAStack := &cfntypes.Stack{ |
| 67 | + StackName: aws.String("eksctl-test-cluster-capability-cap-a"), |
| 68 | + Tags: []cfntypes.Tag{ |
| 69 | + {Key: aws.String(api.CapabilityNameTag), Value: aws.String("cap-a")}, |
| 70 | + }, |
| 71 | + } |
| 72 | + capBStack := &cfntypes.Stack{ |
| 73 | + StackName: aws.String("eksctl-test-cluster-capability-cap-b"), |
| 74 | + Tags: []cfntypes.Tag{ |
| 75 | + {Key: aws.String(api.CapabilityNameTag), Value: aws.String("cap-b")}, |
| 76 | + }, |
| 77 | + } |
| 78 | + |
| 79 | + // Create mock stacks for ListCapabilitiesIAMStacks (cap-b, cap-c) |
| 80 | + capBIAMStack := &cfntypes.Stack{ |
| 81 | + StackName: aws.String("eksctl-test-cluster-capability-iam-cap-b"), |
| 82 | + Tags: []cfntypes.Tag{ |
| 83 | + {Key: aws.String(api.CapabilityNameTag), Value: aws.String("cap-b")}, |
| 84 | + }, |
| 85 | + } |
| 86 | + capCIAMStack := &cfntypes.Stack{ |
| 87 | + StackName: aws.String("eksctl-test-cluster-capability-iam-cap-c"), |
| 88 | + Tags: []cfntypes.Tag{ |
| 89 | + {Key: aws.String(api.CapabilityNameTag), Value: aws.String("cap-c")}, |
| 90 | + }, |
| 91 | + } |
| 92 | + |
| 93 | + // Mock stack listing calls |
| 94 | + mockStackRemover.EXPECT().ListCapabilityStacks(mock.Anything).Return([]*cfntypes.Stack{capAStack, capBStack}, nil) |
| 95 | + mockStackRemover.EXPECT().ListCapabilitiesIAMStacks(mock.Anything).Return([]*cfntypes.Stack{capBIAMStack, capCIAMStack}, nil) |
| 96 | + |
| 97 | + remover := capability.NewRemover("test-cluster", mockStackRemover) |
| 98 | + |
| 99 | + // Pass in 0 capabilities - cluster delete case |
| 100 | + taskTree, err := remover.DeleteTasks(context.Background(), []capability.Summary{}) |
| 101 | + if err != nil { |
| 102 | + t.Fatalf("Expected no error, got %v", err) |
| 103 | + } |
| 104 | + |
| 105 | + // Should have 3 tasks (cap-a, cap-b, cap-c - deduplicated from stacks) |
| 106 | + if taskTree.Len() != 3 { |
| 107 | + t.Errorf("Expected 3 tasks, got %d", taskTree.Len()) |
| 108 | + } |
| 109 | + // Should be parallel execution |
| 110 | + if !taskTree.Parallel { |
| 111 | + t.Error("Expected parallel task execution, got sequential") |
| 112 | + } |
| 113 | +} |
| 114 | + |
60 | 115 | func TestRemover_DeleteWithWait(t *testing.T) { |
61 | 116 | // This test is simplified to avoid complex mock setup |
62 | 117 | // The functionality is tested through integration tests |
|
0 commit comments