@@ -750,6 +750,135 @@ func TestSession(t *testing.T) {
750750 t .Errorf ("Expected assistant message to contain '2', got %v" , assistantMessage .Data .Content )
751751 }
752752 })
753+
754+ t .Run ("should list sessions" , func (t * testing.T ) {
755+ ctx .ConfigureForTest (t )
756+
757+ // Create a couple of sessions and send messages to persist them
758+ session1 , err := client .CreateSession (nil )
759+ if err != nil {
760+ t .Fatalf ("Failed to create session1: %v" , err )
761+ }
762+
763+ _ , err = session1 .SendAndWait (copilot.MessageOptions {Prompt : "Say hello" }, 60 * time .Second )
764+ if err != nil {
765+ t .Fatalf ("Failed to send message to session1: %v" , err )
766+ }
767+
768+ session2 , err := client .CreateSession (nil )
769+ if err != nil {
770+ t .Fatalf ("Failed to create session2: %v" , err )
771+ }
772+
773+ _ , err = session2 .SendAndWait (copilot.MessageOptions {Prompt : "Say goodbye" }, 60 * time .Second )
774+ if err != nil {
775+ t .Fatalf ("Failed to send message to session2: %v" , err )
776+ }
777+
778+ // Small delay to ensure session files are written to disk
779+ time .Sleep (200 * time .Millisecond )
780+
781+ // List sessions and verify they're included
782+ sessions , err := client .ListSessions ()
783+ if err != nil {
784+ t .Fatalf ("Failed to list sessions: %v" , err )
785+ }
786+
787+ // Verify it's a list
788+ if sessions == nil {
789+ t .Fatal ("Expected sessions to be non-nil" )
790+ }
791+
792+ // Extract session IDs
793+ sessionIDs := make ([]string , len (sessions ))
794+ for i , s := range sessions {
795+ sessionIDs [i ] = s .SessionID
796+ }
797+
798+ // Verify both sessions are in the list
799+ if ! contains (sessionIDs , session1 .SessionID ) {
800+ t .Errorf ("Expected session1 ID %s to be in sessions list" , session1 .SessionID )
801+ }
802+ if ! contains (sessionIDs , session2 .SessionID ) {
803+ t .Errorf ("Expected session2 ID %s to be in sessions list" , session2 .SessionID )
804+ }
805+
806+ // Verify session metadata structure
807+ for _ , sessionData := range sessions {
808+ if sessionData .SessionID == "" {
809+ t .Error ("Expected sessionId to be non-empty" )
810+ }
811+ if sessionData .StartTime == "" {
812+ t .Error ("Expected startTime to be non-empty" )
813+ }
814+ if sessionData .ModifiedTime == "" {
815+ t .Error ("Expected modifiedTime to be non-empty" )
816+ }
817+ // isRemote is a boolean, so it's always set
818+ }
819+ })
820+
821+ t .Run ("should delete session" , func (t * testing.T ) {
822+ ctx .ConfigureForTest (t )
823+
824+ // Create a session and send a message to persist it
825+ session , err := client .CreateSession (nil )
826+ if err != nil {
827+ t .Fatalf ("Failed to create session: %v" , err )
828+ }
829+
830+ _ , err = session .SendAndWait (copilot.MessageOptions {Prompt : "Hello" }, 60 * time .Second )
831+ if err != nil {
832+ t .Fatalf ("Failed to send message: %v" , err )
833+ }
834+
835+ sessionID := session .SessionID
836+
837+ // Small delay to ensure session file is written to disk
838+ time .Sleep (200 * time .Millisecond )
839+
840+ // Verify session exists in the list
841+ sessions , err := client .ListSessions ()
842+ if err != nil {
843+ t .Fatalf ("Failed to list sessions: %v" , err )
844+ }
845+
846+ sessionIDs := make ([]string , len (sessions ))
847+ for i , s := range sessions {
848+ sessionIDs [i ] = s .SessionID
849+ }
850+
851+ if ! contains (sessionIDs , sessionID ) {
852+ t .Errorf ("Expected session ID %s to be in sessions list before delete" , sessionID )
853+ }
854+
855+ // Delete the session
856+ err = client .DeleteSession (sessionID )
857+ if err != nil {
858+ t .Fatalf ("Failed to delete session: %v" , err )
859+ }
860+
861+ // Verify session no longer exists in the list
862+ sessionsAfter , err := client .ListSessions ()
863+ if err != nil {
864+ t .Fatalf ("Failed to list sessions after delete: %v" , err )
865+ }
866+
867+ sessionIDsAfter := make ([]string , len (sessionsAfter ))
868+ for i , s := range sessionsAfter {
869+ sessionIDsAfter [i ] = s .SessionID
870+ }
871+
872+ if contains (sessionIDsAfter , sessionID ) {
873+ t .Errorf ("Expected session ID %s to NOT be in sessions list after delete" , sessionID )
874+ }
875+
876+ // Verify we cannot resume the deleted session
877+ _ , err = client .ResumeSession (sessionID )
878+ if err == nil {
879+ t .Error ("Expected error when resuming deleted session" )
880+ }
881+ })
753882}
754883
755884func getSystemMessage (exchange testharness.ParsedHttpExchange ) string {
0 commit comments