Change user.discoverable field to user.is_discoverable
[akkoma] / test / plugs / remote_ip_test.exs
index 9c3737b0b5e21a69ab54f57d8d12365f842734c3..6d01c812de291379aab4c9c6c1f7fb1cf515f2ce 100644 (file)
@@ -3,14 +3,27 @@
 # SPDX-License-Identifier: AGPL-3.0-only
 
 defmodule Pleroma.Plugs.RemoteIpTest do
-  use ExUnit.Case, async: true
+  use ExUnit.Case
   use Plug.Test
 
   alias Pleroma.Plugs.RemoteIp
 
-  import Pleroma.Tests.Helpers, only: [clear_config: 1, clear_config: 2]
-
-  clear_config(RemoteIp)
+  import Pleroma.Tests.Helpers, only: [clear_config: 2]
+
+  setup do:
+          clear_config(RemoteIp,
+            enabled: true,
+            headers: ["x-forwarded-for"],
+            proxies: [],
+            reserved: [
+              "127.0.0.0/8",
+              "::1/128",
+              "fc00::/7",
+              "10.0.0.0/8",
+              "172.16.0.0/12",
+              "192.168.0.0/16"
+            ]
+          )
 
   test "disabled" do
     Pleroma.Config.put(RemoteIp, enabled: false)
@@ -26,8 +39,6 @@ defmodule Pleroma.Plugs.RemoteIpTest do
   end
 
   test "enabled" do
-    Pleroma.Config.put(RemoteIp, enabled: true)
-
     conn =
       conn(:get, "/")
       |> put_req_header("x-forwarded-for", "1.1.1.1")
@@ -55,8 +66,6 @@ defmodule Pleroma.Plugs.RemoteIpTest do
   end
 
   test "custom proxies" do
-    Pleroma.Config.put(RemoteIp, enabled: true)
-
     conn =
       conn(:get, "/")
       |> put_req_header("x-forwarded-for", "173.245.48.1, 1.1.1.1, 173.245.48.2")
@@ -73,4 +82,27 @@ defmodule Pleroma.Plugs.RemoteIpTest do
 
     assert conn.remote_ip == {1, 1, 1, 1}
   end
+
+  test "proxies set without CIDR format" do
+    Pleroma.Config.put([RemoteIp, :proxies], ["173.245.48.1"])
+
+    conn =
+      conn(:get, "/")
+      |> put_req_header("x-forwarded-for", "173.245.48.1, 1.1.1.1")
+      |> RemoteIp.call(nil)
+
+    assert conn.remote_ip == {1, 1, 1, 1}
+  end
+
+  test "proxies set `nonsensical` CIDR" do
+    Pleroma.Config.put([RemoteIp, :reserved], ["127.0.0.0/8"])
+    Pleroma.Config.put([RemoteIp, :proxies], ["10.0.0.3/24"])
+
+    conn =
+      conn(:get, "/")
+      |> put_req_header("x-forwarded-for", "10.0.0.3, 1.1.1.1")
+      |> RemoteIp.call(nil)
+
+    assert conn.remote_ip == {1, 1, 1, 1}
+  end
 end