@@ -686,3 +686,57 @@ func TestMain(m *testing.M) {
686
686
687
687
os .Exit (code )
688
688
}
689
+
690
+ func TestReportTaskNilPointerDeref (t * testing.T ) {
691
+ t .Parallel ()
692
+
693
+ // Create deps without a task reporter (simulating remote MCP server scenario)
694
+ client , _ := coderdtest .NewWithDatabase (t , nil )
695
+ deps , err := toolsdk .NewDeps (client )
696
+ require .NoError (t , err )
697
+
698
+ // Prepare test arguments
699
+ args := toolsdk.ReportTaskArgs {
700
+ Summary : "Test task" ,
701
+ Link : "https://example.com" ,
702
+ State : string (codersdk .WorkspaceAppStatusStateWorking ),
703
+ }
704
+
705
+ _ , err = toolsdk .ReportTask .Handler (t .Context (), deps , args )
706
+
707
+ // We expect an error, not a panic
708
+ require .Error (t , err )
709
+ require .Contains (t , err .Error (), "task reporting not available" )
710
+ }
711
+
712
+ func TestReportTaskWithReporter (t * testing.T ) {
713
+ t .Parallel ()
714
+
715
+ // Create deps with a task reporter
716
+ client , _ := coderdtest .NewWithDatabase (t , nil )
717
+
718
+ called := false
719
+ reporter := func (args toolsdk.ReportTaskArgs ) error {
720
+ called = true
721
+ require .Equal (t , "Test task" , args .Summary )
722
+ require .Equal (t , "https://example.com" , args .Link )
723
+ require .Equal (t , string (codersdk .WorkspaceAppStatusStateWorking ), args .State )
724
+ return nil
725
+ }
726
+
727
+ deps , err := toolsdk .NewDeps (client , toolsdk .WithTaskReporter (reporter ))
728
+ require .NoError (t , err )
729
+
730
+ args := toolsdk.ReportTaskArgs {
731
+ Summary : "Test task" ,
732
+ Link : "https://example.com" ,
733
+ State : string (codersdk .WorkspaceAppStatusStateWorking ),
734
+ }
735
+
736
+ result , err := toolsdk .ReportTask .Handler (t .Context (), deps , args )
737
+ require .NoError (t , err )
738
+ require .True (t , called )
739
+
740
+ // Verify response
741
+ require .Equal (t , "Thanks for reporting!" , result .Message )
742
+ }
0 commit comments