You've already forked tribes-plugin-supertest
forked from tribes/tribes-plugin-template
c20a3b4f71
Rename the Supertest fixture plugin to tribe-one-supertest across manifest, runtime API routes, metrics, e2e fixtures, and tests.
69 lines
2.3 KiB
Elixir
69 lines
2.3 KiB
Elixir
defmodule TribeOne.TribesPlugin.SupertestWeb.APIPlugTest do
|
|
use ExUnit.Case, async: true
|
|
|
|
import Phoenix.ConnTest
|
|
|
|
test "rejects non-loopback requests" do
|
|
conn =
|
|
:get
|
|
|> build_conn("/plugins-api/tribe-one-supertest/health")
|
|
|> Map.put(:remote_ip, {192, 0, 2, 10})
|
|
|> TribeOne.TribesPlugin.SupertestWeb.APIPlug.call([])
|
|
|
|
assert conn.status == 403
|
|
assert Jason.decode!(conn.resp_body) == %{"error" => "local-only", "ok" => false}
|
|
end
|
|
|
|
test "serves health for loopback requests" do
|
|
for remote_ip <- [{127, 0, 0, 1}, {127, 0, 0, 2}, {0, 0, 0, 0, 0, 0, 0, 1}] do
|
|
conn =
|
|
:get
|
|
|> build_conn("/plugins-api/tribe-one-supertest/health")
|
|
|> Map.put(:remote_ip, remote_ip)
|
|
|> TribeOne.TribesPlugin.SupertestWeb.APIPlug.call([])
|
|
|
|
assert conn.status == 200
|
|
assert %{"ok" => true, "plugin" => "tribe-one-supertest"} = Jason.decode!(conn.resp_body)
|
|
end
|
|
end
|
|
|
|
test "serves health for IPv4-mapped IPv6 loopback requests" do
|
|
conn =
|
|
:get
|
|
|> build_conn("/plugins-api/tribe-one-supertest/health")
|
|
|> Map.put(:remote_ip, {0, 0, 0, 0, 0, 65_535, 0x7F00, 1})
|
|
|> TribeOne.TribesPlugin.SupertestWeb.APIPlug.call([])
|
|
|
|
assert conn.status == 200
|
|
assert %{"ok" => true, "plugin" => "tribe-one-supertest"} = Jason.decode!(conn.resp_body)
|
|
end
|
|
|
|
test "serves cluster pubsub probe routes for loopback requests" do
|
|
pubsub = :"supertest_cluster_pubsub_plug_#{System.unique_integer([:positive])}"
|
|
start_supervised!({Phoenix.PubSub, name: pubsub})
|
|
start_supervised!({TribeOne.TribesPlugin.Supertest.ClusterPubSubProbe, pubsub: pubsub})
|
|
|
|
conn =
|
|
:post
|
|
|> build_conn("/plugins-api/tribe-one-supertest/cluster-pubsub/reset", %{
|
|
run_id: "plug-test"
|
|
})
|
|
|> Map.put(:remote_ip, {127, 0, 0, 1})
|
|
|> TribeOne.TribesPlugin.SupertestWeb.APIPlug.call([])
|
|
|
|
assert conn.status == 200
|
|
assert %{"ok" => true} = Jason.decode!(conn.resp_body)
|
|
end
|
|
|
|
test "serves metrics probe route for loopback requests" do
|
|
conn =
|
|
:post
|
|
|> build_conn("/plugins-api/tribe-one-supertest/metrics/probe", %{value: 41})
|
|
|> Map.put(:remote_ip, {127, 0, 0, 1})
|
|
|> TribeOne.TribesPlugin.SupertestWeb.APIPlug.call([])
|
|
|
|
assert conn.status == 200
|
|
assert %{"ok" => true, "value" => 41} = Jason.decode!(conn.resp_body)
|
|
end
|
|
end
|