Skip to content

Commit a59376a

Browse files
committed
Add test for --headers flag on activity start
Verifies that headers passed via --headers are propagated into the StartActivityExecutionRequest proto, mirroring the existing TestWorkflow_Start_With_headers test for workflows.
1 parent c5a9c75 commit a59376a

1 file changed

Lines changed: 45 additions & 0 deletions

File tree

internal/temporalcli/commands.activity_test.go

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import (
1515
"go.temporal.io/api/serviceerror"
1616
"go.temporal.io/api/workflowservice/v1"
1717
"go.temporal.io/sdk/client"
18+
"go.temporal.io/sdk/converter"
1819
"go.temporal.io/sdk/temporal"
1920
"go.temporal.io/sdk/workflow"
2021
"google.golang.org/grpc"
@@ -565,6 +566,50 @@ func (s *SharedServerSuite) TestActivity_Start() {
565566
s.NotEmpty(jsonOut["taskQueue"])
566567
}
567568

569+
func (s *SharedServerSuite) TestActivity_Start_With_Headers() {
570+
s.Worker().OnDevActivity(func(ctx context.Context, a any) (any, error) {
571+
return nil, nil
572+
})
573+
574+
var capturedHeader *workflowservice.StartActivityExecutionRequest
575+
var mu sync.Mutex
576+
s.CommandHarness.Options.AdditionalClientGRPCDialOptions = append(
577+
s.CommandHarness.Options.AdditionalClientGRPCDialOptions,
578+
grpc.WithChainUnaryInterceptor(func(
579+
ctx context.Context,
580+
method string, req, reply any,
581+
cc *grpc.ClientConn, invoker grpc.UnaryInvoker, opts ...grpc.CallOption,
582+
) error {
583+
if startReq, ok := req.(*workflowservice.StartActivityExecutionRequest); ok {
584+
mu.Lock()
585+
capturedHeader = startReq
586+
mu.Unlock()
587+
}
588+
return invoker(ctx, method, req, reply, cc, opts...)
589+
}),
590+
)
591+
592+
res := s.Execute(
593+
"activity", "start",
594+
"--activity-id", "header-test",
595+
"--type", "DevActivity",
596+
"--task-queue", s.Worker().Options.TaskQueue,
597+
"--start-to-close-timeout", "30s",
598+
"--headers", "id=123",
599+
"--address", s.Address(),
600+
)
601+
s.NoError(res.Err)
602+
603+
mu.Lock()
604+
defer mu.Unlock()
605+
s.NotNil(capturedHeader)
606+
payload := capturedHeader.Header.Fields["id"]
607+
s.NotNil(payload)
608+
var val int
609+
s.NoError(converter.GetDefaultDataConverter().FromPayload(payload, &val))
610+
s.Equal(123, val)
611+
}
612+
568613
func (s *SharedServerSuite) TestActivity_Execute_Success() {
569614
var receivedInput any
570615
s.Worker().OnDevActivity(func(ctx context.Context, a any) (any, error) {

0 commit comments

Comments
 (0)