From 9129c6579594a06d7c993ba028d9995e8e86b6e7 Mon Sep 17 00:00:00 2001 From: Phantasm Date: Sat, 23 May 2026 23:31:24 +0200 Subject: [PATCH] StaticNotFoundPlug: Move tests out from InstanceStatic --- .../web/plugs/instance_static_test.exs | 43 ---------------- .../web/plugs/static_not_found_plug_test.exs | 49 +++++++++++++++++++ 2 files changed, 49 insertions(+), 43 deletions(-) create mode 100644 test/pleroma/web/plugs/static_not_found_plug_test.exs diff --git a/test/pleroma/web/plugs/instance_static_test.exs b/test/pleroma/web/plugs/instance_static_test.exs index 017c49d1e..b5a5a3334 100644 --- a/test/pleroma/web/plugs/instance_static_test.exs +++ b/test/pleroma/web/plugs/instance_static_test.exs @@ -137,47 +137,4 @@ defmodule Pleroma.Web.Plugs.InstanceStaticTest do # It should be preserved because "image" is in the allowed_mime_types list assert content_type == "image/jpeg" end - - describe "404s for missing files in static-only paths" do - test "returns 404 for non-existent static-only JSON files" do - conn = get(build_conn(), "/static/non-existent.json") - - assert conn.status == 404 - assert ["application/json"] = get_resp_header(conn, "content-type") - assert Jason.decode!(conn.resp_body) == %{"error" => "not found"} - end - - test "returns 404 for non-existent static-only non-JSON files" do - conn = get(build_conn(), "/static/non-existent.txt") - - assert conn.status == 404 - assert conn.resp_body == "Not found" - assert ["text/plain"] = get_resp_header(conn, "content-type") - end - - test "returns 404 for non-existent .css files" do - conn = get(build_conn(), "/static/non-existent.css") - - assert conn.status == 404 - assert conn.resp_body == "Not found" - # Verifies that we forced text/plain for the error body, even though the path was .css - assert ["text/plain"] = get_resp_header(conn, "content-type") - end - - test "returns 404 for non-existent files without an extension" do - conn = get(build_conn(), "/static/non-existent") - - assert conn.status == 404 - assert conn.resp_body == "Not found" - assert ["text/plain"] = get_resp_header(conn, "content-type") - end - - test "returns 200 (falls through to SPA) for non-static-only paths" do - # /some-route is NOT in static_only_files, so it should still fall through to the SPA. - conn = get(build_conn(), "/some-route") - - assert conn.status == 200 - assert ["text/html; charset=utf-8"] = get_resp_header(conn, "content-type") - end - end end diff --git a/test/pleroma/web/plugs/static_not_found_plug_test.exs b/test/pleroma/web/plugs/static_not_found_plug_test.exs new file mode 100644 index 000000000..a5d063c53 --- /dev/null +++ b/test/pleroma/web/plugs/static_not_found_plug_test.exs @@ -0,0 +1,49 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2026 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only +defmodule Pleroma.Web.Plugs.StaticNotFoundPlugTest do + use Pleroma.Web.ConnCase + + describe "404s for missing files in static-only paths" do + test "returns 404 for non-existent static-only JSON files" do + conn = get(build_conn(), "/static/non-existent.json") + + assert conn.status == 404 + assert ["application/json"] = get_resp_header(conn, "content-type") + assert Jason.decode!(conn.resp_body) == %{"error" => "not found"} + end + + test "returns 404 for non-existent static-only non-JSON files" do + conn = get(build_conn(), "/static/non-existent.txt") + + assert conn.status == 404 + assert conn.resp_body == "Not found" + assert ["text/plain"] = get_resp_header(conn, "content-type") + end + + test "returns 404 for non-existent .css files" do + conn = get(build_conn(), "/static/non-existent.css") + + assert conn.status == 404 + assert conn.resp_body == "Not found" + # Verifies that we forced text/plain for the error body, even though the path was .css + assert ["text/plain"] = get_resp_header(conn, "content-type") + end + + test "returns 404 for non-existent files without an extension" do + conn = get(build_conn(), "/static/non-existent") + + assert conn.status == 404 + assert conn.resp_body == "Not found" + assert ["text/plain"] = get_resp_header(conn, "content-type") + end + + test "returns 200 (falls through to SPA) for non-static-only paths" do + # /some-route is NOT in static_only_files, so it should still fall through to the SPA. + conn = get(build_conn(), "/some-route") + + assert conn.status == 200 + assert ["text/html; charset=utf-8"] = get_resp_header(conn, "content-type") + end + end +end