Skip to content

Commit dbf05e3

Browse files
committed
chore: fix tests and add tests
1 parent ebd5df4 commit dbf05e3

File tree

2 files changed

+65
-0
lines changed

2 files changed

+65
-0
lines changed

pkg/local_workflows/report_analytics_workflow_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package localworkflows
22

33
import (
44
"bytes"
5+
"context"
56
"fmt"
67
"io"
78
"net/http"
@@ -46,6 +47,7 @@ func Test_ReportAnalytics_ReportAnalyticsEntryPoint_shouldReportV2AnalyticsPaylo
4647
invocationContextMock.EXPECT().GetEnhancedLogger().Return(&logger).AnyTimes()
4748
invocationContextMock.EXPECT().GetEngine().Return(engineMock).AnyTimes()
4849
invocationContextMock.EXPECT().GetNetworkAccess().Return(networkAccessMock).AnyTimes()
50+
invocationContextMock.EXPECT().Context().Return(context.Background()).AnyTimes()
4951
networkAccessMock.EXPECT().GetHttpClient().Return(mockClient).AnyTimes()
5052

5153
_, err := reportAnalyticsEntrypoint(invocationContextMock, []workflow.Data{testPayload(requestPayload)})
@@ -84,6 +86,7 @@ func Test_ReportAnalytics_ReportAnalyticsEntryPoint_reportsHttpStatusError(t *te
8486
invocationContextMock.EXPECT().GetConfiguration().Return(config).AnyTimes()
8587
invocationContextMock.EXPECT().GetEnhancedLogger().Return(&logger).AnyTimes()
8688
invocationContextMock.EXPECT().GetNetworkAccess().Return(networkAccessMock).AnyTimes()
89+
invocationContextMock.EXPECT().Context().Return(context.Background()).AnyTimes()
8790
networkAccessMock.EXPECT().GetHttpClient().Return(mockClient).AnyTimes()
8891

8992
_, err := reportAnalyticsEntrypoint(invocationContextMock, []workflow.Data{testPayload(requestPayload)})
@@ -112,6 +115,7 @@ func Test_ReportAnalytics_ReportAnalyticsEntryPoint_reportsHttpError(t *testing.
112115
invocationContextMock.EXPECT().GetConfiguration().Return(config).AnyTimes()
113116
invocationContextMock.EXPECT().GetEnhancedLogger().Return(&logger).AnyTimes()
114117
invocationContextMock.EXPECT().GetNetworkAccess().Return(networkAccessMock).AnyTimes()
118+
invocationContextMock.EXPECT().Context().Return(context.Background()).AnyTimes()
115119
networkAccessMock.EXPECT().GetHttpClient().Return(mockClient).AnyTimes()
116120

117121
_, err := reportAnalyticsEntrypoint(invocationContextMock, []workflow.Data{testPayload(requestPayload)})
@@ -172,6 +176,7 @@ func Test_ReportAnalytics_ReportAnalyticsEntryPoint_usesCLIInput(t *testing.T) {
172176
invocationContextMock.EXPECT().GetNetworkAccess().Return(networkAccessMock).AnyTimes()
173177
invocationContextMock.EXPECT().GetEngine().Return(engineMock).AnyTimes()
174178
invocationContextMock.EXPECT().GetRuntimeInfo().Return(runtimeinfo.New(runtimeinfo.WithName("snyk-cli"), runtimeinfo.WithVersion("1.1233.0"))).AnyTimes()
179+
invocationContextMock.EXPECT().Context().Return(context.Background()).AnyTimes()
175180
engineMock.EXPECT().GetWorkflows().AnyTimes()
176181
networkAccessMock.EXPECT().GetHttpClient().Return(mockClient).AnyTimes()
177182

pkg/workflow/engine_test.go

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package workflow
22

33
import (
4+
"context"
45
"fmt"
56
"net/url"
67
"testing"
@@ -524,3 +525,62 @@ func Test_EngineInvocationConcurrent(t *testing.T) {
524525
}
525526
}
526527
}
528+
529+
func Test_EngineImpl_InvokeWithContext_CustomContext(t *testing.T) {
530+
config := configuration.NewInMemory()
531+
engine := NewWorkFlowEngine(config)
532+
533+
wfId := NewWorkflowIdentifier("ctxtest")
534+
flagset := pflag.NewFlagSet("ctx", pflag.ContinueOnError)
535+
536+
var receivedCtx context.Context
537+
_, err := engine.Register(wfId, ConfigurationOptionsFromFlagset(flagset), func(invocation InvocationContext, input []Data) ([]Data, error) {
538+
receivedCtx = invocation.Context()
539+
return nil, nil
540+
})
541+
assert.NoError(t, err)
542+
543+
err = engine.Init()
544+
assert.NoError(t, err)
545+
546+
// Create a context with a specific value and deadline to verify it's passed through
547+
type ctxKey string
548+
testKey := ctxKey("test-key")
549+
testValue := "test-value"
550+
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
551+
defer cancel()
552+
ctx = context.WithValue(ctx, testKey, testValue)
553+
554+
_, err = engine.Invoke(wfId, WithContext(ctx))
555+
assert.NoError(t, err)
556+
assert.NotNil(t, receivedCtx)
557+
assert.Equal(t, testValue, receivedCtx.Value(testKey))
558+
559+
// Verify deadline is propagated
560+
deadline, hasDeadline := receivedCtx.Deadline()
561+
assert.True(t, hasDeadline, "context should have a deadline")
562+
assert.False(t, deadline.IsZero(), "deadline should not be zero")
563+
}
564+
565+
func Test_EngineImpl_InvokeWithContext_DefaultContext(t *testing.T) {
566+
config := configuration.NewInMemory()
567+
engine := NewWorkFlowEngine(config)
568+
569+
wfId := NewWorkflowIdentifier("ctxdefault")
570+
flagset := pflag.NewFlagSet("cd", pflag.ContinueOnError)
571+
572+
var receivedCtx context.Context
573+
_, err := engine.Register(wfId, ConfigurationOptionsFromFlagset(flagset), func(invocation InvocationContext, input []Data) ([]Data, error) {
574+
receivedCtx = invocation.Context()
575+
return nil, nil
576+
})
577+
assert.NoError(t, err)
578+
579+
err = engine.Init()
580+
assert.NoError(t, err)
581+
582+
// Invoke without WithContext - should get a non-nil default context
583+
_, err = engine.Invoke(wfId)
584+
assert.NoError(t, err)
585+
assert.NotNil(t, receivedCtx)
586+
}

0 commit comments

Comments
 (0)