diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/fixtures/image.jpg | bin | 291666 -> 284468 bytes | |||
| -rw-r--r-- | test/upload_test.exs | 5 | ||||
| -rw-r--r-- | test/user_test.exs | 17 | ||||
| -rw-r--r-- | test/web/activity_pub/transmogrifier_test.exs | 47 | ||||
| -rw-r--r-- | test/web/admin_api/admin_api_controller_test.exs | 16 | ||||
| -rw-r--r-- | test/web/mastodon_api/mastodon_api_controller_test.exs | 90 | 
6 files changed, 164 insertions, 11 deletions
| diff --git a/test/fixtures/image.jpg b/test/fixtures/image.jpgBinary files differ index 09834bb5c..edff6246b 100644 --- a/test/fixtures/image.jpg +++ b/test/fixtures/image.jpg diff --git a/test/upload_test.exs b/test/upload_test.exs index 770226478..946ebcb5a 100644 --- a/test/upload_test.exs +++ b/test/upload_test.exs @@ -56,7 +56,7 @@ defmodule Pleroma.UploadTest do        assert List.first(data["url"])["href"] ==                 Pleroma.Web.base_url() <> -                 "/media/e7a6d0cf595bff76f14c9a98b6c199539559e8b844e02e51e5efcfd1f614a2df.jpg" +                 "/media/e30397b58d226d6583ab5b8b3c5defb0c682bda5c31ef07a9f57c1c4986e3781.jpg"      end      test "copies the file to the configured folder without deduping" do @@ -150,8 +150,7 @@ defmodule Pleroma.UploadTest do        {:ok, data} = Upload.store(file)        [attachment_url | _] = data["url"] -      assert Path.basename(attachment_url["href"]) == -               "an%E2%80%A6%20image.jpg" +      assert Path.basename(attachment_url["href"]) == "an%E2%80%A6%20image.jpg"      end      test "escapes reserved uri characters" do diff --git a/test/user_test.exs b/test/user_test.exs index c57eb2c06..1f54f3e30 100644 --- a/test/user_test.exs +++ b/test/user_test.exs @@ -1098,4 +1098,21 @@ defmodule Pleroma.UserTest do      assert {:ok, user_state3} = User.bookmark(user, id2)      assert user_state3.bookmarks == [id2]    end + +  describe "search for admin" do +    test "it ignores case" do +      insert(:user, nickname: "papercoach") +      insert(:user, nickname: "CanadaPaperCoach") + +      {:ok, _results, count} = +        User.search_for_admin(%{ +          query: "paper", +          local: false, +          page: 1, +          page_size: 50 +        }) + +      assert count == 2 +    end +  end  end diff --git a/test/web/activity_pub/transmogrifier_test.exs b/test/web/activity_pub/transmogrifier_test.exs index afb931934..50e8e40bd 100644 --- a/test/web/activity_pub/transmogrifier_test.exs +++ b/test/web/activity_pub/transmogrifier_test.exs @@ -335,6 +335,53 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do        assert data["to"] == ["http://mastodon.example.org/users/admin/followers"]      end +    test "it ensures that as:Public activities make it to their followers collection" do +      user = insert(:user) + +      data = +        File.read!("test/fixtures/mastodon-post-activity.json") +        |> Poison.decode!() +        |> Map.put("actor", user.ap_id) +        |> Map.put("to", ["https://www.w3.org/ns/activitystreams#Public"]) +        |> Map.put("cc", []) + +      object = +        data["object"] +        |> Map.put("attributedTo", user.ap_id) +        |> Map.put("to", ["https://www.w3.org/ns/activitystreams#Public"]) +        |> Map.put("cc", []) + +      data = Map.put(data, "object", object) + +      {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) + +      assert data["cc"] == [User.ap_followers(user)] +    end + +    test "it ensures that address fields become lists" do +      user = insert(:user) + +      data = +        File.read!("test/fixtures/mastodon-post-activity.json") +        |> Poison.decode!() +        |> Map.put("actor", user.ap_id) +        |> Map.put("to", nil) +        |> Map.put("cc", nil) + +      object = +        data["object"] +        |> Map.put("attributedTo", user.ap_id) +        |> Map.put("to", nil) +        |> Map.put("cc", nil) + +      data = Map.put(data, "object", object) + +      {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) + +      assert !is_nil(data["to"]) +      assert !is_nil(data["cc"]) +    end +      test "it works for incoming update activities" do        data = File.read!("test/fixtures/mastodon-post-activity.json") |> Poison.decode!() diff --git a/test/web/admin_api/admin_api_controller_test.exs b/test/web/admin_api/admin_api_controller_test.exs index e50f0edde..0aab7f262 100644 --- a/test/web/admin_api/admin_api_controller_test.exs +++ b/test/web/admin_api/admin_api_controller_test.exs @@ -495,20 +495,20 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do                 "page_size" => 50,                 "users" => [                   %{ -                   "deactivated" => admin.info.deactivated, -                   "id" => admin.id, -                   "nickname" => admin.nickname, -                   "roles" => %{"admin" => true, "moderator" => false}, -                   "local" => true, -                   "tags" => [] -                 }, -                 %{                     "deactivated" => user.info.deactivated,                     "id" => user.id,                     "nickname" => user.nickname,                     "roles" => %{"admin" => false, "moderator" => false},                     "local" => true,                     "tags" => [] +                 }, +                 %{ +                   "deactivated" => admin.info.deactivated, +                   "id" => admin.id, +                   "nickname" => admin.nickname, +                   "roles" => %{"admin" => true, "moderator" => false}, +                   "local" => true, +                   "tags" => []                   }                 ]               } diff --git a/test/web/mastodon_api/mastodon_api_controller_test.exs b/test/web/mastodon_api/mastodon_api_controller_test.exs index 74bf05708..b2302422b 100644 --- a/test/web/mastodon_api/mastodon_api_controller_test.exs +++ b/test/web/mastodon_api/mastodon_api_controller_test.exs @@ -755,6 +755,96 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do        assert all = json_response(conn, 200)        assert all == []      end + +    test "paginates notifications using min_id, since_id, max_id, and limit", %{conn: conn} do +      user = insert(:user) +      other_user = insert(:user) + +      {:ok, activity1} = CommonAPI.post(other_user, %{"status" => "hi @#{user.nickname}"}) +      {:ok, activity2} = CommonAPI.post(other_user, %{"status" => "hi @#{user.nickname}"}) +      {:ok, activity3} = CommonAPI.post(other_user, %{"status" => "hi @#{user.nickname}"}) +      {:ok, activity4} = CommonAPI.post(other_user, %{"status" => "hi @#{user.nickname}"}) + +      notification1_id = Repo.get_by(Notification, activity_id: activity1.id).id |> to_string() +      notification2_id = Repo.get_by(Notification, activity_id: activity2.id).id |> to_string() +      notification3_id = Repo.get_by(Notification, activity_id: activity3.id).id |> to_string() +      notification4_id = Repo.get_by(Notification, activity_id: activity4.id).id |> to_string() + +      conn = +        conn +        |> assign(:user, user) + +      # min_id +      conn_res = +        conn +        |> get("/api/v1/notifications?limit=2&min_id=#{notification1_id}") + +      result = json_response(conn_res, 200) +      assert [%{"id" => ^notification3_id}, %{"id" => ^notification2_id}] = result + +      # since_id +      conn_res = +        conn +        |> get("/api/v1/notifications?limit=2&since_id=#{notification1_id}") + +      result = json_response(conn_res, 200) +      assert [%{"id" => ^notification4_id}, %{"id" => ^notification3_id}] = result + +      # max_id +      conn_res = +        conn +        |> get("/api/v1/notifications?limit=2&max_id=#{notification4_id}") + +      result = json_response(conn_res, 200) +      assert [%{"id" => ^notification3_id}, %{"id" => ^notification2_id}] = result +    end + +    test "filters notifications using exclude_types", %{conn: conn} do +      user = insert(:user) +      other_user = insert(:user) + +      {:ok, mention_activity} = CommonAPI.post(other_user, %{"status" => "hey @#{user.nickname}"}) +      {:ok, create_activity} = CommonAPI.post(user, %{"status" => "hey"}) +      {:ok, favorite_activity, _} = CommonAPI.favorite(create_activity.id, other_user) +      {:ok, reblog_activity, _} = CommonAPI.repeat(create_activity.id, other_user) +      {:ok, _, _, follow_activity} = CommonAPI.follow(other_user, user) + +      mention_notification_id = +        Repo.get_by(Notification, activity_id: mention_activity.id).id |> to_string() + +      favorite_notification_id = +        Repo.get_by(Notification, activity_id: favorite_activity.id).id |> to_string() + +      reblog_notification_id = +        Repo.get_by(Notification, activity_id: reblog_activity.id).id |> to_string() + +      follow_notification_id = +        Repo.get_by(Notification, activity_id: follow_activity.id).id |> to_string() + +      conn = +        conn +        |> assign(:user, user) + +      conn_res = +        get(conn, "/api/v1/notifications", %{exclude_types: ["mention", "favourite", "reblog"]}) + +      assert [%{"id" => ^follow_notification_id}] = json_response(conn_res, 200) + +      conn_res = +        get(conn, "/api/v1/notifications", %{exclude_types: ["favourite", "reblog", "follow"]}) + +      assert [%{"id" => ^mention_notification_id}] = json_response(conn_res, 200) + +      conn_res = +        get(conn, "/api/v1/notifications", %{exclude_types: ["reblog", "follow", "mention"]}) + +      assert [%{"id" => ^favorite_notification_id}] = json_response(conn_res, 200) + +      conn_res = +        get(conn, "/api/v1/notifications", %{exclude_types: ["follow", "mention", "favourite"]}) + +      assert [%{"id" => ^reblog_notification_id}] = json_response(conn_res, 200) +    end    end    describe "reblogging" do | 
