@@ -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+
568613func (s * SharedServerSuite ) TestActivity_Execute_Success () {
569614 var receivedInput any
570615 s .Worker ().OnDevActivity (func (ctx context.Context , a any ) (any , error ) {
0 commit comments