1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2018 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
5 defmodule Pleroma.User.SynchronizationTest do
9 alias Pleroma.User.Synchronization
12 Tesla.Mock.mock(fn env -> apply(HttpRequestMock, :request, [env]) end)
16 test "update following/followers counters" do
20 ap_id: "http://localhost:4001/users/masto_closed"
23 user2 = insert(:user, local: false, ap_id: "http://localhost:4001/users/fuser2")
25 users = User.external_users()
26 assert length(users) == 2
27 {user, %{}} = Synchronization.call(users, %{})
28 assert user == List.last(users)
30 %{follower_count: followers, following_count: following} = User.get_cached_user_info(user1)
31 assert followers == 437
32 assert following == 152
34 %{follower_count: followers, following_count: following} = User.get_cached_user_info(user2)
36 assert followers == 527
37 assert following == 267
40 test "don't check host if errors exist" do
41 user1 = insert(:user, local: false, ap_id: "http://domain-with-errors:4001/users/fuser1")
43 user2 = insert(:user, local: false, ap_id: "http://domain-with-errors:4001/users/fuser2")
45 users = User.external_users()
46 assert length(users) == 2
48 {user, %{"domain-with-errors" => 2}} =
49 Synchronization.call(users, %{"domain-with-errors" => 2}, max_retries: 2)
51 assert user == List.last(users)
53 %{follower_count: followers, following_count: following} = User.get_cached_user_info(user1)
57 %{follower_count: followers, following_count: following} = User.get_cached_user_info(user2)
63 test "don't check host if errors appeared" do
64 user1 = insert(:user, local: false, ap_id: "http://domain-with-errors:4001/users/fuser1")
66 user2 = insert(:user, local: false, ap_id: "http://domain-with-errors:4001/users/fuser2")
68 users = User.external_users()
69 assert length(users) == 2
71 {user, %{"domain-with-errors" => 2}} = Synchronization.call(users, %{}, max_retries: 2)
73 assert user == List.last(users)
75 %{follower_count: followers, following_count: following} = User.get_cached_user_info(user1)
79 %{follower_count: followers, following_count: following} = User.get_cached_user_info(user2)
85 test "other users after error appeared" do
86 user1 = insert(:user, local: false, ap_id: "http://domain-with-errors:4001/users/fuser1")
87 user2 = insert(:user, local: false, ap_id: "http://localhost:4001/users/fuser2")
89 users = User.external_users()
90 assert length(users) == 2
92 {user, %{"domain-with-errors" => 2}} = Synchronization.call(users, %{}, max_retries: 2)
93 assert user == List.last(users)
95 %{follower_count: followers, following_count: following} = User.get_cached_user_info(user1)
99 %{follower_count: followers, following_count: following} = User.get_cached_user_info(user2)
101 assert followers == 527
102 assert following == 267