Merge branch 'fix/mediaproxy-config-descriptions' into 'develop'
[akkoma] / test / pleroma / web / admin_api / controllers / media_proxy_cache_controller_test.exs
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.Web.AdminAPI.MediaProxyCacheControllerTest do
6 use Pleroma.Web.ConnCase
7
8 import Pleroma.Factory
9 import Mock
10
11 alias Pleroma.Web.MediaProxy
12
13 setup do: clear_config([:media_proxy])
14
15 setup do
16 admin = insert(:user, is_admin: true)
17 token = insert(:oauth_admin_token, user: admin)
18
19 conn =
20 build_conn()
21 |> assign(:user, admin)
22 |> assign(:token, token)
23
24 Config.put([:media_proxy, :enabled], true)
25 Config.put([:media_proxy, :invalidation, :enabled], true)
26 Config.put([:media_proxy, :invalidation, :provider], MediaProxy.Invalidation.Script)
27
28 {:ok, %{admin: admin, token: token, conn: conn}}
29 end
30
31 describe "GET /api/pleroma/admin/media_proxy_caches" do
32 test "shows banned MediaProxy URLs", %{conn: conn} do
33 MediaProxy.put_in_banned_urls([
34 "http://localhost:4001/media/a688346.jpg",
35 "http://localhost:4001/media/fb1f4d.jpg"
36 ])
37
38 MediaProxy.put_in_banned_urls("http://localhost:4001/media/gb1f44.jpg")
39 MediaProxy.put_in_banned_urls("http://localhost:4001/media/tb13f47.jpg")
40 MediaProxy.put_in_banned_urls("http://localhost:4001/media/wb1f46.jpg")
41
42 response =
43 conn
44 |> get("/api/pleroma/admin/media_proxy_caches?page_size=2")
45 |> json_response_and_validate_schema(200)
46
47 assert response["page_size"] == 2
48 assert response["count"] == 5
49
50 assert response["urls"] == [
51 "http://localhost:4001/media/fb1f4d.jpg",
52 "http://localhost:4001/media/a688346.jpg"
53 ]
54
55 response =
56 conn
57 |> get("/api/pleroma/admin/media_proxy_caches?page_size=2&page=2")
58 |> json_response_and_validate_schema(200)
59
60 assert response["urls"] == [
61 "http://localhost:4001/media/gb1f44.jpg",
62 "http://localhost:4001/media/tb13f47.jpg"
63 ]
64
65 assert response["page_size"] == 2
66 assert response["count"] == 5
67
68 response =
69 conn
70 |> get("/api/pleroma/admin/media_proxy_caches?page_size=2&page=3")
71 |> json_response_and_validate_schema(200)
72
73 assert response["urls"] == ["http://localhost:4001/media/wb1f46.jpg"]
74 end
75
76 test "search banned MediaProxy URLs", %{conn: conn} do
77 MediaProxy.put_in_banned_urls([
78 "http://localhost:4001/media/a688346.jpg",
79 "http://localhost:4001/media/ff44b1f4d.jpg"
80 ])
81
82 MediaProxy.put_in_banned_urls("http://localhost:4001/media/gb1f44.jpg")
83 MediaProxy.put_in_banned_urls("http://localhost:4001/media/tb13f47.jpg")
84 MediaProxy.put_in_banned_urls("http://localhost:4001/media/wb1f46.jpg")
85
86 response =
87 conn
88 |> get("/api/pleroma/admin/media_proxy_caches?page_size=2&query=F44")
89 |> json_response_and_validate_schema(200)
90
91 assert response["urls"] == [
92 "http://localhost:4001/media/gb1f44.jpg",
93 "http://localhost:4001/media/ff44b1f4d.jpg"
94 ]
95
96 assert response["page_size"] == 2
97 assert response["count"] == 2
98 end
99 end
100
101 describe "POST /api/pleroma/admin/media_proxy_caches/delete" do
102 test "deleted MediaProxy URLs from banned", %{conn: conn} do
103 MediaProxy.put_in_banned_urls([
104 "http://localhost:4001/media/a688346.jpg",
105 "http://localhost:4001/media/fb1f4d.jpg"
106 ])
107
108 conn
109 |> put_req_header("content-type", "application/json")
110 |> post("/api/pleroma/admin/media_proxy_caches/delete", %{
111 urls: ["http://localhost:4001/media/a688346.jpg"]
112 })
113 |> json_response_and_validate_schema(200)
114
115 refute MediaProxy.in_banned_urls("http://localhost:4001/media/a688346.jpg")
116 assert MediaProxy.in_banned_urls("http://localhost:4001/media/fb1f4d.jpg")
117 end
118 end
119
120 describe "POST /api/pleroma/admin/media_proxy_caches/purge" do
121 test "perform invalidates cache of MediaProxy", %{conn: conn} do
122 urls = [
123 "http://example.com/media/a688346.jpg",
124 "http://example.com/media/fb1f4d.jpg"
125 ]
126
127 with_mocks [
128 {MediaProxy.Invalidation.Script, [],
129 [
130 purge: fn _, _ -> {"ok", 0} end
131 ]}
132 ] do
133 conn
134 |> put_req_header("content-type", "application/json")
135 |> post("/api/pleroma/admin/media_proxy_caches/purge", %{urls: urls, ban: false})
136 |> json_response_and_validate_schema(200)
137
138 refute MediaProxy.in_banned_urls("http://example.com/media/a688346.jpg")
139 refute MediaProxy.in_banned_urls("http://example.com/media/fb1f4d.jpg")
140 end
141 end
142
143 test "perform invalidates cache of MediaProxy and adds url to banned", %{conn: conn} do
144 urls = [
145 "http://example.com/media/a688346.jpg",
146 "http://example.com/media/fb1f4d.jpg"
147 ]
148
149 with_mocks [{MediaProxy.Invalidation.Script, [], [purge: fn _, _ -> {"ok", 0} end]}] do
150 conn
151 |> put_req_header("content-type", "application/json")
152 |> post(
153 "/api/pleroma/admin/media_proxy_caches/purge",
154 %{urls: urls, ban: true}
155 )
156 |> json_response_and_validate_schema(200)
157
158 assert MediaProxy.in_banned_urls("http://example.com/media/a688346.jpg")
159 assert MediaProxy.in_banned_urls("http://example.com/media/fb1f4d.jpg")
160 end
161 end
162 end
163 end