diff options
Diffstat (limited to 'test/web')
| -rw-r--r-- | test/web/activity_pub/activity_pub_test.exs | 4 | ||||
| -rw-r--r-- | test/web/mastodon_api/mastodon_api_controller_test.exs | 108 | ||||
| -rw-r--r-- | test/web/mastodon_api/status_view_test.exs | 4 | ||||
| -rw-r--r-- | test/web/twitter_api/twitter_api_controller_test.exs | 134 | ||||
| -rw-r--r-- | test/web/twitter_api/twitter_api_test.exs | 11 | ||||
| -rw-r--r-- | test/web/twitter_api/views/user_view_test.exs | 12 | 
6 files changed, 264 insertions, 9 deletions
| diff --git a/test/web/activity_pub/activity_pub_test.exs b/test/web/activity_pub/activity_pub_test.exs index 081c202b1..bc33b4dfc 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -318,11 +318,9 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do        {:ok, announce_activity, object} = ActivityPub.announce(user, object)        assert object.data["announcement_count"] == 1 -      {:ok, unannounce_activity, activity, object} = ActivityPub.unannounce(user, object) +      {:ok, unannounce_activity, object} = ActivityPub.unannounce(user, object)        assert object.data["announcement_count"] == 0 -      assert activity == announce_activity -        assert unannounce_activity.data["to"] == [                 User.ap_followers(user),                 announce_activity.data["actor"] diff --git a/test/web/mastodon_api/mastodon_api_controller_test.exs b/test/web/mastodon_api/mastodon_api_controller_test.exs index 1291c3693..d1812457d 100644 --- a/test/web/mastodon_api/mastodon_api_controller_test.exs +++ b/test/web/mastodon_api/mastodon_api_controller_test.exs @@ -4,6 +4,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do    alias Pleroma.Web.TwitterAPI.TwitterAPI    alias Pleroma.{Repo, User, Activity, Notification}    alias Pleroma.Web.{OStatus, CommonAPI} +  alias Pleroma.Web.ActivityPub.ActivityPub    import Pleroma.Factory    import ExUnit.CaptureLog @@ -644,6 +645,73 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do      end    end +  describe "locked accounts" do +    test "/api/v1/follow_requests works" do +      user = insert(:user, %{info: %{"locked" => true}}) +      other_user = insert(:user) + +      {:ok, activity} = ActivityPub.follow(other_user, user) + +      user = Repo.get(User, user.id) +      other_user = Repo.get(User, other_user.id) + +      assert User.following?(other_user, user) == false + +      conn = +        build_conn() +        |> assign(:user, user) +        |> get("/api/v1/follow_requests") + +      assert [relationship] = json_response(conn, 200) +      assert to_string(other_user.id) == relationship["id"] +    end + +    test "/api/v1/follow_requests/:id/authorize works" do +      user = insert(:user, %{info: %{"locked" => true}}) +      other_user = insert(:user) + +      {:ok, activity} = ActivityPub.follow(other_user, user) + +      user = Repo.get(User, user.id) +      other_user = Repo.get(User, other_user.id) + +      assert User.following?(other_user, user) == false + +      conn = +        build_conn() +        |> assign(:user, user) +        |> post("/api/v1/follow_requests/#{other_user.id}/authorize") + +      assert relationship = json_response(conn, 200) +      assert to_string(other_user.id) == relationship["id"] + +      user = Repo.get(User, user.id) +      other_user = Repo.get(User, other_user.id) + +      assert User.following?(other_user, user) == true +    end + +    test "/api/v1/follow_requests/:id/reject works" do +      user = insert(:user, %{info: %{"locked" => true}}) +      other_user = insert(:user) + +      {:ok, activity} = ActivityPub.follow(other_user, user) + +      conn = +        build_conn() +        |> assign(:user, user) +        |> post("/api/v1/follow_requests/#{other_user.id}/reject") + +      assert relationship = json_response(conn, 200) +      assert to_string(other_user.id) == relationship["id"] + +      user = Repo.get(User, user.id) +      other_user = Repo.get(User, other_user.id) + +      assert User.following?(other_user, user) == false +    end +  end +    test "account fetching", %{conn: conn} do      user = insert(:user) @@ -792,6 +860,46 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do      assert [%{"id" => ^other_user_id}] = json_response(conn, 200)    end +  test "blocking / unblocking a domain", %{conn: conn} do +    user = insert(:user) +    other_user = insert(:user, %{ap_id: "https://dogwhistle.zone/@pundit"}) + +    conn = +      conn +      |> assign(:user, user) +      |> post("/api/v1/domain_blocks", %{"domain" => "dogwhistle.zone"}) + +    assert %{} = json_response(conn, 200) +    user = User.get_cached_by_ap_id(user.ap_id) +    assert User.blocks?(user, other_user) + +    conn = +      build_conn() +      |> assign(:user, user) +      |> delete("/api/v1/domain_blocks", %{"domain" => "dogwhistle.zone"}) + +    assert %{} = json_response(conn, 200) +    user = User.get_cached_by_ap_id(user.ap_id) +    refute User.blocks?(user, other_user) +  end + +  test "getting a list of domain blocks" do +    user = insert(:user) + +    {:ok, user} = User.block_domain(user, "bad.site") +    {:ok, user} = User.block_domain(user, "even.worse.site") + +    conn = +      conn +      |> assign(:user, user) +      |> get("/api/v1/domain_blocks") + +    domain_blocks = json_response(conn, 200) + +    assert "bad.site" in domain_blocks +    assert "even.worse.site" in domain_blocks +  end +    test "unimplemented mute endpoints" do      user = insert(:user)      other_user = insert(:user) diff --git a/test/web/mastodon_api/status_view_test.exs b/test/web/mastodon_api/status_view_test.exs index d9a0a8a95..d28c3cbad 100644 --- a/test/web/mastodon_api/status_view_test.exs +++ b/test/web/mastodon_api/status_view_test.exs @@ -64,11 +64,11 @@ defmodule Pleroma.Web.MastodonAPI.StatusViewTest do      status = StatusView.render("status.json", %{activity: activity}) -    assert status.in_reply_to_id == note.id +    assert status.in_reply_to_id == to_string(note.id)      [status] = StatusView.render("index.json", %{activities: [activity], as: :activity}) -    assert status.in_reply_to_id == note.id +    assert status.in_reply_to_id == to_string(note.id)    end    test "contains mentions" do diff --git a/test/web/twitter_api/twitter_api_controller_test.exs b/test/web/twitter_api/twitter_api_controller_test.exs index 68f4331df..806227110 100644 --- a/test/web/twitter_api/twitter_api_controller_test.exs +++ b/test/web/twitter_api/twitter_api_controller_test.exs @@ -580,6 +580,40 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do      end    end +  describe "POST /api/statuses/unretweet/:id" do +    setup [:valid_user] + +    test "without valid credentials", %{conn: conn} do +      note_activity = insert(:note_activity) +      conn = post(conn, "/api/statuses/unretweet/#{note_activity.id}.json") +      assert json_response(conn, 403) == %{"error" => "Invalid credentials."} +    end + +    test "with credentials", %{conn: conn, user: current_user} do +      note_activity = insert(:note_activity) + +      request_path = "/api/statuses/retweet/#{note_activity.id}.json" + +      _response = +        conn +        |> with_credentials(current_user.nickname, "test") +        |> post(request_path) + +      request_path = String.replace(request_path, "retweet", "unretweet") + +      response = +        conn +        |> with_credentials(current_user.nickname, "test") +        |> post(request_path) + +      activity = Repo.get(Activity, note_activity.id) +      activity_user = Repo.get_by(User, ap_id: note_activity.data["actor"]) + +      assert json_response(response, 200) == +               ActivityRepresenter.to_map(activity, %{user: activity_user, for: current_user}) +    end +  end +    describe "POST /api/account/register" do      test "it creates a new user", %{conn: conn} do        data = %{ @@ -762,6 +796,38 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do        assert json_response(conn, 200) == UserView.render("user.json", %{user: user, for: user})      end + +    test "it locks an account", %{conn: conn} do +      user = insert(:user) + +      conn = +        conn +        |> assign(:user, user) +        |> post("/api/account/update_profile.json", %{ +          "locked" => "true" +        }) + +      user = Repo.get!(User, user.id) +      assert user.info["locked"] == true + +      assert json_response(conn, 200) == UserView.render("user.json", %{user: user, for: user}) +    end + +    test "it unlocks an account", %{conn: conn} do +      user = insert(:user) + +      conn = +        conn +        |> assign(:user, user) +        |> post("/api/account/update_profile.json", %{ +          "locked" => "false" +        }) + +      user = Repo.get!(User, user.id) +      assert user.info["locked"] == false + +      assert json_response(conn, 200) == UserView.render("user.json", %{user: user, for: user}) +    end    end    defp valid_user(_context) do @@ -926,4 +992,72 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do        :timer.sleep(1000)      end    end + +  describe "GET /api/pleroma/friend_requests" do +    test "it lists friend requests" do +      user = insert(:user, %{info: %{"locked" => true}}) +      other_user = insert(:user) + +      {:ok, activity} = ActivityPub.follow(other_user, user) + +      user = Repo.get(User, user.id) +      other_user = Repo.get(User, other_user.id) + +      assert User.following?(other_user, user) == false + +      conn = +        build_conn() +        |> assign(:user, user) +        |> get("/api/pleroma/friend_requests") + +      assert [relationship] = json_response(conn, 200) +      assert other_user.id == relationship["id"] +    end +  end + +  describe "POST /api/pleroma/friendships/approve" do +    test "it approves a friend request" do +      user = insert(:user, %{info: %{"locked" => true}}) +      other_user = insert(:user) + +      {:ok, activity} = ActivityPub.follow(other_user, user) + +      user = Repo.get(User, user.id) +      other_user = Repo.get(User, other_user.id) + +      assert User.following?(other_user, user) == false + +      conn = +        build_conn() +        |> assign(:user, user) +        |> post("/api/pleroma/friendships/approve", %{"user_id" => to_string(other_user.id)}) + +      assert relationship = json_response(conn, 200) +      assert other_user.id == relationship["id"] +      assert relationship["follows_you"] == true +    end +  end + +  describe "POST /api/pleroma/friendships/deny" do +    test "it denies a friend request" do +      user = insert(:user, %{info: %{"locked" => true}}) +      other_user = insert(:user) + +      {:ok, activity} = ActivityPub.follow(other_user, user) + +      user = Repo.get(User, user.id) +      other_user = Repo.get(User, other_user.id) + +      assert User.following?(other_user, user) == false + +      conn = +        build_conn() +        |> assign(:user, user) +        |> post("/api/pleroma/friendships/deny", %{"user_id" => to_string(other_user.id)}) + +      assert relationship = json_response(conn, 200) +      assert other_user.id == relationship["id"] +      assert relationship["follows_you"] == false +    end +  end  end diff --git a/test/web/twitter_api/twitter_api_test.exs b/test/web/twitter_api/twitter_api_test.exs index edacb312d..06c1ba6ec 100644 --- a/test/web/twitter_api/twitter_api_test.exs +++ b/test/web/twitter_api/twitter_api_test.exs @@ -228,6 +228,17 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPITest do      assert status == updated_activity    end +  test "it unretweets an already retweeted status" do +    user = insert(:user) +    note_activity = insert(:note_activity) + +    {:ok, _status} = TwitterAPI.repeat(user, note_activity.id) +    {:ok, status} = TwitterAPI.unrepeat(user, note_activity.id) +    updated_activity = Activity.get_by_ap_id(note_activity.data["id"]) + +    assert status == updated_activity +  end +    test "it registers a new user and returns the user." do      data = %{        "nickname" => "lain", diff --git a/test/web/twitter_api/views/user_view_test.exs b/test/web/twitter_api/views/user_view_test.exs index 9f8bf4cdc..eea743b32 100644 --- a/test/web/twitter_api/views/user_view_test.exs +++ b/test/web/twitter_api/views/user_view_test.exs @@ -59,7 +59,8 @@ defmodule Pleroma.Web.TwitterAPI.UserViewTest do        "statusnet_profile_url" => user.ap_id,        "cover_photo" => banner,        "background_image" => nil, -      "is_local" => true +      "is_local" => true, +      "locked" => false      }      assert represented == UserView.render("show.json", %{user: user}) @@ -94,7 +95,8 @@ defmodule Pleroma.Web.TwitterAPI.UserViewTest do        "statusnet_profile_url" => user.ap_id,        "cover_photo" => banner,        "background_image" => nil, -      "is_local" => true +      "is_local" => true, +      "locked" => false      }      assert represented == UserView.render("show.json", %{user: user, for: follower}) @@ -130,7 +132,8 @@ defmodule Pleroma.Web.TwitterAPI.UserViewTest do        "statusnet_profile_url" => follower.ap_id,        "cover_photo" => banner,        "background_image" => nil, -      "is_local" => true +      "is_local" => true, +      "locked" => false      }      assert represented == UserView.render("show.json", %{user: follower, for: user}) @@ -173,7 +176,8 @@ defmodule Pleroma.Web.TwitterAPI.UserViewTest do        "statusnet_profile_url" => user.ap_id,        "cover_photo" => banner,        "background_image" => nil, -      "is_local" => true +      "is_local" => true, +      "locked" => false      }      blocker = Repo.get(User, blocker.id) | 
