else
{:download_or_unzip, _} ->
Logger.info("Could not download or unzip the frontend")
+ {:error, "Could not download or unzip the frontend"}
_e ->
Logger.info("Could not install the frontend")
+ {:error, "Could not install the frontend"}
end
end
end
def install(%{body_params: params} = conn, _params) do
- Pleroma.Frontend.install(params.name, Map.delete(params, :name))
-
- index(conn, %{})
+ with :ok <- Pleroma.Frontend.install(params.name, Map.delete(params, :name)) do
+ index(conn, %{})
+ end
end
defp installed do
requestBody: request_body("Parameters", install_request(), required: true),
responses: %{
200 => Operation.response("Response", "application/json", list_of_frontends()),
- 403 => Operation.response("Forbidden", "application/json", ApiError)
+ 403 => Operation.response("Forbidden", "application/json", ApiError),
+ 400 => Operation.response("Error", "application/json", ApiError)
}
}
end
assert File.exists?(Path.join([@dir, "frontends", "unknown", "baka", "test.txt"]))
end
+
+ test "failing returns an error", %{conn: conn} do
+ Tesla.Mock.mock(fn %{url: "http://gensokyo.2hu/madeup.zip"} ->
+ %Tesla.Env{status: 404, body: ""}
+ end)
+
+ result =
+ conn
+ |> put_req_header("content-type", "application/json")
+ |> post("/api/pleroma/admin/frontends/install", %{
+ name: "unknown",
+ ref: "baka",
+ build_url: "http://gensokyo.2hu/madeup.zip",
+ build_dir: ""
+ })
+ |> json_response_and_validate_schema(400)
+
+ assert result == %{"error" => "Could not download or unzip the frontend"}
+ end
end
end