diff options
Diffstat (limited to 'test/web')
| -rw-r--r-- | test/web/activity_pub/activity_pub_test.exs | 51 | ||||
| -rw-r--r-- | test/web/admin_api/admin_api_controller_test.exs | 141 | ||||
| -rw-r--r-- | test/web/mastodon_api/mastodon_api_controller_test.exs | 4 | ||||
| -rw-r--r-- | test/web/rel_me_test.exs | 55 | ||||
| -rw-r--r-- | test/web/twitter_api/twitter_api_controller_test.exs | 27 | 
5 files changed, 255 insertions, 23 deletions
| diff --git a/test/web/activity_pub/activity_pub_test.exs b/test/web/activity_pub/activity_pub_test.exs index ac3a565de..f4029896c 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -55,6 +55,14 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do          ActivityPub.fetch_activities([], %{:visibility => "public", "actor_id" => user.ap_id})        assert activities == [public_activity] + +      activities = +        ActivityPub.fetch_activities([], %{ +          :visibility => ~w[private public], +          "actor_id" => user.ap_id +        }) + +      assert activities == [public_activity, private_activity]      end    end @@ -205,6 +213,25 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do        assert activity.actor == user.ap_id        assert activity.recipients == ["user1", "user2", user.ap_id]      end + +    test "increases user note count only for public activities" do +      user = insert(:user) + +      {:ok, _} = +        CommonAPI.post(Repo.get(User, user.id), %{"status" => "1", "visibility" => "public"}) + +      {:ok, _} = +        CommonAPI.post(Repo.get(User, user.id), %{"status" => "2", "visibility" => "unlisted"}) + +      {:ok, _} = +        CommonAPI.post(Repo.get(User, user.id), %{"status" => "2", "visibility" => "private"}) + +      {:ok, _} = +        CommonAPI.post(Repo.get(User, user.id), %{"status" => "3", "visibility" => "direct"}) + +      user = Repo.get(User, user.id) +      assert user.info.note_count == 2 +    end    end    describe "fetch activities for recipients" do @@ -640,6 +667,30 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do        assert Repo.get(Object, object.id).data["type"] == "Tombstone"      end + +    test "decrements user note count only for public activities" do +      user = insert(:user, info: %{note_count: 10}) + +      {:ok, a1} = +        CommonAPI.post(Repo.get(User, user.id), %{"status" => "yeah", "visibility" => "public"}) + +      {:ok, a2} = +        CommonAPI.post(Repo.get(User, user.id), %{"status" => "yeah", "visibility" => "unlisted"}) + +      {:ok, a3} = +        CommonAPI.post(Repo.get(User, user.id), %{"status" => "yeah", "visibility" => "private"}) + +      {:ok, a4} = +        CommonAPI.post(Repo.get(User, user.id), %{"status" => "yeah", "visibility" => "direct"}) + +      {:ok, _} = a1.data["object"]["id"] |> Object.get_by_ap_id() |> ActivityPub.delete() +      {:ok, _} = a2.data["object"]["id"] |> Object.get_by_ap_id() |> ActivityPub.delete() +      {:ok, _} = a3.data["object"]["id"] |> Object.get_by_ap_id() |> ActivityPub.delete() +      {:ok, _} = a4.data["object"]["id"] |> Object.get_by_ap_id() |> ActivityPub.delete() + +      user = Repo.get(User, user.id) +      assert user.info.note_count == 10 +    end    end    describe "timeline post-processing" do diff --git a/test/web/admin_api/admin_api_controller_test.exs b/test/web/admin_api/admin_api_controller_test.exs index f6ae16844..42e0daf8e 100644 --- a/test/web/admin_api/admin_api_controller_test.exs +++ b/test/web/admin_api/admin_api_controller_test.exs @@ -331,22 +331,49 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do      assert conn.status == 200    end -  test "GET /api/pleroma/admin/users" do -    admin = insert(:user, info: %{is_admin: true}) -    user = insert(:user) +  describe "GET /api/pleroma/admin/users" do +    test "renders users array for the first page" do +      admin = insert(:user, info: %{is_admin: true}) +      user = insert(:user) -    conn = -      build_conn() -      |> assign(:user, admin) -      |> get("/api/pleroma/admin/users") +      conn = +        build_conn() +        |> assign(:user, admin) +        |> get("/api/pleroma/admin/users?page=1") -    assert json_response(conn, 200) == [ -             %{ -               "deactivated" => user.info.deactivated, -               "id" => user.id, -               "nickname" => user.nickname +      assert json_response(conn, 200) == %{ +               "count" => 2, +               "page_size" => 50, +               "users" => [ +                 %{ +                   "deactivated" => admin.info.deactivated, +                   "id" => admin.id, +                   "nickname" => admin.nickname +                 }, +                 %{ +                   "deactivated" => user.info.deactivated, +                   "id" => user.id, +                   "nickname" => user.nickname +                 } +               ] +             } +    end + +    test "renders empty array for the second page" do +      admin = insert(:user, info: %{is_admin: true}) +      insert(:user) + +      conn = +        build_conn() +        |> assign(:user, admin) +        |> get("/api/pleroma/admin/users?page=2") + +      assert json_response(conn, 200) == %{ +               "count" => 2, +               "page_size" => 50, +               "users" => []               } -           ] +    end    end    test "PATCH /api/pleroma/admin/users/:nickname/toggle_activation" do @@ -365,4 +392,92 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do                 "nickname" => user.nickname               }    end + +  describe "GET /api/pleroma/admin/users/search" do +    test "regular search" do +      admin = insert(:user, info: %{is_admin: true}) +      user = insert(:user, nickname: "bob") + +      conn = +        build_conn() +        |> assign(:user, admin) +        |> get("/api/pleroma/admin/users/search?query=bo") + +      assert json_response(conn, 200) == %{ +               "count" => 1, +               "page_size" => 50, +               "users" => [ +                 %{ +                   "deactivated" => user.info.deactivated, +                   "id" => user.id, +                   "nickname" => user.nickname +                 } +               ] +             } +    end + +    test "regular search with page size" do +      admin = insert(:user, info: %{is_admin: true}) +      user = insert(:user, nickname: "bob") +      user2 = insert(:user, nickname: "bo") + +      conn = +        build_conn() +        |> assign(:user, admin) +        |> get("/api/pleroma/admin/users/search?query=bo&page_size=1&page=1") + +      assert json_response(conn, 200) == %{ +               "count" => 2, +               "page_size" => 1, +               "users" => [ +                 %{ +                   "deactivated" => user.info.deactivated, +                   "id" => user.id, +                   "nickname" => user.nickname +                 } +               ] +             } + +      conn = +        build_conn() +        |> assign(:user, admin) +        |> get("/api/pleroma/admin/users/search?query=bo&page_size=1&page=2") + +      assert json_response(conn, 200) == %{ +               "count" => 2, +               "page_size" => 1, +               "users" => [ +                 %{ +                   "deactivated" => user2.info.deactivated, +                   "id" => user2.id, +                   "nickname" => user2.nickname +                 } +               ] +             } +    end + +    test "only local users" do +      admin = insert(:user, info: %{is_admin: true}, nickname: "john") +      user = insert(:user, nickname: "bob") + +      insert(:user, nickname: "bobb", local: false) + +      conn = +        build_conn() +        |> assign(:user, admin) +        |> get("/api/pleroma/admin/users/search?query=bo&local=true") + +      assert json_response(conn, 200) == %{ +               "count" => 1, +               "page_size" => 50, +               "users" => [ +                 %{ +                   "deactivated" => user.info.deactivated, +                   "id" => user.id, +                   "nickname" => user.nickname +                 } +               ] +             } +    end +  end  end diff --git a/test/web/mastodon_api/mastodon_api_controller_test.exs b/test/web/mastodon_api/mastodon_api_controller_test.exs index b52c2b805..f7f10662a 100644 --- a/test/web/mastodon_api/mastodon_api_controller_test.exs +++ b/test/web/mastodon_api/mastodon_api_controller_test.exs @@ -946,7 +946,6 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do        other_user = Repo.get(User, other_user.id)        assert User.following?(other_user, user) == false -      assert user.info.follow_request_count == 1        conn =          build_conn() @@ -960,7 +959,6 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do        other_user = Repo.get(User, other_user.id)        assert User.following?(other_user, user) == true -      assert user.info.follow_request_count == 0      end      test "verify_credentials", %{conn: conn} do @@ -982,7 +980,6 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do        {:ok, _activity} = ActivityPub.follow(other_user, user)        user = Repo.get(User, user.id) -      assert user.info.follow_request_count == 1        conn =          build_conn() @@ -996,7 +993,6 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do        other_user = Repo.get(User, other_user.id)        assert User.following?(other_user, user) == false -      assert user.info.follow_request_count == 0      end    end diff --git a/test/web/rel_me_test.exs b/test/web/rel_me_test.exs new file mode 100644 index 000000000..ba8038e69 --- /dev/null +++ b/test/web/rel_me_test.exs @@ -0,0 +1,55 @@ +defmodule Pleroma.Web.RelMeTest do +  use ExUnit.Case, async: true + +  setup do +    Tesla.Mock.mock(fn +      %{ +        method: :get, +        url: "http://example.com/rel_me/anchor" +      } -> +        %Tesla.Env{status: 200, body: File.read!("test/fixtures/rel_me_anchor.html")} + +      %{ +        method: :get, +        url: "http://example.com/rel_me/link" +      } -> +        %Tesla.Env{status: 200, body: File.read!("test/fixtures/rel_me_link.html")} + +      %{ +        method: :get, +        url: "http://example.com/rel_me/null" +      } -> +        %Tesla.Env{status: 200, body: File.read!("test/fixtures/rel_me_null.html")} +    end) + +    :ok +  end + +  test "parse/1" do +    hrefs = ["https://social.example.org/users/lain"] + +    assert Pleroma.Web.RelMe.parse("http://example.com/rel_me/null") == {:ok, []} +    assert {:error, _} = Pleroma.Web.RelMe.parse("http://example.com/rel_me/error") + +    assert Pleroma.Web.RelMe.parse("http://example.com/rel_me/link") == {:ok, hrefs} +    assert Pleroma.Web.RelMe.parse("http://example.com/rel_me/anchor") == {:ok, hrefs} +  end + +  test "maybe_put_rel_me/2" do +    profile_urls = ["https://social.example.org/users/lain"] +    attr = "me" +    fallback = nil + +    assert Pleroma.Web.RelMe.maybe_put_rel_me("http://example.com/rel_me/null", profile_urls) == +             fallback + +    assert Pleroma.Web.RelMe.maybe_put_rel_me("http://example.com/rel_me/error", profile_urls) == +             fallback + +    assert Pleroma.Web.RelMe.maybe_put_rel_me("http://example.com/rel_me/anchor", profile_urls) == +             attr + +    assert Pleroma.Web.RelMe.maybe_put_rel_me("http://example.com/rel_me/link", profile_urls) == +             attr +  end +end diff --git a/test/web/twitter_api/twitter_api_controller_test.exs b/test/web/twitter_api/twitter_api_controller_test.exs index 05a832967..d18b65876 100644 --- a/test/web/twitter_api/twitter_api_controller_test.exs +++ b/test/web/twitter_api/twitter_api_controller_test.exs @@ -427,7 +427,10 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do      test "with credentials", %{conn: conn, user: current_user} do        {:ok, activity} = -        ActivityBuilder.insert(%{"to" => [current_user.ap_id]}, %{user: current_user}) +        CommonAPI.post(current_user, %{ +          "status" => "why is tenshi eating a corndog so cute?", +          "visibility" => "public" +        })        conn =          conn @@ -445,6 +448,23 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do                   mentioned: [current_user]                 })      end + +    test "does not show DMs in mentions timeline", %{conn: conn, user: current_user} do +      {:ok, _activity} = +        CommonAPI.post(current_user, %{ +          "status" => "Have you guys ever seen how cute tenshi eating a corndog is?", +          "visibility" => "direct" +        }) + +      conn = +        conn +        |> with_credentials(current_user.nickname, "test") +        |> get("/api/statuses/mentions.json") + +      response = json_response(conn, 200) + +      assert length(response) == 0 +    end    end    describe "GET /api/qvitter/statuses/notifications.json" do @@ -670,7 +690,6 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do        followed = Repo.get(User, followed.id)        refute User.ap_followers(followed) in current_user.following -      assert followed.info.follow_request_count == 1        assert json_response(conn, 200) ==                 UserView.render("show.json", %{user: followed, for: current_user}) @@ -1737,7 +1756,6 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do        other_user = Repo.get(User, other_user.id)        assert User.following?(other_user, user) == false -      assert user.info.follow_request_count == 1        conn =          build_conn() @@ -1749,7 +1767,6 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do        assert relationship = json_response(conn, 200)        assert other_user.id == relationship["id"]        assert relationship["follows_you"] == true -      assert user.info.follow_request_count == 0      end    end @@ -1764,7 +1781,6 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do        other_user = Repo.get(User, other_user.id)        assert User.following?(other_user, user) == false -      assert user.info.follow_request_count == 1        conn =          build_conn() @@ -1776,7 +1792,6 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do        assert relationship = json_response(conn, 200)        assert other_user.id == relationship["id"]        assert relationship["follows_you"] == false -      assert user.info.follow_request_count == 0      end    end | 
