aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Tashkinov <ivantashkinov@gmail.com>2018-12-29 12:26:23 +0300
committerIvan Tashkinov <ivantashkinov@gmail.com>2018-12-29 12:26:23 +0300
commit7bd49a32222045c34098f925fbd494461ab67ccd (patch)
tree73b534025815c3823015c8f4ce567939bdd10bef
parentb3574dccbbb9d24ed90f0a82627d18428aaa7a16 (diff)
downloadpleroma-7bd49a32222045c34098f925fbd494461ab67ccd.tar.gz
[#483] User.get_by_nickname/1: ensured case-insensitive matching for local FQN. Added tests.
-rw-r--r--lib/pleroma/user.ex2
-rw-r--r--test/user_test.exs19
2 files changed, 20 insertions, 1 deletions
diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex
index d4a6b13fb..1f6d4cc5e 100644
--- a/lib/pleroma/user.ex
+++ b/lib/pleroma/user.ex
@@ -388,7 +388,7 @@ defmodule Pleroma.User do
def get_by_nickname(nickname) do
Repo.get_by(User, nickname: nickname) ||
- if String.ends_with?(nickname, "@" <> Pleroma.Web.Endpoint.host()) do
+ if Regex.match?(~r(@#{Pleroma.Web.Endpoint.host()})i, nickname) do
[local_nickname, _] = String.split(nickname, "@")
Repo.get_by(User, nickname: local_nickname)
end
diff --git a/test/user_test.exs b/test/user_test.exs
index 6a081c5c5..8225453ab 100644
--- a/test/user_test.exs
+++ b/test/user_test.exs
@@ -278,6 +278,25 @@ defmodule Pleroma.UserTest do
assert user == fetched_user
end
+
+ test "gets an existing user by fully qualified nickname" do
+ user = insert(:user)
+
+ fetched_user =
+ User.get_or_fetch_by_nickname(user.nickname <> "@" <> Pleroma.Web.Endpoint.host())
+
+ assert user == fetched_user
+ end
+
+ test "gets an existing user by fully qualified nickname, case insensitive" do
+ user = insert(:user, nickname: "nick")
+ casing_altered_fqn = String.upcase(user.nickname <> "@" <> Pleroma.Web.Endpoint.host())
+
+ fetched_user = User.get_or_fetch_by_nickname(casing_altered_fqn)
+
+ assert user == fetched_user
+ end
+
test "fetches an external user via ostatus if no user exists" do
fetched_user = User.get_or_fetch_by_nickname("shp@social.heldscal.la")
assert fetched_user.nickname == "shp@social.heldscal.la"