Support `list` visibility in StatusView
[akkoma] / test / user / synchronization_test.exs
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2018 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.User.SynchronizationTest do
6 use Pleroma.DataCase
7 import Pleroma.Factory
8 alias Pleroma.User
9 alias Pleroma.User.Synchronization
10
11 setup do
12 Tesla.Mock.mock(fn env -> apply(HttpRequestMock, :request, [env]) end)
13 :ok
14 end
15
16 test "update following/followers counters" do
17 user1 =
18 insert(:user,
19 local: false,
20 ap_id: "http://localhost:4001/users/masto_closed"
21 )
22
23 user2 = insert(:user, local: false, ap_id: "http://localhost:4001/users/fuser2")
24
25 users = User.external_users()
26 assert length(users) == 2
27 {user, %{}} = Synchronization.call(users, %{})
28 assert user == List.last(users)
29
30 %{follower_count: followers, following_count: following} = User.get_cached_user_info(user1)
31 assert followers == 437
32 assert following == 152
33
34 %{follower_count: followers, following_count: following} = User.get_cached_user_info(user2)
35
36 assert followers == 527
37 assert following == 267
38 end
39
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")
42
43 user2 = insert(:user, local: false, ap_id: "http://domain-with-errors:4001/users/fuser2")
44
45 users = User.external_users()
46 assert length(users) == 2
47
48 {user, %{"domain-with-errors" => 2}} =
49 Synchronization.call(users, %{"domain-with-errors" => 2}, max_retries: 2)
50
51 assert user == List.last(users)
52
53 %{follower_count: followers, following_count: following} = User.get_cached_user_info(user1)
54 assert followers == 0
55 assert following == 0
56
57 %{follower_count: followers, following_count: following} = User.get_cached_user_info(user2)
58
59 assert followers == 0
60 assert following == 0
61 end
62
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")
65
66 user2 = insert(:user, local: false, ap_id: "http://domain-with-errors:4001/users/fuser2")
67
68 users = User.external_users()
69 assert length(users) == 2
70
71 {user, %{"domain-with-errors" => 2}} = Synchronization.call(users, %{}, max_retries: 2)
72
73 assert user == List.last(users)
74
75 %{follower_count: followers, following_count: following} = User.get_cached_user_info(user1)
76 assert followers == 0
77 assert following == 0
78
79 %{follower_count: followers, following_count: following} = User.get_cached_user_info(user2)
80
81 assert followers == 0
82 assert following == 0
83 end
84
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")
88
89 users = User.external_users()
90 assert length(users) == 2
91
92 {user, %{"domain-with-errors" => 2}} = Synchronization.call(users, %{}, max_retries: 2)
93 assert user == List.last(users)
94
95 %{follower_count: followers, following_count: following} = User.get_cached_user_info(user1)
96 assert followers == 0
97 assert following == 0
98
99 %{follower_count: followers, following_count: following} = User.get_cached_user_info(user2)
100
101 assert followers == 527
102 assert following == 267
103 end
104 end