Skip to content

Commit 0909e7f

Browse files
authored
fix: ensuring secret generation is accurate (#578)
Description of changes: When generating SetSDK, we were passing the memberName to check if a field is a secret. When the secret field is nested, we need to pass memberFieldPath. That is what this change accomplishing By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
1 parent a782a62 commit 0909e7f

File tree

2 files changed

+63
-2
lines changed

2 files changed

+63
-2
lines changed

pkg/generate/code/set_sdk.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1187,7 +1187,7 @@ func SetSDKForStruct(
11871187
)
11881188
switch memberShape.Type {
11891189
case "list", "structure", "map", "union":
1190-
adaptiveCollection := setSDKAdaptiveResourceCollection(memberShape, targetVarName, memberName, sourceAdaptedVarName, indent, r.IsSecretField(memberName))
1190+
adaptiveCollection := setSDKAdaptiveResourceCollection(memberShape, targetVarName, memberName, sourceAdaptedVarName, indent, r.IsSecretField(memberFieldPath))
11911191
out += adaptiveCollection
11921192
if adaptiveCollection != "" {
11931193
break
@@ -1739,7 +1739,7 @@ func setSDKForUnion(
17391739

17401740
switch memberShape.Type {
17411741
case "list", "structure", "map", "union":
1742-
adaption := setSDKAdaptiveResourceCollection(memberShape, targetVarName, memberName, sourceAdaptedVarName, indent, r.IsSecretField(memberName))
1742+
adaption := setSDKAdaptiveResourceCollection(memberShape, targetVarName, memberName, sourceAdaptedVarName, indent, r.IsSecretField(memberFieldPath))
17431743
out += adaption
17441744
if adaption != "" {
17451745
break

pkg/generate/code/set_sdk_test.go

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,67 @@ func TestSetSDK_APIGWv2_Route_Create(t *testing.T) {
8585
)
8686
}
8787

88+
func TestSetSDK_MemoryDB_User_Create(t *testing.T) {
89+
assert := assert.New(t)
90+
require := require.New(t)
91+
92+
g := testutil.NewModelForService(t, "memorydb")
93+
94+
crd := testutil.GetCRDByName(t, g, "User")
95+
require.NotNil(crd)
96+
97+
expected := `
98+
if r.ko.Spec.AccessString != nil {
99+
res.AccessString = r.ko.Spec.AccessString
100+
}
101+
if r.ko.Spec.AuthenticationMode != nil {
102+
f1 := &svcsdktypes.AuthenticationMode{}
103+
if r.ko.Spec.AuthenticationMode.Passwords != nil {
104+
f1f0 := []string{}
105+
for _, f1f0iter := range r.ko.Spec.AuthenticationMode.Passwords {
106+
var f1f0elem string
107+
if f1f0iter != nil {
108+
tmpSecret, err := rm.rr.SecretValueFromReference(ctx, f1f0iter)
109+
if err != nil {
110+
return nil, ackrequeue.Needed(err)
111+
}
112+
if tmpSecret != "" {
113+
f1f0elem = tmpSecret
114+
}
115+
}
116+
f1f0 = append(f1f0, f1f0elem)
117+
}
118+
f1.Passwords = f1f0
119+
}
120+
if r.ko.Spec.AuthenticationMode.Type != nil {
121+
f1.Type = svcsdktypes.InputAuthenticationType(*r.ko.Spec.AuthenticationMode.Type)
122+
}
123+
res.AuthenticationMode = f1
124+
}
125+
if r.ko.Spec.Tags != nil {
126+
f2 := []svcsdktypes.Tag{}
127+
for _, f2iter := range r.ko.Spec.Tags {
128+
f2elem := &svcsdktypes.Tag{}
129+
if f2iter.Key != nil {
130+
f2elem.Key = f2iter.Key
131+
}
132+
if f2iter.Value != nil {
133+
f2elem.Value = f2iter.Value
134+
}
135+
f2 = append(f2, *f2elem)
136+
}
137+
res.Tags = f2
138+
}
139+
if r.ko.Spec.Name != nil {
140+
res.UserName = r.ko.Spec.Name
141+
}
142+
`
143+
assert.Equal(
144+
expected,
145+
code.SetSDK(crd.Config(), crd, model.OpTypeCreate, "r.ko", "res", 1),
146+
)
147+
}
148+
88149
func TestSetSDK_OpenSearch_Domain_Create(t *testing.T) {
89150
assert := assert.New(t)
90151
require := require.New(t)

0 commit comments

Comments
 (0)