Skip to content

Commit 42482bb

Browse files
authored
Add a standard test for secrets failing in node mode (#1517)
1 parent 5f5c55e commit 42482bb

2 files changed

Lines changed: 54 additions & 0 deletions

File tree

pkg/workflows/wasm/host/standard_test.go

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -434,6 +434,39 @@ func TestStandardSecrets(t *testing.T) {
434434
})
435435
}
436436

437+
func TestStandardSecretsFailInNodeMode(t *testing.T) {
438+
mockExecutionHelper := NewMockExecutionHelper(t)
439+
mockExecutionHelper.EXPECT().GetWorkflowExecutionID().Return("id")
440+
mockExecutionHelper.EXPECT().GetNodeTime().RunAndReturn(func() time.Time {
441+
return time.Now()
442+
}).Maybe()
443+
mockExecutionHelper.EXPECT().GetDONTime().RunAndReturn(func() (time.Time, error) {
444+
return time.Now(), nil
445+
}).Maybe()
446+
mockExecutionHelper.EXPECT().CallCapability(mock.Anything, mock.Anything).RunAndReturn(func(_ context.Context, request *sdk.CapabilityRequest) (*sdk.CapabilityResponse, error) {
447+
assert.Equal(t, "consensus@1.0.0-alpha", request.Id)
448+
input := &sdk.SimpleConsensusInputs{}
449+
require.NoError(t, request.Payload.UnmarshalTo(input))
450+
451+
var errMsg string
452+
switch msg := input.Observation.(type) {
453+
case *sdk.SimpleConsensusInputs_Error:
454+
errMsg = msg.Error
455+
default:
456+
require.Fail(t, "observation must be an error")
457+
}
458+
return &sdk.CapabilityResponse{
459+
Response: &sdk.CapabilityResponse_Error{Error: errMsg},
460+
}, nil
461+
}).Once()
462+
m := makeTestModule(t)
463+
request := triggerExecuteRequest(t, 0, &basictrigger.Outputs{CoolOutput: anyTestTriggerValue})
464+
465+
errStr := executeWithError(t, m, request, mockExecutionHelper)
466+
467+
require.Contains(t, errStr, "cannot use Runtime inside RunInNodeMode")
468+
}
469+
437470
func triggerExecuteRequest(t *testing.T, id uint64, trigger proto.Message) *sdk.ExecuteRequest {
438471
wrappedTrigger, err := anypb.New(trigger)
439472
require.NoError(t, err)
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package main
2+
3+
import (
4+
"github.com/smartcontractkit/chainlink-common/pkg/workflows/wasm/host/internal/rawsdk"
5+
"github.com/smartcontractkit/chainlink-protos/cre/go/sdk"
6+
)
7+
8+
func main() {
9+
// The real SDKs do something to capture the runtime.
10+
// This is to mimic the mode switch calls they would make
11+
rawsdk.SwitchModes(int32(sdk.Mode_MODE_NODE))
12+
13+
consensus := &sdk.SimpleConsensusInputs{
14+
Observation: &sdk.SimpleConsensusInputs_Error{Error: "cannot use Runtime inside RunInNodeMode"},
15+
Descriptors: &sdk.ConsensusDescriptor{Descriptor_: &sdk.ConsensusDescriptor_Aggregation{Aggregation: sdk.AggregationType_AGGREGATION_TYPE_IDENTICAL}},
16+
}
17+
18+
err := rawsdk.DoRequestErr("consensus@1.0.0-alpha", "Simple", sdk.Mode_MODE_DON, consensus)
19+
rawsdk.SwitchModes(int32(sdk.Mode_MODE_DON))
20+
rawsdk.SendError(err)
21+
}

0 commit comments

Comments
 (0)