diff options
| author | Roger Braun <roger@rogerbraun.net> | 2017-11-12 14:23:39 +0100 | 
|---|---|---|
| committer | Roger Braun <roger@rogerbraun.net> | 2017-11-12 14:25:15 +0100 | 
| commit | 5fc6e9d467f69af155627cccaa27616fe7ffc61f (patch) | |
| tree | f9f5cf0d8c93d22eeb232fb3579d84d1c732ef71 /test | |
| parent | d293ceb1b535ab749fa841e18c1fa2ee63972afb (diff) | |
| parent | 08bc31674218cd7ce634b008b7766b48e49c52e3 (diff) | |
| download | pleroma-5fc6e9d467f69af155627cccaa27616fe7ffc61f.tar.gz pleroma-5fc6e9d467f69af155627cccaa27616fe7ffc61f.zip | |
Merge branch 'develop' of git.pleroma.social:pleroma/pleroma into develop
Diffstat (limited to 'test')
| -rw-r--r-- | test/notification_test.exs | 61 | ||||
| -rw-r--r-- | test/web/mastodon_api/mastodon_api_controller_test.exs | 121 | 
2 files changed, 181 insertions, 1 deletions
| diff --git a/test/notification_test.exs b/test/notification_test.exs index 77fdb532f..eee1c9fa3 100644 --- a/test/notification_test.exs +++ b/test/notification_test.exs @@ -31,4 +31,65 @@ defmodule Pleroma.NotificationTest do        assert nil == Notification.create_notification(activity, user)      end    end + +  describe "get notification" do +    test "it gets a notification that belongs to the user" do +      user = insert(:user) +      other_user = insert(:user) + +      {:ok, activity} = TwitterAPI.create_status(user, %{"status" => "hey @#{other_user.nickname}"}) +      {:ok, [notification]} = Notification.create_notifications(activity) +      {:ok, notification} = Notification.get(other_user, notification.id) + +      assert notification.user_id == other_user.id +    end + +    test "it returns error if the notification doesn't belong to the user" do +      user = insert(:user) +      other_user = insert(:user) + +      {:ok, activity} = TwitterAPI.create_status(user, %{"status" => "hey @#{other_user.nickname}"}) +      {:ok, [notification]} = Notification.create_notifications(activity) +      {:error, notification} = Notification.get(user, notification.id) +    end +  end + +  describe "dismiss notification" do +    test "it dismisses a notification that belongs to the user" do +      user = insert(:user) +      other_user = insert(:user) + +      {:ok, activity} = TwitterAPI.create_status(user, %{"status" => "hey @#{other_user.nickname}"}) +      {:ok, [notification]} = Notification.create_notifications(activity) +      {:ok, notification} = Notification.dismiss(other_user, notification.id) + +      assert notification.user_id == other_user.id +    end + +    test "it returns error if the notification doesn't belong to the user" do +      user = insert(:user) +      other_user = insert(:user) + +      {:ok, activity} = TwitterAPI.create_status(user, %{"status" => "hey @#{other_user.nickname}"}) +      {:ok, [notification]} = Notification.create_notifications(activity) +      {:error, notification} = Notification.dismiss(user, notification.id) +    end +  end + +  describe "clear notification" do +    test "it clears all notifications belonging to the user" do +      user = insert(:user) +      other_user = insert(:user) +      third_user = insert(:user) + +      {:ok, activity} = TwitterAPI.create_status(user, %{"status" => "hey @#{other_user.nickname} and @#{third_user.nickname} !"}) +      {:ok, _notifs} = Notification.create_notifications(activity) +      {:ok, activity} = TwitterAPI.create_status(user, %{"status" => "hey again @#{other_user.nickname} and @#{third_user.nickname} !"}) +      {:ok, _notifs} = Notification.create_notifications(activity) +      Notification.clear(other_user) + +      assert Notification.for_user(other_user) == [] +      assert Notification.for_user(third_user) != [] +    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 47a613837..f506d56a1 100644 --- a/test/web/mastodon_api/mastodon_api_controller_test.exs +++ b/test/web/mastodon_api/mastodon_api_controller_test.exs @@ -2,7 +2,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do    use Pleroma.Web.ConnCase    alias Pleroma.Web.TwitterAPI.TwitterAPI -  alias Pleroma.{Repo, User, Activity} +  alias Pleroma.{Repo, User, Activity, Notification}    alias Pleroma.Web.{OStatus, CommonAPI}    import Pleroma.Factory @@ -122,6 +122,75 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do      end    end +  describe "notifications" do +    test "list of notifications", %{conn: conn} do +      user = insert(:user) +      other_user = insert(:user) + +      {:ok, activity} = TwitterAPI.create_status(other_user, %{"status" => "hi @#{user.nickname}"}) +      {:ok, [notification]} = Notification.create_notifications(activity) + +      conn = conn +      |> assign(:user, user) +      |> get("/api/v1/notifications") + +      expected_response = "hi <a href=\"#{user.ap_id}\">@#{user.nickname}</a>" +      assert [%{"status" => %{"content" => response}} | _rest] = json_response(conn, 200) +      assert response == expected_response +    end + +    test "getting a single notification", %{conn: conn} do +      user = insert(:user) +      other_user = insert(:user) + +      {:ok, activity} = TwitterAPI.create_status(other_user, %{"status" => "hi @#{user.nickname}"}) +      {:ok, [notification]} = Notification.create_notifications(activity) + +      conn = conn +      |> assign(:user, user) +      |> get("/api/v1/notifications/#{notification.id}") + +      expected_response = "hi <a href=\"#{user.ap_id}\">@#{user.nickname}</a>" +      assert %{"status" => %{"content" => response}} = json_response(conn, 200) +      assert response == expected_response +    end + +    test "dismissing a single notification", %{conn: conn} do +      user = insert(:user) +      other_user = insert(:user) + +      {:ok, activity} = TwitterAPI.create_status(other_user, %{"status" => "hi @#{user.nickname}"}) +      {:ok, [notification]} = Notification.create_notifications(activity) + +      conn = conn +      |> assign(:user, user) +      |> post("/api/v1/notifications/dismiss", %{"id" => notification.id}) + +      assert %{} = json_response(conn, 200) +    end + +    test "clearing all notifications", %{conn: conn} do +      user = insert(:user) +      other_user = insert(:user) + +      {:ok, activity} = TwitterAPI.create_status(other_user, %{"status" => "hi @#{user.nickname}"}) +      {:ok, [notification]} = Notification.create_notifications(activity) + +      conn = conn +      |> assign(:user, user) +      |> post("/api/v1/notifications/clear") + +      assert %{} = json_response(conn, 200) + +      conn = build_conn() +      |> assign(:user, user) +      |> get("/api/v1/notifications") + +      assert all = json_response(conn, 200) +      assert all == [] +    end +  end +    describe "reblogging" do      test "reblogs and returns the reblogged status", %{conn: conn} do        activity = insert(:note_activity) @@ -420,4 +489,54 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do      assert [status] = json_response(conn, 200)      assert status["id"] == to_string(activity.id)    end + +  describe "updating credentials" do +    test "updates the user's bio" do +      user = insert(:user) + +      conn = conn +      |> assign(:user, user) +      |> patch("/api/v1/accounts/update_credentials", %{"note" => "I drink #cofe"}) + +      assert user = json_response(conn, 200) +      assert user["note"] == "I drink #cofe" +    end + +    test "updates the user's name" do +      user = insert(:user) + +      conn = conn +      |> assign(:user, user) +      |> patch("/api/v1/accounts/update_credentials", %{"display_name" => "markorepairs"}) + +      assert user = json_response(conn, 200) +      assert user["display_name"] == "markorepairs" +    end + +    test "updates the user's avatar" do +      user = insert(:user) + +      new_avatar = %Plug.Upload{content_type: "image/jpg", path: Path.absname("test/fixtures/image.jpg"), filename: "an_image.jpg"} + +      conn = conn +      |> assign(:user, user) +      |> patch("/api/v1/accounts/update_credentials", %{"avatar" => new_avatar}) + +      assert user = json_response(conn, 200) +      assert user["avatar"] != "https://placehold.it/48x48" +    end + +    test "updates the user's banner" do +      user = insert(:user) + +      new_header = %Plug.Upload{content_type: "image/jpg", path: Path.absname("test/fixtures/image.jpg"), filename: "an_image.jpg"} + +      conn = conn +      |> assign(:user, user) +      |> patch("/api/v1/accounts/update_credentials", %{"header" => new_header}) + +      assert user = json_response(conn, 200) +      assert user["header"] != "https://placehold.it/700x335" +    end +  end  end | 
