giant massive dep upgrade and dialyxir-found error emporium (#371)
[akkoma] / test / pleroma / web / admin_api / controllers / media_proxy_cache_controller_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.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 clear_config([:media_proxy, :enabled], true)
25 clear_config([:media_proxy, :invalidation, :enabled], true)
26 clear_config([:media_proxy, :invalidation, :provider], MediaProxy.Invalidation.Script)
27
28 {:ok, %{admin: admin, token: token, conn: conn}}
29 end
30
31 describe "GET /api/v1/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/v1/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 results = response["urls"]
51
52 response =
53 conn
54 |> get("/api/v1/pleroma/admin/media_proxy_caches?page_size=2&page=2")
55 |> json_response_and_validate_schema(200)
56
57 assert response["page_size"] == 2
58 assert response["count"] == 5
59
60 results = results ++ response["urls"]
61
62 response =
63 conn
64 |> get("/api/v1/pleroma/admin/media_proxy_caches?page_size=2&page=3")
65 |> json_response_and_validate_schema(200)
66
67 results = results ++ response["urls"]
68
69 assert results |> Enum.sort() ==
70 [
71 "http://localhost:4001/media/wb1f46.jpg",
72 "http://localhost:4001/media/gb1f44.jpg",
73 "http://localhost:4001/media/tb13f47.jpg",
74 "http://localhost:4001/media/fb1f4d.jpg",
75 "http://localhost:4001/media/a688346.jpg"
76 ]
77 |> Enum.sort()
78 end
79
80 test "search banned MediaProxy URLs", %{conn: conn} do
81 MediaProxy.put_in_banned_urls([
82 "http://localhost:4001/media/a688346.jpg",
83 "http://localhost:4001/media/ff44b1f4d.jpg"
84 ])
85
86 MediaProxy.put_in_banned_urls("http://localhost:4001/media/gb1f44.jpg")
87 MediaProxy.put_in_banned_urls("http://localhost:4001/media/tb13f47.jpg")
88 MediaProxy.put_in_banned_urls("http://localhost:4001/media/wb1f46.jpg")
89
90 response =
91 conn
92 |> get("/api/v1/pleroma/admin/media_proxy_caches?page_size=2&query=F44")
93 |> json_response_and_validate_schema(200)
94
95 assert response["urls"] |> Enum.sort() == [
96 "http://localhost:4001/media/ff44b1f4d.jpg",
97 "http://localhost:4001/media/gb1f44.jpg"
98 ]
99
100 assert response["page_size"] == 2
101 assert response["count"] == 2
102 end
103 end
104
105 describe "POST /api/v1/pleroma/admin/media_proxy_caches/delete" do
106 test "deleted MediaProxy URLs from banned", %{conn: conn} do
107 MediaProxy.put_in_banned_urls([
108 "http://localhost:4001/media/a688346.jpg",
109 "http://localhost:4001/media/fb1f4d.jpg"
110 ])
111
112 conn
113 |> put_req_header("content-type", "application/json")
114 |> post("/api/v1/pleroma/admin/media_proxy_caches/delete", %{
115 urls: ["http://localhost:4001/media/a688346.jpg"]
116 })
117 |> json_response_and_validate_schema(200)
118
119 refute MediaProxy.in_banned_urls("http://localhost:4001/media/a688346.jpg")
120 assert MediaProxy.in_banned_urls("http://localhost:4001/media/fb1f4d.jpg")
121 end
122 end
123
124 describe "POST /api/v1/pleroma/admin/media_proxy_caches/purge" do
125 test "perform invalidates cache of MediaProxy", %{conn: conn} do
126 urls = [
127 "http://example.com/media/a688346.jpg",
128 "http://example.com/media/fb1f4d.jpg"
129 ]
130
131 with_mocks [
132 {MediaProxy.Invalidation.Script, [],
133 [
134 purge: fn _, _ -> {"ok", 0} end
135 ]}
136 ] do
137 conn
138 |> put_req_header("content-type", "application/json")
139 |> post("/api/v1/pleroma/admin/media_proxy_caches/purge", %{urls: urls, ban: false})
140 |> json_response_and_validate_schema(200)
141
142 refute MediaProxy.in_banned_urls("http://example.com/media/a688346.jpg")
143 refute MediaProxy.in_banned_urls("http://example.com/media/fb1f4d.jpg")
144 end
145 end
146
147 test "perform invalidates cache of MediaProxy and adds url to banned", %{conn: conn} do
148 urls = [
149 "http://example.com/media/a688346.jpg",
150 "http://example.com/media/fb1f4d.jpg"
151 ]
152
153 with_mocks [{MediaProxy.Invalidation.Script, [], [purge: fn _, _ -> {"ok", 0} end]}] do
154 conn
155 |> put_req_header("content-type", "application/json")
156 |> post(
157 "/api/v1/pleroma/admin/media_proxy_caches/purge",
158 %{urls: urls, ban: true}
159 )
160 |> json_response_and_validate_schema(200)
161
162 assert MediaProxy.in_banned_urls("http://example.com/media/a688346.jpg")
163 assert MediaProxy.in_banned_urls("http://example.com/media/fb1f4d.jpg")
164 end
165 end
166 end
167 end