Skip to content

Commit 54ee716

Browse files
Fix secrets async calls (#83)
1 parent eb3c9a8 commit 54ee716

File tree

2 files changed

+32
-2
lines changed

2 files changed

+32
-2
lines changed

internal/sdkimpl/runtime.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ func (d *Runtime) GetSecret(req *sdk.SecretRequest) cre.Promise[*sdk.Secret] {
128128
}
129129

130130
d.nextCallId++
131+
myId := d.nextCallId
131132

132133
sr := &sdk.GetSecretsRequest{
133134
Requests: []*sdk.SecretRequest{req},
@@ -141,14 +142,14 @@ func (d *Runtime) GetSecret(req *sdk.SecretRequest) cre.Promise[*sdk.Secret] {
141142

142143
return cre.NewBasicPromise(func() (*sdk.Secret, error) {
143144
awaitRequest := &sdk.AwaitSecretsRequest{
144-
Ids: []int32{d.nextCallId},
145+
Ids: []int32{myId},
145146
}
146147
awaitResponse, err := d.AwaitSecrets(awaitRequest, d.MaxResponseSize)
147148
if err != nil {
148149
return nil, err
149150
}
150151

151-
resp, ok := awaitResponse.Responses[d.nextCallId]
152+
resp, ok := awaitResponse.Responses[myId]
152153
if !ok {
153154
return nil, fmt.Errorf("cannot find response for %d", d.nextCallId)
154155
}

internal/sdkimpl/runtime_test.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,35 @@ func TestRuntime_CallCapability(t *testing.T) {
155155
})
156156
}
157157

158+
func TestRuntime_GetSecret(t *testing.T) {
159+
t.Run("runs async", func(t *testing.T) {
160+
test := func(_ string, rt cre.Runtime, _ *basictrigger.Outputs) (string, error) {
161+
p1 := rt.GetSecret(&sdk.SecretRequest{Id: "secret1"})
162+
163+
p2 := rt.GetSecret(&sdk.SecretRequest{Id: "secret2"})
164+
165+
result1, err := p1.Await()
166+
assert.Equal(t, "value1", result1.Value)
167+
require.NoError(t, err)
168+
169+
result2, err := p2.Await()
170+
assert.Equal(t, "value2", result2.Value)
171+
require.NoError(t, err)
172+
return "", nil
173+
}
174+
175+
runtime := testutils.NewRuntime(t, map[testutils.Namespace]map[testutils.ID]string{
176+
"": {
177+
"secret1": "value1",
178+
"secret2": "value2",
179+
},
180+
})
181+
_, err := test(anyEnvConfig, runtime, anyTrigger)
182+
require.NoError(t, err)
183+
})
184+
185+
}
186+
158187
func TestRuntime_Rand(t *testing.T) {
159188
t.Run("random delegates", func(t *testing.T) {
160189
runtime := testutils.NewRuntime(t, nil)

0 commit comments

Comments
 (0)