Fix User.get_or_fetch/1 with usernames starting with http
authorTusooa Zhu <tusooa@kazv.moe>
Thu, 8 Sep 2022 15:58:17 +0000 (11:58 -0400)
committerFloatingGhost <hannah@coffee-and-dreams.uk>
Sun, 11 Sep 2022 19:29:05 +0000 (20:29 +0100)
lib/pleroma/user.ex
test/pleroma/user_test.exs

index 138f3c851d84bfb1424468f317949c20be5e40dd..a36c1c330b050d6a063b81f4fdbdfe74d8d8d96d 100644 (file)
@@ -1988,7 +1988,8 @@ defmodule Pleroma.User do
 
   @doc "Gets or fetch a user by uri or nickname."
   @spec get_or_fetch(String.t()) :: {:ok, User.t()} | {:error, String.t()}
-  def get_or_fetch("http" <> _host = uri), do: get_or_fetch_by_ap_id(uri)
+  def get_or_fetch("http://" <> _host = uri), do: get_or_fetch_by_ap_id(uri)
+  def get_or_fetch("https://" <> _host = uri), do: get_or_fetch_by_ap_id(uri)
   def get_or_fetch(nickname), do: get_or_fetch_by_nickname(nickname)
 
   # wait a period of time and return newest version of the User structs
index 9d35f9780c5974ff7e21d157234c63b6c9150efc..0272e31429b82c72bfd020041024f35096aef699 100644 (file)
@@ -737,6 +737,13 @@ defmodule Pleroma.UserTest do
       freshed_user = refresh_record(user)
       assert freshed_user == fetched_user
     end
+
+    test "gets an existing user by nickname starting with http" do
+      user = insert(:user, nickname: "httpssome")
+      {:ok, fetched_user} = User.get_or_fetch("httpssome")
+
+      assert user == fetched_user
+    end
   end
 
   describe "get_or_fetch/1 remote users with tld, while BE is runned on subdomain" do