diff options
| author | lambda <pleromagit@rogerbraun.net> | 2018-04-19 19:03:35 +0000 | 
|---|---|---|
| committer | lambda <pleromagit@rogerbraun.net> | 2018-04-19 19:03:35 +0000 | 
| commit | 3f7b02e7c4570681f965827888cba65b2a319f03 (patch) | |
| tree | a5cb8585deccf6fd570dae0bdd6a0d52866ea88c /test | |
| parent | 678fed47ee0b7e458d3324bea0c1171322d29b5f (diff) | |
| parent | fa37acfcc75d069aaaea0b00e619f716e5d6a19a (diff) | |
| download | pleroma-3f7b02e7c4570681f965827888cba65b2a319f03.tar.gz pleroma-3f7b02e7c4570681f965827888cba65b2a319f03.zip  | |
Merge branch 'feature/qvitter-notification-endpoint' into 'develop'
TwitterAPI: Add Qvitter notification endpoint.
Closes #142
See merge request pleroma/pleroma!123
Diffstat (limited to 'test')
| -rw-r--r-- | test/web/twitter_api/twitter_api_controller_test.exs | 32 | ||||
| -rw-r--r-- | test/web/twitter_api/views/notification_view_test.exs | 100 | 
2 files changed, 131 insertions, 1 deletions
diff --git a/test/web/twitter_api/twitter_api_controller_test.exs b/test/web/twitter_api/twitter_api_controller_test.exs index 6084381cb..18a3243f5 100644 --- a/test/web/twitter_api/twitter_api_controller_test.exs +++ b/test/web/twitter_api/twitter_api_controller_test.exs @@ -2,9 +2,10 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do    use Pleroma.Web.ConnCase    alias Pleroma.Web.TwitterAPI.Representers.ActivityRepresenter    alias Pleroma.Builders.{ActivityBuilder, UserBuilder} -  alias Pleroma.{Repo, Activity, User, Object} +  alias Pleroma.{Repo, Activity, User, Object, Notification}    alias Pleroma.Web.ActivityPub.ActivityPub    alias Pleroma.Web.TwitterAPI.UserView +  alias Pleroma.Web.TwitterAPI.NotificationView    alias Pleroma.Web.CommonAPI    alias Pleroma.Web.TwitterAPI.TwitterAPI @@ -247,6 +248,35 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do      end    end +  describe "GET /api/qvitter/statuses/notifications.json" do +    setup [:valid_user] + +    test "without valid credentials", %{conn: conn} do +      conn = get(conn, "/api/qvitter/statuses/notifications.json") +      assert json_response(conn, 403) == %{"error" => "Invalid credentials."} +    end + +    test "with credentials", %{conn: conn, user: current_user} do +      {:ok, activity} = +        ActivityBuilder.insert(%{"to" => [current_user.ap_id]}, %{user: current_user}) + +      conn = +        conn +        |> with_credentials(current_user.nickname, "test") +        |> get("/api/qvitter/statuses/notifications.json") + +      response = json_response(conn, 200) + +      assert length(response) == 1 + +      assert response == +        NotificationView.render( +          "notification.json", +          %{notifications: Notification.for_user(current_user), for: current_user} +        ) +    end +  end +    describe "GET /statuses/user_timeline.json" do      setup [:valid_user] diff --git a/test/web/twitter_api/views/notification_view_test.exs b/test/web/twitter_api/views/notification_view_test.exs new file mode 100644 index 000000000..33aaa89e1 --- /dev/null +++ b/test/web/twitter_api/views/notification_view_test.exs @@ -0,0 +1,100 @@ +defmodule Pleroma.Web.TwitterAPI.NotificationViewTest do +  use Pleroma.DataCase + +  alias Pleroma.{User, Notification} +  alias Pleroma.Web.TwitterAPI.TwitterAPI +  alias Pleroma.Web.TwitterAPI.NotificationView +  alias Pleroma.Web.TwitterAPI.UserView +  alias Pleroma.Web.TwitterAPI.ActivityView +  alias Pleroma.Web.CommonAPI.Utils +  alias Pleroma.Web.ActivityPub.ActivityPub +  alias Pleroma.Builders.UserBuilder + +  import Pleroma.Factory + +  setup do +    user = insert(:user, bio: "<span>Here's some html</span>") +    [user: user] +  end + +  test "A follow notification" do +    note_activity = insert(:note_activity) +    user = User.get_cached_by_ap_id(note_activity.data["actor"]) +    follower = insert(:user) + +    {:ok, follower} = User.follow(follower, user) +    {:ok, activity} = ActivityPub.follow(follower, user) +    Cachex.set(:user_cache, "user_info:#{user.id}", User.user_info(Repo.get!(User, user.id))) +    [follow_notif] = Notification.for_user(user) + +    represented = %{ +      "created_at" => follow_notif.inserted_at |> Utils.format_naive_asctime(), +      "from_profile" => UserView.render("show.json", %{user: follower, for: user}), +      "id" => follow_notif.id, +      "is_seen" => 0, +      "notice" => ActivityView.render("activity.json", %{activity: activity, for: user}), +      "ntype" => "follow" +    } + +    assert represented == NotificationView.render("notification.json", %{notification: follow_notif, for: user}) +  end + +  test "A mention notification" do +    user = insert(:user) +    other_user = insert(:user) + +    {:ok, activity} = TwitterAPI.create_status(other_user, %{"status" => "Päivää, @#{user.nickname}"}) +    [notification] = Notification.for_user(user) + +    represented = %{ +      "created_at" => notification.inserted_at |> Utils.format_naive_asctime(), +      "from_profile" => UserView.render("show.json", %{user: other_user, for: user}), +      "id" => notification.id, +      "is_seen" => 0, +      "notice" => ActivityView.render("activity.json", %{activity: activity, for: user}), +      "ntype" => "mention" +    } + +    assert represented == NotificationView.render("notification.json", %{notification: notification, for: user}) +  end + +  test "A retweet notification" do +    note_activity = insert(:note_activity) +    user = User.get_cached_by_ap_id(note_activity.data["actor"]) +    repeater = insert(:user) + +    {:ok, activity} = TwitterAPI.repeat(repeater, note_activity.id) +    [notification] = Notification.for_user(user) + +    represented = %{ +      "created_at" => notification.inserted_at |> Utils.format_naive_asctime(), +      "from_profile" => UserView.render("show.json", %{user: repeater, for: user}), +      "id" => notification.id, +      "is_seen" => 0, +      "notice" => ActivityView.render("activity.json", %{activity: notification.activity, for: user}), +      "ntype" => "repeat" +    } + +    assert represented == NotificationView.render("notification.json", %{notification: notification, for: user}) +  end + +  test "A like notification" do +    note_activity = insert(:note_activity) +    user = User.get_cached_by_ap_id(note_activity.data["actor"]) +    liker = insert(:user) + +    {:ok, activity} = TwitterAPI.fav(liker, note_activity.id) +    [notification] = Notification.for_user(user) + +    represented = %{ +      "created_at" => notification.inserted_at |> Utils.format_naive_asctime(), +      "from_profile" => UserView.render("show.json", %{user: liker, for: user}), +      "id" => notification.id, +      "is_seen" => 0, +      "notice" => ActivityView.render("activity.json", %{activity: notification.activity, for: user}), +      "ntype" => "like" +    } + +    assert represented == NotificationView.render("notification.json", %{notification: notification, for: user}) +  end +end  | 
