summaryrefslogtreecommitdiff
path: root/test/user_test.exs
diff options
context:
space:
mode:
Diffstat (limited to 'test/user_test.exs')
-rw-r--r--test/user_test.exs89
1 files changed, 86 insertions, 3 deletions
diff --git a/test/user_test.exs b/test/user_test.exs
index 352a16687..231f1d94d 100644
--- a/test/user_test.exs
+++ b/test/user_test.exs
@@ -55,6 +55,15 @@ defmodule Pleroma.UserTest do
{:error, _} = User.follow(blockee, blocker)
end
+ test "local users do not automatically follow local locked accounts" do
+ follower = insert(:user, info: %{"locked" => true})
+ followed = insert(:user, info: %{"locked" => true})
+
+ {:ok, follower} = User.maybe_direct_follow(follower, followed)
+
+ refute User.following?(follower, followed)
+ end
+
# This is a somewhat useless test.
# test "following a remote user will ensure a websub subscription is present" do
# user = insert(:user)
@@ -166,6 +175,25 @@ defmodule Pleroma.UserTest do
fetched_user = User.get_or_fetch_by_nickname("nonexistant")
assert fetched_user == nil
end
+
+ test "updates an existing user, if stale" do
+ a_week_ago = NaiveDateTime.add(NaiveDateTime.utc_now(), -604_800)
+
+ orig_user =
+ insert(
+ :user,
+ local: false,
+ nickname: "admin@mastodon.example.org",
+ ap_id: "http://mastodon.example.org/users/admin",
+ last_refreshed_at: a_week_ago
+ )
+
+ assert orig_user.last_refreshed_at == a_week_ago
+
+ user = User.get_or_fetch_by_ap_id("http://mastodon.example.org/users/admin")
+
+ refute user.last_refreshed_at == orig_user.last_refreshed_at
+ end
end
test "returns an ap_id for a user" do
@@ -220,7 +248,7 @@ defmodule Pleroma.UserTest do
end
test "it has required fields" do
- [:name, :nickname, :ap_id]
+ [:name, :ap_id]
|> Enum.each(fn field ->
cs = User.remote_user_creation(Map.delete(@valid_remote, field))
refute cs.valid?
@@ -459,11 +487,13 @@ defmodule Pleroma.UserTest do
assert addressed in recipients
end
- test ".deactivate deactivates a user" do
+ test ".deactivate can de-activate then re-activate a user" do
user = insert(:user)
assert false == !!user.info["deactivated"]
{:ok, user} = User.deactivate(user)
assert true == user.info["deactivated"]
+ {:ok, user} = User.deactivate(user, false)
+ assert false == !!user.info["deactivated"]
end
test ".delete deactivates a user, all follow relationships and all create activities" do
@@ -481,7 +511,7 @@ defmodule Pleroma.UserTest do
{:ok, _, _} = CommonAPI.favorite(activity.id, follower)
{:ok, _, _} = CommonAPI.repeat(activity.id, follower)
- :ok = User.delete(user)
+ {:ok, _} = User.delete(user)
followed = Repo.get(User, followed.id)
follower = Repo.get(User, follower.id)
@@ -507,4 +537,57 @@ defmodule Pleroma.UserTest do
assert {:ok, %User{}} = User.insert_or_update_user(data)
end
+
+ describe "per-user rich-text filtering" do
+ test "html_filter_policy returns nil when rich-text is enabled" do
+ user = insert(:user)
+
+ assert nil == User.html_filter_policy(user)
+ end
+
+ test "html_filter_policy returns TwitterText scrubber when rich-text is disabled" do
+ user = insert(:user, %{info: %{"no_rich_text" => true}})
+
+ assert Pleroma.HTML.Scrubber.TwitterText == User.html_filter_policy(user)
+ end
+ end
+
+ describe "caching" do
+ test "invalidate_cache works" do
+ user = insert(:user)
+ user_info = User.get_cached_user_info(user)
+
+ User.invalidate_cache(user)
+
+ {:ok, nil} = Cachex.get(:user_cache, "ap_id:#{user.ap_id}")
+ {:ok, nil} = Cachex.get(:user_cache, "nickname:#{user.nickname}")
+ {:ok, nil} = Cachex.get(:user_cache, "user_info:#{user.id}")
+ end
+
+ test "User.delete() plugs any possible zombie objects" do
+ user = insert(:user)
+
+ {:ok, _} = User.delete(user)
+
+ {:ok, cached_user} = Cachex.get(:user_cache, "ap_id:#{user.ap_id}")
+
+ assert cached_user != user
+
+ {:ok, cached_user} = Cachex.get(:user_cache, "nickname:#{user.ap_id}")
+
+ assert cached_user != user
+ end
+ end
+
+ describe "User.search" do
+ test "finds a user, ranking by similarity" do
+ user = insert(:user, %{name: "lain"})
+ user_two = insert(:user, %{name: "ean"})
+ user_three = insert(:user, %{name: "ebn", nickname: "lain@mastodon.social"})
+ user_four = insert(:user, %{nickname: "lain@pleroma.soykaf.com"})
+
+ assert user_four ==
+ User.search("lain@ple") |> List.first() |> Map.put(:search_distance, nil)
+ end
+ end
end