# Pleroma: A lightweight social networking server # Copyright © 2017-2023 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.MediaProxy.Invalidation.ScriptTest do use ExUnit.Case, async: true alias Pleroma.Web.MediaProxy.Invalidation import ExUnit.CaptureLog test "it logs error when script is not found" do assert capture_log(fn -> assert {:error, msg} = Invalidation.Script.purge( ["http://example.com/media/example.jpg"], script_path: "./example" ) assert msg =~ ~r/%ErlangError{original: :enoent(, reason: nil)?}/ end) =~ ~r/Error while cache purge: %ErlangError{original: :enoent(, reason: nil)?}/ capture_log(fn -> assert Invalidation.Script.purge( ["http://example.com/media/example.jpg"], [] ) == {:error, "\"not found script path\""} end) end describe "url formatting" do setup do urls = [ "https://bikeshed.party/media/foo.png", "http://safe.millennial.space/proxy/wheeeee.gif", "https://lain.com/proxy/mediafile.mp4?foo&bar=true", "http://localhost:4000/media/upload.jpeg" ] [urls: urls] end test "with invalid formatter", %{urls: urls} do assert urls == Invalidation.Script.maybe_format_urls(urls, nil) end test "with :htcacheclean formatter", %{urls: urls} do assert [ "https://bikeshed.party:443/media/foo.png?", "http://safe.millennial.space:80/proxy/wheeeee.gif?", "https://lain.com:443/proxy/mediafile.mp4?foo&bar=true", "http://localhost:4000/media/upload.jpeg?" ] == Invalidation.Script.maybe_format_urls(urls, :htcacheclean) end end end