@@ -426,6 +426,38 @@ async fn rename_agent_broadcasts_renamed_event() {
426426 assert_eq ! ( renamed_events[ 0 ] . data[ "name" ] , "Renamed Worker" ) ;
427427}
428428
429+ #[ tokio:: test]
430+ async fn rename_agent_rejects_duplicate_name ( ) {
431+ let agents = make_team_agents ( ) ;
432+ let ( mgr, _) = make_manager ( & agents) ;
433+
434+ // "Worker2" already exists (from make_team_agents). Renaming worker-1
435+ // to " Worker2 " should collide after normalization.
436+ let err = mgr
437+ . rename_agent ( "worker-1" , " Worker2 " )
438+ . await
439+ . expect_err ( "duplicate name must be rejected" ) ;
440+ assert ! (
441+ matches!( & err, TeamError :: DuplicateAgentName ( _) ) ,
442+ "expected DuplicateAgentName, got {err:?}"
443+ ) ;
444+
445+ // Original name must be preserved.
446+ let agent = mgr. get_agent ( "worker-1" ) . await . unwrap ( ) ;
447+ assert_eq ! ( agent. name, "Worker1" ) ;
448+ }
449+
450+ #[ tokio:: test]
451+ async fn rename_agent_allows_same_agent_own_name ( ) {
452+ let agents = make_team_agents ( ) ;
453+ let ( mgr, _) = make_manager ( & agents) ;
454+
455+ // Renaming worker-1 to its own name (different casing) is not a conflict.
456+ mgr. rename_agent ( "worker-1" , "WORKER1" ) . await . unwrap ( ) ;
457+ let agent = mgr. get_agent ( "worker-1" ) . await . unwrap ( ) ;
458+ assert_eq ! ( agent. name, "WORKER1" ) ;
459+ }
460+
429461// -- execute_action: SendMessage -----------------------------------------
430462
431463#[ tokio:: test]
0 commit comments