Improve OpenAPI spec and deploy it to api.pleroma.social
[akkoma] / test / pleroma / web / media_proxy / invalidation_test.exs
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.Web.MediaProxy.InvalidationTest do
6 use Pleroma.DataCase
7
8 alias Pleroma.Config
9 alias Pleroma.Web.MediaProxy.Invalidation
10
11 import ExUnit.CaptureLog
12 import Mock
13 import Tesla.Mock
14
15 setup do: clear_config([:media_proxy])
16
17 describe "Invalidation.Http" do
18 test "perform request to clear cache" do
19 Config.put([:media_proxy, :enabled], false)
20 Config.put([:media_proxy, :invalidation, :enabled], true)
21 Config.put([:media_proxy, :invalidation, :provider], Invalidation.Http)
22
23 Config.put([Invalidation.Http], method: :purge, headers: [{"x-refresh", 1}])
24 image_url = "http://example.com/media/example.jpg"
25 Pleroma.Web.MediaProxy.put_in_banned_urls(image_url)
26
27 mock(fn
28 %{
29 method: :purge,
30 url: "http://example.com/media/example.jpg",
31 headers: [{"x-refresh", 1}]
32 } ->
33 %Tesla.Env{status: 200}
34 end)
35
36 assert capture_log(fn ->
37 assert Pleroma.Web.MediaProxy.in_banned_urls(image_url)
38 assert Invalidation.purge([image_url]) == {:ok, [image_url]}
39 assert Pleroma.Web.MediaProxy.in_banned_urls(image_url)
40 end) =~ "Running cache purge: [\"#{image_url}\"]"
41 end
42 end
43
44 describe "Invalidation.Script" do
45 test "run script to clear cache" do
46 Config.put([:media_proxy, :enabled], false)
47 Config.put([:media_proxy, :invalidation, :enabled], true)
48 Config.put([:media_proxy, :invalidation, :provider], Invalidation.Script)
49 Config.put([Invalidation.Script], script_path: "purge-nginx")
50
51 image_url = "http://example.com/media/example.jpg"
52 Pleroma.Web.MediaProxy.put_in_banned_urls(image_url)
53
54 with_mocks [{System, [], [cmd: fn _, _ -> {"ok", 0} end]}] do
55 assert capture_log(fn ->
56 assert Pleroma.Web.MediaProxy.in_banned_urls(image_url)
57 assert Invalidation.purge([image_url]) == {:ok, [image_url]}
58 assert Pleroma.Web.MediaProxy.in_banned_urls(image_url)
59 end) =~ "Running cache purge: [\"#{image_url}\"]"
60 end
61 end
62 end
63 end