Skip to content

Commit 72bf9bb

Browse files
committed
adding some test for ParseARN function and updating some more logic in connector.go
1 parent 4660fca commit 72bf9bb

File tree

2 files changed

+69
-1
lines changed

2 files changed

+69
-1
lines changed

pkg/admin/connector.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,7 @@ func GetKafkaCredentials(ctx context.Context, svc *secretsmanager.Client, secret
247247
return creds, fmt.Errorf("Couldn't parse the ARN for secret: %s, error: %v", secretArn, err)
248248
}
249249

250-
secretParts := strings.Split(arn.Resource, ":")
250+
secretParts := strings.SplitN(arn.Resource, ":", 2) // Split into at most 2 parts for cases of multi-colon resources
251251
if len(secretParts) < 2 {
252252
return creds, fmt.Errorf("invalid resource format in ARN: %s", secretArn)
253253
}

pkg/admin/connector_test.go

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
package admin
2+
3+
import (
4+
"testing"
5+
6+
"github.com/stretchr/testify/assert"
7+
)
8+
9+
func TestParseARN(t *testing.T) {
10+
tests := []struct {
11+
name string
12+
input string
13+
expected ARN
14+
expectError bool
15+
}{
16+
{
17+
name: "valid secrets manager ARN",
18+
input: "arn:aws:secretsmanager:us-west-2:123456789012:secret:mysecret-AbCdEf",
19+
expected: ARN{
20+
Partition: "aws",
21+
Service: "secretsmanager",
22+
Region: "us-west-2",
23+
AccountID: "123456789012",
24+
Resource: "secret:mysecret-AbCdEf",
25+
},
26+
expectError: false,
27+
},
28+
{
29+
name: "ARN with colons in resource",
30+
input: "arn:aws:secretsmanager:us-west-2:123456789012:secret:my-secret:version-123",
31+
expected: ARN{
32+
Partition: "aws",
33+
Service: "secretsmanager",
34+
Region: "us-west-2",
35+
AccountID: "123456789012",
36+
Resource: "secret:my-secret:version-123",
37+
},
38+
expectError: false,
39+
},
40+
{
41+
name: "invalid ARN prefix",
42+
input: "invalid:aws:secretsmanager:us-west-2:123456789012:secret:test",
43+
expectError: true,
44+
},
45+
{
46+
name: "too few parts",
47+
input: "arn:aws:secretsmanager",
48+
expectError: true,
49+
},
50+
{
51+
name: "empty string",
52+
input: "",
53+
expectError: true,
54+
},
55+
}
56+
57+
for _, tt := range tests {
58+
t.Run(tt.name, func(t *testing.T) {
59+
result, err := ParseARN(tt.input)
60+
if tt.expectError {
61+
assert.Error(t, err)
62+
} else {
63+
assert.NoError(t, err)
64+
assert.Equal(t, tt.expected, result)
65+
}
66+
})
67+
}
68+
}

0 commit comments

Comments
 (0)