summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlain <lain@soykaf.club>2021-01-06 12:33:09 +0100
committerlain <lain@soykaf.club>2021-01-06 12:33:09 +0100
commita24b2bc38a18ff25cf4d5f4f87a26fa6fee718eb (patch)
tree3ae7c59f0c3cb735f01ed3fdb6c8adf1029572dd
parent20a269ed694127ca59ece9c2e4865a627b4daad3 (diff)
Resilience Test: Add tests for killing likes.
-rw-r--r--test/pleroma/resilience_test.exs87
1 files changed, 87 insertions, 0 deletions
diff --git a/test/pleroma/resilience_test.exs b/test/pleroma/resilience_test.exs
new file mode 100644
index 000000000..26fa462de
--- /dev/null
+++ b/test/pleroma/resilience_test.exs
@@ -0,0 +1,87 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
+defmodule Pleroma.ResilienceTest do
+ use Pleroma.Web.ConnCase, async: true
+
+ import Pleroma.Factory
+
+ alias Pleroma.Activity
+ alias Pleroma.Web.CommonAPI
+ alias Pleroma.Repo
+ alias Pleroma.Web.MastodonAPI.StatusView
+
+ setup do
+ # user = insert(:user)
+ %{user: user, conn: conn} = oauth_access(["write:statuses"])
+ other_user = insert(:user)
+
+ {:ok, post_one} = CommonAPI.post(user, %{status: "Here is a post"})
+ {:ok, like} = CommonAPI.favorite(other_user, post_one.id)
+
+ %{
+ user: user,
+ other_user: other_user,
+ post_one: post_one,
+ like: like,
+ conn: conn
+ }
+ end
+
+ test "after destruction of like activities, things still work", %{
+ user: user,
+ post_one: post,
+ other_user: other_user,
+ conn: conn,
+ like: like
+ } do
+ post = Repo.get(Activity, post.id)
+
+ # Rendering the liked status
+ rendered_for_user = StatusView.render("show.json", %{activity: post, for: user})
+ assert rendered_for_user.favourites_count == 1
+
+ rendered_for_other_user = StatusView.render("show.json", %{activity: post, for: other_user})
+ assert rendered_for_other_user.favourites_count == 1
+ assert rendered_for_other_user.favourited
+
+ # Getting the favourited by
+ [liking_user] =
+ conn
+ |> get("/api/v1/statuses/#{post.id}/favourited_by")
+ |> json_response(200)
+
+ assert liking_user["id"] == other_user.id
+
+ # Destroying the like
+ Repo.delete(like)
+
+ # Rendering the liked status
+ rendered_for_user = StatusView.render("show.json", %{activity: post, for: user})
+ assert rendered_for_user.favourites_count == 1
+
+ rendered_for_other_user = StatusView.render("show.json", %{activity: post, for: other_user})
+ assert rendered_for_other_user.favourites_count == 1
+ assert rendered_for_other_user.favourited
+
+ # Getting the favourited by
+ [liking_user] =
+ conn
+ |> get("/api/v1/statuses/#{post.id}/favourited_by")
+ |> json_response(200)
+
+ assert liking_user["id"] == other_user.id
+
+ # Favoriting again doesn't hurt
+ {:ok, _like_two} = CommonAPI.favorite(other_user, post.id)
+
+ post = Repo.get(Activity, post.id)
+
+ # Rendering the liked status
+ rendered_for_user = StatusView.render("show.json", %{activity: post, for: user})
+ assert rendered_for_user.favourites_count == 1
+
+ # General fallout: Can't unfavorite stuff anymore. Acceptable for remote users.
+ end
+end