@@ -311,7 +311,7 @@ defmodule Livebook.Hubs.TeamClientTest do
311311 setup context do
312312 agent_connected =
313313 % LivebookProto.AgentConnected {
314- name: context . agent . name ,
314+ name: get_in ( context , [ : agent, Access . key! ( : name) ] ) ,
315315 public_key: context . org_key_pair . public_key ,
316316 deployment_group_id: context . deployment_group . id ,
317317 secrets: [ ] ,
@@ -569,10 +569,10 @@ defmodule Livebook.Hubs.TeamClientTest do
569569 end
570570
571571 @ tag :tmp_dir
572+ @ tag teams_persisted: false
572573 test "dispatches the app deployments list" ,
573574 % {
574575 team: team ,
575- pid: pid ,
576576 org: teams_org ,
577577 deployment_group: teams_deployment_group ,
578578 agent_key: teams_agent_key ,
@@ -615,11 +615,6 @@ defmodule Livebook.Hubs.TeamClientTest do
615615
616616 agent_connected = % { agent_connected | deployment_groups: [ livebook_proto_deployment_group ] }
617617
618- # Since we're connecting as Agent, we should receive the
619- # `:deployment_group_created` event from `:agent_connected` event
620- assert_receive { :deployment_group_created , ^ deployment_group }
621- assert deployment_group in TeamClient . get_deployment_groups ( team . id )
622-
623618 # creates a new app deployment
624619 deployment_group_id = to_string ( deployment_group . id )
625620 slug = Livebook.Utils . random_short_id ( )
@@ -638,9 +633,47 @@ defmodule Livebook.Hubs.TeamClientTest do
638633 image_file = Livebook.FileSystem.File . resolve ( files_dir , "image.jpg" )
639634 :ok = Livebook.FileSystem.File . write ( image_file , "content" )
640635
636+ # since the app deployment must be exported to .livemd
637+ # it will call Teams to stamp the notebook, which
638+ # requires an user session
639+ id = team . id
640+ user = TeamsRPC . create_user ( node )
641+ session_token = TeamsRPC . associate_user_with_org ( node , user , teams_org )
642+ deployment_group_id = to_string ( deployment_group . id )
643+ org_id = to_string ( teams_org . id )
644+ team_user = % { team | user_id: user . id , session_token: session_token }
645+ Livebook.Hubs . save_hub ( team_user )
646+
647+ # check if it connected as User
648+ assert_receive { :hub_connected , ^ id }
649+ assert_receive { :client_connected , ^ id }
650+
651+ refute_receive { :agent_joined ,
652+ % { hub_id: ^ id , deployment_group_id: ^ deployment_group_id , org_id: ^ org_id } }
653+
654+ # get the pid for user session, so we can guarantee the hub is deleted later
655+ pid = TeamClient . get_pid ( id )
656+
641657 { :ok , % Livebook.Teams.AppDeployment { file: zip_content } = app_deployment } =
642658 Livebook.Teams.AppDeployment . new ( notebook , files_dir )
643659
660+ # now we change to agent session
661+ TeamClient . stop ( id )
662+ refute Process . alive? ( pid )
663+
664+ Livebook.Hubs . save_hub ( team )
665+ pid = TeamClient . get_pid ( id )
666+
667+ # check if it connected again as Agent
668+ assert Process . alive? ( pid )
669+ assert_receive { :hub_connected , ^ id } , 3_000
670+ assert_receive { :client_connected , ^ id } , 3_000
671+
672+ assert_receive { :agent_joined ,
673+ % { hub_id: ^ id , deployment_group_id: ^ deployment_group_id , org_id: ^ org_id } =
674+ agent } ,
675+ 3_000
676+
644677 secret_key = Livebook.Teams . derive_key ( team . teams_key )
645678 encrypted_content = Livebook.Teams . encrypt ( zip_content , secret_key )
646679
@@ -683,7 +716,11 @@ defmodule Livebook.Hubs.TeamClientTest do
683716 authorization_groups: [ ]
684717 }
685718
686- agent_connected = % { agent_connected | app_deployments: [ livebook_proto_app_deployment ] }
719+ agent_connected = % {
720+ agent_connected
721+ | name: agent . name ,
722+ app_deployments: [ livebook_proto_app_deployment ]
723+ }
687724
688725 Livebook.Apps . subscribe ( )
689726 TeamsRPC . subscribe ( node , self ( ) , teams_deployment_group , teams_org )
@@ -749,6 +786,8 @@ defmodule Livebook.Hubs.TeamClientTest do
749786 agent_connected: agent_connected ,
750787 deployment_group: deployment_group
751788 } do
789+ send ( pid , { :event , :agent_joined , agent } )
790+ assert_receive { :agent_joined , ^ agent }
752791 assert agent in TeamClient . get_agents ( team . id )
753792
754793 livebook_proto_deployment_group =
0 commit comments