summaryrefslogtreecommitdiff
path: root/test/support/conn_case.ex
diff options
context:
space:
mode:
authorEgor Kislitsyn <egor@kislitsyn.com>2020-04-27 20:46:52 +0400
committerEgor Kislitsyn <egor@kislitsyn.com>2020-04-27 20:46:52 +0400
commit2efc00b3cf5413ae7f8e8411ee1372343ee2618a (patch)
treea705f5a88014ff0b4665ca6c3a1529b660b70ffc /test/support/conn_case.ex
parentf1ca917bb0d733445657e0be92440dedc2f8d3c6 (diff)
downloadpleroma-2efc00b3cf5413ae7f8e8411ee1372343ee2618a.tar.gz
pleroma-2efc00b3cf5413ae7f8e8411ee1372343ee2618a.zip
Use `json_response_and_validate_schema/2` in tests to validate OpenAPI schema
Diffstat (limited to 'test/support/conn_case.ex')
-rw-r--r--test/support/conn_case.ex21
1 files changed, 17 insertions, 4 deletions
diff --git a/test/support/conn_case.ex b/test/support/conn_case.ex
index 8099461cc..fa30a0c41 100644
--- a/test/support/conn_case.ex
+++ b/test/support/conn_case.ex
@@ -56,7 +56,14 @@ defmodule Pleroma.Web.ConnCase do
[conn: conn]
end
- defp json_response_and_validate_schema(conn, status \\ nil) do
+ defp json_response_and_validate_schema(
+ %{
+ private: %{
+ open_api_spex: %{operation_id: op_id, operation_lookup: lookup, spec: spec}
+ }
+ } = conn,
+ status
+ ) do
content_type =
conn
|> Plug.Conn.get_resp_header("content-type")
@@ -64,10 +71,12 @@ defmodule Pleroma.Web.ConnCase do
|> String.split(";")
|> List.first()
- status = status || conn.status
+ status = Plug.Conn.Status.code(status)
- %{private: %{open_api_spex: %{operation_id: op_id, operation_lookup: lookup, spec: spec}}} =
- conn
+ unless lookup[op_id].responses[status] do
+ err = "Response schema not found for #{conn.status} #{conn.method} #{conn.request_path}"
+ flunk(err)
+ end
schema = lookup[op_id].responses[status].content[content_type].schema
json = json_response(conn, status)
@@ -92,6 +101,10 @@ defmodule Pleroma.Web.ConnCase do
end
end
+ defp json_response_and_validate_schema(conn, _status) do
+ flunk("Response schema not found for #{conn.method} #{conn.request_path} #{conn.status}")
+ end
+
defp ensure_federating_or_authenticated(conn, url, user) do
initial_setting = Config.get([:instance, :federating])
on_exit(fn -> Config.put([:instance, :federating], initial_setting) end)