diff options
| author | rinpatch <rinpatch@sdf.org> | 2019-07-31 19:37:55 +0300 | 
|---|---|---|
| committer | rinpatch <rinpatch@sdf.org> | 2019-07-31 21:09:13 +0300 | 
| commit | 301ea0dc0466371032f44f3e936d1b951ed9784c (patch) | |
| tree | 2f986005093c7b422675bb17c77f2f6fb0582619 /test | |
| parent | f42719506c539a4058c52d3a6e4a828948ac74ce (diff) | |
| download | pleroma-301ea0dc0466371032f44f3e936d1b951ed9784c.tar.gz pleroma-301ea0dc0466371032f44f3e936d1b951ed9784c.zip  | |
Add tests for counters being updated on follow
Diffstat (limited to 'test')
| -rw-r--r-- | test/fixtures/users_mock/masto_closed_followers_page.json | 1 | ||||
| -rw-r--r-- | test/fixtures/users_mock/masto_closed_following_page.json | 1 | ||||
| -rw-r--r-- | test/support/http_request_mock.ex | 16 | ||||
| -rw-r--r-- | test/user_test.exs | 74 | ||||
| -rw-r--r-- | test/web/activity_pub/activity_pub_test.exs | 20 | 
5 files changed, 92 insertions, 20 deletions
diff --git a/test/fixtures/users_mock/masto_closed_followers_page.json b/test/fixtures/users_mock/masto_closed_followers_page.json new file mode 100644 index 000000000..04ab0c4d3 --- /dev/null +++ b/test/fixtures/users_mock/masto_closed_followers_page.json @@ -0,0 +1 @@ +{"@context":"https://www.w3.org/ns/activitystreams","id":"http://localhost:4001/users/masto_closed/followers?page=1","type":"OrderedCollectionPage","totalItems":437,"next":"http://localhost:4001/users/masto_closed/followers?page=2","partOf":"http://localhost:4001/users/masto_closed/followers","orderedItems":["https://testing.uguu.ltd/users/rin","https://patch.cx/users/rin","https://letsalllovela.in/users/xoxo","https://pleroma.site/users/crushv","https://aria.company/users/boris","https://kawen.space/users/crushv","https://freespeech.host/users/cvcvcv","https://pleroma.site/users/picpub","https://pixelfed.social/users/nosleep","https://boopsnoot.gq/users/5c1896d162f7d337f90492a3","https://pikachu.rocks/users/waifu","https://royal.crablettesare.life/users/crablettes"]} diff --git a/test/fixtures/users_mock/masto_closed_following_page.json b/test/fixtures/users_mock/masto_closed_following_page.json new file mode 100644 index 000000000..8d8324699 --- /dev/null +++ b/test/fixtures/users_mock/masto_closed_following_page.json @@ -0,0 +1 @@ +{"@context":"https://www.w3.org/ns/activitystreams","id":"http://localhost:4001/users/masto_closed/following?page=1","type":"OrderedCollectionPage","totalItems":152,"next":"http://localhost:4001/users/masto_closed/following?page=2","partOf":"http://localhost:4001/users/masto_closed/following","orderedItems":["https://testing.uguu.ltd/users/rin","https://patch.cx/users/rin","https://letsalllovela.in/users/xoxo","https://pleroma.site/users/crushv","https://aria.company/users/boris","https://kawen.space/users/crushv","https://freespeech.host/users/cvcvcv","https://pleroma.site/users/picpub","https://pixelfed.social/users/nosleep","https://boopsnoot.gq/users/5c1896d162f7d337f90492a3","https://pikachu.rocks/users/waifu","https://royal.crablettesare.life/users/crablettes"]} diff --git a/test/support/http_request_mock.ex b/test/support/http_request_mock.ex index 2ed5f5042..bdfe43b28 100644 --- a/test/support/http_request_mock.ex +++ b/test/support/http_request_mock.ex @@ -792,6 +792,14 @@ defmodule HttpRequestMock do       }}    end +  def get("http://localhost:4001/users/masto_closed/followers?page=1", _, _, _) do +    {:ok, +     %Tesla.Env{ +       status: 200, +       body: File.read!("test/fixtures/users_mock/masto_closed_followers_page.json") +     }} +  end +    def get("http://localhost:4001/users/masto_closed/following", _, _, _) do      {:ok,       %Tesla.Env{ @@ -800,6 +808,14 @@ defmodule HttpRequestMock do       }}    end +  def get("http://localhost:4001/users/masto_closed/following?page=1", _, _, _) do +    {:ok, +     %Tesla.Env{ +       status: 200, +       body: File.read!("test/fixtures/users_mock/masto_closed_following_page.json") +     }} +  end +    def get("http://localhost:4001/users/fuser2/followers", _, _, _) do      {:ok,       %Tesla.Env{ diff --git a/test/user_test.exs b/test/user_test.exs index 556df45fd..7ec241c25 100644 --- a/test/user_test.exs +++ b/test/user_test.exs @@ -1393,4 +1393,78 @@ defmodule Pleroma.UserTest do        assert %User{bio: "test-bio"} = User.get_cached_by_ap_id(user.ap_id)      end    end + +  describe "following/followers synchronization" do +    setup do +      sync = Pleroma.Config.get([:instance, :external_user_synchronization]) +      on_exit(fn -> Pleroma.Config.put([:instance, :external_user_synchronization], sync) end) +    end + +    test "updates the counters normally on following/getting a follow when disabled" do +      Pleroma.Config.put([:instance, :external_user_synchronization], false) +      user = insert(:user) + +      other_user = +        insert(:user, +          local: false, +          follower_address: "http://localhost:4001/users/masto_closed/followers", +          following_address: "http://localhost:4001/users/masto_closed/following", +          info: %{ap_enabled: true} +        ) + +      assert User.user_info(other_user).following_count == 0 +      assert User.user_info(other_user).follower_count == 0 + +      {:ok, user} = Pleroma.User.follow(user, other_user) +      other_user = Pleroma.User.get_by_id(other_user.id) + +      assert User.user_info(user).following_count == 1 +      assert User.user_info(other_user).follower_count == 1 +    end + +    test "syncronizes the counters with the remote instance for the followed when enabled" do +      Pleroma.Config.put([:instance, :external_user_synchronization], false) + +      user = insert(:user) + +      other_user = +        insert(:user, +          local: false, +          follower_address: "http://localhost:4001/users/masto_closed/followers", +          following_address: "http://localhost:4001/users/masto_closed/following", +          info: %{ap_enabled: true} +        ) + +      assert User.user_info(other_user).following_count == 0 +      assert User.user_info(other_user).follower_count == 0 + +      Pleroma.Config.put([:instance, :external_user_synchronization], true) +      {:ok, _user} = User.follow(user, other_user) +      other_user = User.get_by_id(other_user.id) + +      assert User.user_info(other_user).follower_count == 437 +    end + +    test "syncronizes the counters with the remote instance for the follower when enabled" do +      Pleroma.Config.put([:instance, :external_user_synchronization], false) + +      user = insert(:user) + +      other_user = +        insert(:user, +          local: false, +          follower_address: "http://localhost:4001/users/masto_closed/followers", +          following_address: "http://localhost:4001/users/masto_closed/following", +          info: %{ap_enabled: true} +        ) + +      assert User.user_info(other_user).following_count == 0 +      assert User.user_info(other_user).follower_count == 0 + +      Pleroma.Config.put([:instance, :external_user_synchronization], true) +      {:ok, other_user} = User.follow(other_user, user) + +      assert User.user_info(other_user).following_count == 152 +    end +  end  end diff --git a/test/web/activity_pub/activity_pub_test.exs b/test/web/activity_pub/activity_pub_test.exs index 853c93ab5..3d9a678dd 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -1149,16 +1149,6 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do            "http://localhost:4001/users/masto_closed/followers?page=1" ->              %Tesla.Env{status: 403, body: ""} -          "http://localhost:4001/users/masto_closed/following?page=1" -> -            %Tesla.Env{ -              status: 200, -              body: -                Jason.encode!(%{ -                  "id" => "http://localhost:4001/users/masto_closed/following?page=1", -                  "type" => "OrderedCollectionPage" -                }) -            } -            _ ->              apply(HttpRequestMock, :request, [env])          end @@ -1182,16 +1172,6 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do            "http://localhost:4001/users/masto_closed/following?page=1" ->              %Tesla.Env{status: 403, body: ""} -          "http://localhost:4001/users/masto_closed/followers?page=1" -> -            %Tesla.Env{ -              status: 200, -              body: -                Jason.encode!(%{ -                  "id" => "http://localhost:4001/users/masto_closed/followers?page=1", -                  "type" => "OrderedCollectionPage" -                }) -            } -            _ ->              apply(HttpRequestMock, :request, [env])          end  | 
