diff --git a/lib/livebook/hubs.ex b/lib/livebook/hubs.ex index b66cbe727..302cde6c3 100644 --- a/lib/livebook/hubs.ex +++ b/lib/livebook/hubs.ex @@ -191,6 +191,9 @@ defmodule Livebook.Hubs do {:ok, _} -> :ok + {:error, {:already_started, _pid}} -> + :ok + {:error, reason} -> Logger.error("Could not start Hub #{hub.id}: #{Exception.format_exit(reason)}") end diff --git a/test/livebook_teams/hubs/team_client_test.exs b/test/livebook_teams/hubs/team_client_test.exs index 2af352517..130fe01e7 100644 --- a/test/livebook_teams/hubs/team_client_test.exs +++ b/test/livebook_teams/hubs/team_client_test.exs @@ -12,7 +12,7 @@ defmodule Livebook.Hubs.TeamClientTest do describe "start_link/1" do test "successfully authenticates the web socket connection", %{user: user, node: node} do - team = create_team_hub(user, node) + team = build_team_hub(user, node) id = team.id refute TeamClient.connected?(team.id) @@ -49,9 +49,6 @@ defmodule Livebook.Hubs.TeamClientTest do team = create_team_hub(user, node) id = team.id - refute TeamClient.connected?(team.id) - - TeamClient.start_link(team) assert_receive {:hub_connected, ^id} secret = build(:secret, name: "SECRET_CREATED_FOO", value: "BAR") @@ -69,9 +66,6 @@ defmodule Livebook.Hubs.TeamClientTest do team = create_team_hub(user, node) id = team.id - refute TeamClient.connected?(team.id) - - TeamClient.start_link(team) assert_receive {:hub_connected, ^id} secret = build(:secret, name: "SECRET_UPDATED_FOO", value: "BAR") @@ -98,9 +92,6 @@ defmodule Livebook.Hubs.TeamClientTest do team = create_team_hub(user, node) id = team.id - refute TeamClient.connected?(team.id) - - TeamClient.start_link(team) assert_receive {:hub_connected, ^id} secret = build(:secret, name: "SECRET_DELETED_FOO", value: "BAR") diff --git a/test/livebook_teams/hubs_test.exs b/test/livebook_teams/hubs_test.exs index 7455bca7a..a6f85223b 100644 --- a/test/livebook_teams/hubs_test.exs +++ b/test/livebook_teams/hubs_test.exs @@ -2,61 +2,55 @@ defmodule Livebook.HubsTest do use Livebook.TeamsIntegrationCase, async: true alias Livebook.Hubs - @sample_hub "team-foo-bar-baz" - setup do - on_exit(fn -> Hubs.delete_hub(@sample_hub) end) - :ok - end - - test "get_hubs/0 returns a list of persisted hubs" do - team = insert_hub(:team, id: @sample_hub) + test "get_hubs/0 returns a list of persisted hubs", %{user: user, node: node} do + team = create_team_hub(user, node) assert team in Hubs.get_hubs() - Hubs.delete_hub(@sample_hub) + Hubs.delete_hub(team.id) refute team in Hubs.get_hubs() end - test "get_metadata/0 returns a list of persisted hubs normalized" do - team = insert_hub(:team, id: @sample_hub) + test "get_metadatas/0 returns a list of persisted hubs normalized", %{user: user, node: node} do + team = create_team_hub(user, node) metadata = Hubs.Provider.to_metadata(team) assert metadata in Hubs.get_metadatas() - Hubs.delete_hub(@sample_hub) + Hubs.delete_hub(team.id) refute metadata in Hubs.get_metadatas() end - test "fetch_hub!/1 returns one persisted team" do + test "fetch_hub!/1 returns one persisted team", %{user: user, node: node} do assert_raise Livebook.Storage.NotFoundError, - ~s/could not find entry in "hubs" with ID "#{@sample_hub}"/, + ~s/could not find entry in "hubs" with ID "nonexistent"/, fn -> - Hubs.fetch_hub!(@sample_hub) + Hubs.fetch_hub!("nonexistent") end - team = insert_hub(:team, id: @sample_hub) + team = create_team_hub(user, node) - assert Hubs.fetch_hub!(@sample_hub) == team + assert Hubs.fetch_hub!(team.id) == team end - test "hub_exists?/1" do - refute Hubs.hub_exists?(@sample_hub) - insert_hub(:team, id: @sample_hub) - assert Hubs.hub_exists?(@sample_hub) + test "hub_exists?/1", %{user: user, node: node} do + team = build_team_hub(user, node) + refute Hubs.hub_exists?(team.id) + Hubs.save_hub(team) + assert Hubs.hub_exists?(team.id) end - test "save_hub/1 persists hub" do - team = build(:team, id: @sample_hub) + test "save_hub/1 persists hub", %{user: user, node: node} do + team = build_team_hub(user, node) Hubs.save_hub(team) - assert Hubs.fetch_hub!(@sample_hub) == team + assert Hubs.fetch_hub!(team.id) == team end - test "save_hub/1 updates hub" do - team = insert_hub(:team, id: @sample_hub) + test "save_hub/1 updates hub", %{user: user, node: node} do + team = create_team_hub(user, node) Hubs.save_hub(%{team | hub_emoji: "🐈"}) - refute Hubs.fetch_hub!(@sample_hub) == team - assert Hubs.fetch_hub!(@sample_hub).hub_emoji == "🐈" + assert Hubs.fetch_hub!(team.id).hub_emoji == "🐈" end end diff --git a/test/support/hub_helpers.ex b/test/support/hub_helpers.ex index 572d8a862..a88cc3baa 100644 --- a/test/support/hub_helpers.ex +++ b/test/support/hub_helpers.ex @@ -40,7 +40,7 @@ defmodule Livebook.HubHelpers do {hub, headers} end - defp build_team_hub(user, node) do + def build_team_hub(user, node) do teams_org = build(:org) teams_key = teams_org.teams_key key_hash = Livebook.Teams.Org.key_hash(teams_org)