logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma git clone https://hacktivis.me/git/pleroma.git

mastodon_api_test.exs (3540B)


  1. # Pleroma: A lightweight social networking server
  2. # Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
  3. # SPDX-License-Identifier: AGPL-3.0-only
  4. defmodule Pleroma.Web.MastodonAPI.MastodonAPITest do
  5. use Pleroma.Web.ConnCase, async: true
  6. alias Pleroma.Notification
  7. alias Pleroma.ScheduledActivity
  8. alias Pleroma.UnstubbedConfigMock, as: ConfigMock
  9. alias Pleroma.User
  10. alias Pleroma.Web.CommonAPI
  11. alias Pleroma.Web.MastodonAPI.MastodonAPI
  12. import Pleroma.Factory
  13. import Mox
  14. describe "follow/3" do
  15. test "returns error when followed user is deactivated" do
  16. follower = insert(:user)
  17. user = insert(:user, local: true, is_active: false)
  18. assert {:error, _error} = MastodonAPI.follow(follower, user)
  19. end
  20. test "following for user" do
  21. follower = insert(:user)
  22. user = insert(:user)
  23. {:ok, follower} = MastodonAPI.follow(follower, user)
  24. assert User.following?(follower, user)
  25. end
  26. test "returns ok if user already followed" do
  27. follower = insert(:user)
  28. user = insert(:user)
  29. {:ok, follower, user} = User.follow(follower, user)
  30. {:ok, follower} = MastodonAPI.follow(follower, refresh_record(user))
  31. assert User.following?(follower, user)
  32. end
  33. end
  34. describe "get_followers/2" do
  35. test "returns user followers" do
  36. follower1_user = insert(:user)
  37. follower2_user = insert(:user)
  38. user = insert(:user)
  39. {:ok, _follower1_user, _user} = User.follow(follower1_user, user)
  40. {:ok, follower2_user, _user} = User.follow(follower2_user, user)
  41. assert MastodonAPI.get_followers(user, %{"limit" => 1}) == [follower2_user]
  42. end
  43. end
  44. describe "get_friends/2" do
  45. test "returns user friends" do
  46. user = insert(:user)
  47. followed_one = insert(:user)
  48. followed_two = insert(:user)
  49. followed_three = insert(:user)
  50. {:ok, user, followed_one} = User.follow(user, followed_one)
  51. {:ok, user, followed_two} = User.follow(user, followed_two)
  52. {:ok, user, followed_three} = User.follow(user, followed_three)
  53. res = MastodonAPI.get_friends(user)
  54. assert length(res) == 3
  55. assert Enum.member?(res, refresh_record(followed_three))
  56. assert Enum.member?(res, refresh_record(followed_two))
  57. assert Enum.member?(res, refresh_record(followed_one))
  58. end
  59. end
  60. describe "get_notifications/2" do
  61. test "returns notifications for user" do
  62. user = insert(:user)
  63. subscriber = insert(:user)
  64. User.subscribe(subscriber, user)
  65. {:ok, status} = CommonAPI.post(user, %{status: "Akariiiin"})
  66. {:ok, status1} = CommonAPI.post(user, %{status: "Magi"})
  67. {:ok, [notification]} = Notification.create_notifications(status)
  68. {:ok, [notification1]} = Notification.create_notifications(status1)
  69. res = MastodonAPI.get_notifications(subscriber)
  70. assert Enum.member?(Enum.map(res, & &1.id), notification.id)
  71. assert Enum.member?(Enum.map(res, & &1.id), notification1.id)
  72. end
  73. end
  74. describe "get_scheduled_activities/2" do
  75. test "returns user scheduled activities" do
  76. ConfigMock
  77. |> stub_with(Pleroma.Test.StaticConfig)
  78. user = insert(:user)
  79. today =
  80. NaiveDateTime.utc_now()
  81. |> NaiveDateTime.add(:timer.minutes(6), :millisecond)
  82. |> NaiveDateTime.to_iso8601()
  83. attrs = %{params: %{}, scheduled_at: today}
  84. {:ok, schedule} = ScheduledActivity.create(user, attrs)
  85. assert MastodonAPI.get_scheduled_activities(user) == [schedule]
  86. end
  87. end
  88. end