mirror of
https://github.com/plausible/analytics.git
synced 2024-12-27 19:47:26 +03:00
68 lines
1.9 KiB
Elixir
68 lines
1.9 KiB
Elixir
|
defmodule PlausibleWeb.Api.ExternalSitesControllerTest do
|
||
|
use PlausibleWeb.ConnCase
|
||
|
import Plausible.TestUtils
|
||
|
|
||
|
setup [:create_user, :create_api_key, :use_api_key]
|
||
|
|
||
|
describe "POST /api/v1/sites" do
|
||
|
test "can create a site", %{conn: conn} do
|
||
|
conn =
|
||
|
post(conn, "/api/v1/sites", %{
|
||
|
"site" => %{
|
||
|
"domain" => "some-site.domain",
|
||
|
"timezone" => "Europe/Tallinn"
|
||
|
}
|
||
|
})
|
||
|
|
||
|
assert json_response(conn, 200) == %{
|
||
|
"domain" => "some-site.domain",
|
||
|
"timezone" => "Europe/Tallinn"
|
||
|
}
|
||
|
end
|
||
|
|
||
|
test "timezone defaults to Etc/Greenwich", %{conn: conn} do
|
||
|
conn =
|
||
|
post(conn, "/api/v1/sites", %{
|
||
|
"site" => %{
|
||
|
"domain" => "some-site.domain"
|
||
|
}
|
||
|
})
|
||
|
|
||
|
assert json_response(conn, 200) == %{
|
||
|
"domain" => "some-site.domain",
|
||
|
"timezone" => "Etc/Greenwich"
|
||
|
}
|
||
|
end
|
||
|
|
||
|
test "domain is required", %{conn: conn} do
|
||
|
conn = post(conn, "/api/v1/sites", %{})
|
||
|
|
||
|
assert json_response(conn, 400) == %{
|
||
|
"error" => "domain can't be blank"
|
||
|
}
|
||
|
end
|
||
|
end
|
||
|
|
||
|
describe "PUT /api/v1/sites/shared-links/:link_name" do
|
||
|
setup :create_site
|
||
|
|
||
|
test "can add a shared link to a site", %{conn: conn, site: site} do
|
||
|
conn = put(conn, "/api/v1/sites/#{site.domain}/shared-links/Wordpress")
|
||
|
|
||
|
res = json_response(conn, 200)
|
||
|
assert res["name"] == "Wordpress"
|
||
|
assert String.starts_with?(res["url"], "http://")
|
||
|
end
|
||
|
|
||
|
test "is idempotent find or create op", %{conn: conn, site: site} do
|
||
|
conn = put(conn, "/api/v1/sites/#{site.domain}/shared-links/Wordpress")
|
||
|
|
||
|
%{"url" => url} = json_response(conn, 200)
|
||
|
|
||
|
conn = put(conn, "/api/v1/sites/#{site.domain}/shared-links/Wordpress")
|
||
|
|
||
|
assert %{"url" => ^url} = json_response(conn, 200)
|
||
|
end
|
||
|
end
|
||
|
end
|