@@ -599,18 +599,75 @@ func TestSessionExpiration(t *testing.T) {
599599 t .Errorf ("Expected no error for new session, got: %v" , err )
600600 }
601601 if isTerminated {
602- t .Error ("Expected new session to not be terminated" )
602+ t .Error ("Expected session to not be terminated initially " )
603603 }
604604
605- // Wait for expiration
606- time .Sleep (2 * time .Millisecond )
605+ // Wait for session to expire
606+ time .Sleep (5 * time .Millisecond )
607607
608608 // Session should now be expired
609609 isTerminated , err = manager .Validate (sessionID )
610610 if err != nil {
611611 t .Errorf ("Expected no error for expired session validation, got: %v" , err )
612612 }
613613 if ! isTerminated {
614- t .Error ("Expected expired session to be terminated" )
614+ t .Error ("Expected session to be terminated after expiry" )
615+ }
616+ }
617+
618+ func TestExternalSessionIDFormat (t * testing.T ) {
619+ manager := NewSessionRegistry (testLogger ())
620+
621+ // Test external session ID (plain UUID format from SSE/stdio modes)
622+ externalSessionID := "6f615000-2644-45a7-a27c-f579e20b5992"
623+
624+ // Should be able to create session data with external session ID
625+ testData := map [string ]string {"test" : "data" }
626+ data , isNew , err := manager .GetOrCreateSessionData (externalSessionID , func () any {
627+ return testData
628+ })
629+
630+ if err != nil {
631+ t .Errorf ("Expected no error for external session ID, got: %v" , err )
632+ }
633+ if ! isNew {
634+ t .Error ("Expected new session to be created" )
635+ }
636+ retrievedData , ok := data .(map [string ]string )
637+ if ! ok {
638+ t .Errorf ("Expected data to be map[string]string, got: %T" , data )
639+ }
640+ if retrievedData ["test" ] != "data" {
641+ t .Errorf ("Expected data['test'] to be 'data', got: %v" , retrievedData ["test" ])
642+ }
643+
644+ // Should be able to validate external session ID
645+ isTerminated , err := manager .Validate (externalSessionID )
646+ if err != nil {
647+ t .Errorf ("Expected no error validating external session ID, got: %v" , err )
648+ }
649+ if isTerminated {
650+ t .Error ("Expected external session to not be terminated" )
651+ }
652+
653+ // Test internal session ID format still works
654+ internalSessionID := manager .Generate ()
655+
656+ data2 , isNew2 , err2 := manager .GetOrCreateSessionData (internalSessionID , func () any {
657+ return testData
658+ })
659+
660+ if err2 != nil {
661+ t .Errorf ("Expected no error for internal session ID, got: %v" , err2 )
662+ }
663+ if ! isNew2 {
664+ t .Error ("Expected new internal session to be created" )
665+ }
666+ retrievedData2 , ok2 := data2 .(map [string ]string )
667+ if ! ok2 {
668+ t .Errorf ("Expected internal data to be map[string]string, got: %T" , data2 )
669+ }
670+ if retrievedData2 ["test" ] != "data" {
671+ t .Errorf ("Expected internal data['test'] to be 'data', got: %v" , retrievedData2 ["test" ])
615672 }
616673}
0 commit comments