livebook/test/support/enterprise_integration_case.ex
2023-02-03 13:15:46 -03:00

51 lines
1.2 KiB
Elixir

defmodule Livebook.EnterpriseIntegrationCase do
use ExUnit.CaseTemplate
alias Livebook.EnterpriseServer
using do
quote do
use LivebookWeb.ConnCase
@moduletag :enterprise_integration
import Livebook.EnterpriseIntegrationCase,
only: [start_new_instance: 1, stop_new_instance: 1]
alias Livebook.EnterpriseServer
end
end
setup_all do
case EnterpriseServer.start() do
{:ok, _} -> :ok
{:error, {:already_started, _}} -> :ok
end
{:ok,
url: EnterpriseServer.url(),
token: EnterpriseServer.token(),
user: EnterpriseServer.user(),
node: EnterpriseServer.get_node()}
end
def start_new_instance(name) do
suffix = Ecto.UUID.generate() |> :erlang.phash2() |> to_string()
app_port = Enum.random(1000..9000) |> to_string()
{:ok, _} =
EnterpriseServer.start(name,
env: %{
"DATABASE_URL" =>
"postgres://postgres:postgres@localhost:5432/enterprise_integration_#{suffix}"
},
app_port: app_port
)
end
def stop_new_instance(name) do
EnterpriseServer.disconnect(name)
EnterpriseServer.drop_database(name)
end
end