Packages
testcontainers
2.3.0
2.3.1
2.3.0
2.2.0
2.1.0
2.1.0-rc1
2.0.0
2.0.0-rc3
2.0.0-rc2
2.0.0-rc
1.14.1
1.14.0
1.13.5
1.13.4
1.13.3
1.13.2
1.13.1
1.13.0
1.12.0
1.11.8
1.11.7
1.11.6
1.11.5
1.11.4
1.11.3
1.11.2
1.11.1
1.11.0
1.10.5
1.10.4
1.10.3
1.10.2
1.10.1
1.10.0
1.9.0
1.8.4
1.8.3
1.8.2
1.8.1
1.8.0
1.7.0
1.6.0
1.5.1
1.5.0
1.4.2
1.4.1
1.4.0
1.3.1
1.3.0
1.2.11
1.2.10
1.2.9
1.2.8
1.2.7
1.2.6
1.2.5
1.2.4
1.2.3
1.2.2
1.2.1
1.2.0
1.1.3
1.1.2
1.1.1
1.1.0
1.0.1
1.0.0
1.0.0-beta.1
1.0.0-beta
0.9.3
0.9.2
0.9.1
0.9.0
Testcontainers is an Elixir library that supports ExUnit tests, providing lightweight, throwaway instances of common databases, Selenium web browsers, or anything else that can run in a Docker container.
Current section
Files
Jump to
Current section
Files
lib/connection/dockerurl.ex
defmodule Testcontainers.DockerUrl do
@moduledoc false
@test_client Tesla.client([], Tesla.Adapter.Hackney)
def construct(docker_host) do
case URI.parse(docker_host) do
%URI{scheme: "unix", path: path} ->
"http+unix://#{URI.encode_www_form(path)}"
%URI{scheme: "tcp"} = uri ->
if tls_verify?() do
URI.to_string(%{uri | scheme: "https"})
else
URI.to_string(%{uri | scheme: "http"})
end
%URI{scheme: "https"} = uri ->
URI.to_string(uri)
%URI{scheme: "http"} = uri ->
URI.to_string(uri)
%URI{scheme: _, authority: _} = uri ->
uri
end
end
def test_docker_host(docker_host) do
url = "#{construct(docker_host)}/_ping"
case Tesla.get(@test_client, url) do
{:ok, _response} ->
:ok
{:error, reason} ->
{:error, reason}
end
end
@doc """
Returns true if `DOCKER_TLS_VERIFY` is set to a truthy value (`"1"` or `"true"`).
"""
def tls_verify? do
case System.get_env("DOCKER_TLS_VERIFY") do
"1" -> true
"true" -> true
_ -> false
end
end
@doc """
Returns true if the URL uses the `https` scheme.
"""
def https?(url) when is_binary(url) do
case URI.parse(url) do
%URI{scheme: "https"} -> true
_ -> false
end
end
def https?(_), do: false
end