diff options
Diffstat (limited to 'test/web')
| -rw-r--r-- | test/web/activity_pub/activity_pub_test.exs | 12 | ||||
| -rw-r--r-- | test/web/mastodon_api/mastodon_api_controller_test.exs | 22 | ||||
| -rw-r--r-- | test/web/node_info_test.exs | 11 | ||||
| -rw-r--r-- | test/web/ostatus/incoming_documents/delete_handling_test.exs | 2 | ||||
| -rw-r--r-- | test/web/ostatus/ostatus_controller_test.exs | 18 | ||||
| -rw-r--r-- | test/web/twitter_api/twitter_api_controller_test.exs | 88 | 
6 files changed, 149 insertions, 4 deletions
diff --git a/test/web/activity_pub/activity_pub_test.exs b/test/web/activity_pub/activity_pub_test.exs index 4f6b7f058..7bccd7500 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -180,6 +180,16 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do      assert Enum.member?(activities, activity_one)    end +  test "excludes reblogs on request" do +    user = insert(:user) +    {:ok, expected_activity} = ActivityBuilder.insert(%{"type" => "Create"}, %{:user => user}) +    {:ok, _} = ActivityBuilder.insert(%{"type" => "Announce"}, %{:user => user}) + +    [activity] = ActivityPub.fetch_user_activities(user, nil, %{"exclude_reblogs" => "true"}) + +    assert activity == expected_activity +  end +    describe "public fetch activities" do      test "doesn't retrieve unlisted activities" do        user = insert(:user) @@ -482,7 +492,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do        assert Repo.get(Activity, delete.id) != nil -      assert Repo.get(Object, object.id) == nil +      assert Repo.get(Object, object.id).data["type"] == "Tombstone"      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 433c135f7..0136acf8c 100644 --- a/test/web/mastodon_api/mastodon_api_controller_test.exs +++ b/test/web/mastodon_api/mastodon_api_controller_test.exs @@ -296,7 +296,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do        assert %{} = json_response(conn, 200) -      assert Repo.get(Activity, activity.id) == nil +      refute Repo.get(Activity, activity.id)      end      test "when you didn't create it", %{conn: conn} do @@ -840,6 +840,26 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do        assert [%{"id" => id}] = json_response(conn, 200)        assert id == to_string(image_post.id)      end + +    test "gets a user's statuses without reblogs", %{conn: conn} do +      user = insert(:user) +      {:ok, post} = CommonAPI.post(user, %{"status" => "HI!!!"}) +      {:ok, _, _} = CommonAPI.repeat(post.id, user) + +      conn = +        conn +        |> get("/api/v1/accounts/#{user.id}/statuses", %{"exclude_reblogs" => "true"}) + +      assert [%{"id" => id}] = json_response(conn, 200) +      assert id == to_string(post.id) + +      conn = +        conn +        |> get("/api/v1/accounts/#{user.id}/statuses", %{"exclude_reblogs" => "1"}) + +      assert [%{"id" => id}] = json_response(conn, 200) +      assert id == to_string(post.id) +    end    end    describe "user relationships" do diff --git a/test/web/node_info_test.exs b/test/web/node_info_test.exs index 6769a4490..5981c70a7 100644 --- a/test/web/node_info_test.exs +++ b/test/web/node_info_test.exs @@ -19,6 +19,17 @@ defmodule Pleroma.Web.NodeInfoTest do      assert user.ap_id in result["metadata"]["staffAccounts"]    end +  test "nodeinfo shows restricted nicknames", %{conn: conn} do +    conn = +      conn +      |> get("/nodeinfo/2.0.json") + +    assert result = json_response(conn, 200) + +    assert Pleroma.Config.get([Pleroma.User, :restricted_nicknames]) == +             result["metadata"]["restrictedNicknames"] +  end +    test "returns 404 when federation is disabled", %{conn: conn} do      instance =        Application.get_env(:pleroma, :instance) diff --git a/test/web/ostatus/incoming_documents/delete_handling_test.exs b/test/web/ostatus/incoming_documents/delete_handling_test.exs index 1e041e5b0..c8fbff6cc 100644 --- a/test/web/ostatus/incoming_documents/delete_handling_test.exs +++ b/test/web/ostatus/incoming_documents/delete_handling_test.exs @@ -25,7 +25,7 @@ defmodule Pleroma.Web.OStatus.DeleteHandlingTest do        refute Repo.get(Activity, note.id)        refute Repo.get(Activity, like.id) -      refute Object.get_by_ap_id(note.data["object"]["id"]) +      assert Object.get_by_ap_id(note.data["object"]["id"]).data["type"] == "Tombstone"        assert Repo.get(Activity, second_note.id)        assert Object.get_by_ap_id(second_note.data["object"]["id"]) diff --git a/test/web/ostatus/ostatus_controller_test.exs b/test/web/ostatus/ostatus_controller_test.exs index 6b535a1a9..995cc00d6 100644 --- a/test/web/ostatus/ostatus_controller_test.exs +++ b/test/web/ostatus/ostatus_controller_test.exs @@ -5,7 +5,7 @@  defmodule Pleroma.Web.OStatus.OStatusControllerTest do    use Pleroma.Web.ConnCase    import Pleroma.Factory -  alias Pleroma.{User, Repo} +  alias Pleroma.{User, Repo, Object}    alias Pleroma.Web.CommonAPI    alias Pleroma.Web.OStatus.ActivityRepresenter @@ -114,6 +114,22 @@ defmodule Pleroma.Web.OStatus.OStatusControllerTest do      |> response(404)    end +  test "404s on deleted objects", %{conn: conn} do +    note_activity = insert(:note_activity) +    [_, uuid] = hd(Regex.scan(~r/.+\/([\w-]+)$/, note_activity.data["object"]["id"])) +    object = Object.get_by_ap_id(note_activity.data["object"]["id"]) + +    conn +    |> get("/objects/#{uuid}") +    |> response(200) + +    Object.delete(object) + +    conn +    |> get("/objects/#{uuid}") +    |> response(404) +  end +    test "gets an activity", %{conn: conn} do      note_activity = insert(:note_activity)      [_, uuid] = hd(Regex.scan(~r/.+\/([\w-]+)$/, note_activity.data["id"])) diff --git a/test/web/twitter_api/twitter_api_controller_test.exs b/test/web/twitter_api/twitter_api_controller_test.exs index 0e656f9ca..a4526eeda 100644 --- a/test/web/twitter_api/twitter_api_controller_test.exs +++ b/test/web/twitter_api/twitter_api_controller_test.exs @@ -112,6 +112,8 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do    end    describe "GET /statuses/public_timeline.json" do +    setup [:valid_user] +      test "returns statuses", %{conn: conn} do        user = insert(:user)        activities = ActivityBuilder.insert_list(30, %{}, %{user: user}) @@ -145,14 +147,44 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do        Application.put_env(:pleroma, :instance, instance)      end +    test "returns 200 to authenticated request when the instance is not public", +         %{conn: conn, user: user} do +      instance = +        Application.get_env(:pleroma, :instance) +        |> Keyword.put(:public, false) + +      Application.put_env(:pleroma, :instance, instance) + +      conn +      |> with_credentials(user.nickname, "test") +      |> get("/api/statuses/public_timeline.json") +      |> json_response(200) + +      instance = +        Application.get_env(:pleroma, :instance) +        |> Keyword.put(:public, true) + +      Application.put_env(:pleroma, :instance, instance) +    end +      test "returns 200 to unauthenticated request when the instance is public", %{conn: conn} do        conn        |> get("/api/statuses/public_timeline.json")        |> json_response(200)      end + +    test "returns 200 to authenticated request when the instance is public", +         %{conn: conn, user: user} do +      conn +      |> with_credentials(user.nickname, "test") +      |> get("/api/statuses/public_timeline.json") +      |> json_response(200) +    end    end    describe "GET /statuses/public_and_external_timeline.json" do +    setup [:valid_user] +      test "returns 403 to unauthenticated request when the instance is not public", %{conn: conn} do        instance =          Application.get_env(:pleroma, :instance) @@ -171,11 +203,39 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do        Application.put_env(:pleroma, :instance, instance)      end +    test "returns 200 to authenticated request when the instance is not public", +         %{conn: conn, user: user} do +      instance = +        Application.get_env(:pleroma, :instance) +        |> Keyword.put(:public, false) + +      Application.put_env(:pleroma, :instance, instance) + +      conn +      |> with_credentials(user.nickname, "test") +      |> get("/api/statuses/public_and_external_timeline.json") +      |> json_response(200) + +      instance = +        Application.get_env(:pleroma, :instance) +        |> Keyword.put(:public, true) + +      Application.put_env(:pleroma, :instance, instance) +    end +      test "returns 200 to unauthenticated request when the instance is public", %{conn: conn} do        conn        |> get("/api/statuses/public_and_external_timeline.json")        |> json_response(200)      end + +    test "returns 200 to authenticated request when the instance is public", +         %{conn: conn, user: user} do +      conn +      |> with_credentials(user.nickname, "test") +      |> get("/api/statuses/public_and_external_timeline.json") +      |> json_response(200) +    end    end    describe "GET /statuses/show/:id.json" do @@ -519,6 +579,34 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do        assert length(response) == 1        assert Enum.at(response, 0) == ActivityRepresenter.to_map(activity, %{user: user})      end + +    test "with credentials with user_id, excluding RTs", %{conn: conn, user: current_user} do +      user = insert(:user) +      {:ok, activity} = ActivityBuilder.insert(%{"id" => 1, "type" => "Create"}, %{user: user}) +      {:ok, _} = ActivityBuilder.insert(%{"id" => 2, "type" => "Announce"}, %{user: user}) + +      conn = +        conn +        |> with_credentials(current_user.nickname, "test") +        |> get("/api/statuses/user_timeline.json", %{ +          "user_id" => user.id, +          "include_rts" => "false" +        }) + +      response = json_response(conn, 200) + +      assert length(response) == 1 +      assert Enum.at(response, 0) == ActivityRepresenter.to_map(activity, %{user: user}) + +      conn = +        conn +        |> get("/api/statuses/user_timeline.json", %{"user_id" => user.id, "include_rts" => "0"}) + +      response = json_response(conn, 200) + +      assert length(response) == 1 +      assert Enum.at(response, 0) == ActivityRepresenter.to_map(activity, %{user: user}) +    end    end    describe "POST /friendships/create.json" do  | 
