aboutsummaryrefslogtreecommitdiff
path: root/test/web/twitter_api/twitter_api_test.exs
diff options
context:
space:
mode:
authordtluna <dtluna@openmailbox.org>2017-04-16 13:25:38 +0300
committerdtluna <dtluna@openmailbox.org>2017-04-16 13:25:38 +0300
commitce1eef9c989f0387168b48f6f61a4c1f84b3f5b5 (patch)
tree4eaec774a57163ed109a4b8bb11c467dc27ed3c6 /test/web/twitter_api/twitter_api_test.exs
parent84c20128100ad5b074720c44a24375b809a0ce09 (diff)
parentb179b3413e7dbdafbe8a3839ba7719b9eb2a582d (diff)
downloadpleroma-ce1eef9c989f0387168b48f6f61a4c1f84b3f5b5.tar.gz
Merge branch 'develop' of ssh.gitgud.io:lambadalambda/pleroma into feature/help-test
Diffstat (limited to 'test/web/twitter_api/twitter_api_test.exs')
-rw-r--r--test/web/twitter_api/twitter_api_test.exs86
1 files changed, 83 insertions, 3 deletions
diff --git a/test/web/twitter_api/twitter_api_test.exs b/test/web/twitter_api/twitter_api_test.exs
index e8853a910..b8bfb4cf9 100644
--- a/test/web/twitter_api/twitter_api_test.exs
+++ b/test/web/twitter_api/twitter_api_test.exs
@@ -3,7 +3,10 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPITest do
alias Pleroma.Builders.{UserBuilder, ActivityBuilder}
alias Pleroma.Web.TwitterAPI.TwitterAPI
alias Pleroma.{Activity, User, Object, Repo}
- alias Pleroma.Web.TwitterAPI.Representers.ActivityRepresenter
+ alias Pleroma.Web.TwitterAPI.Representers.{ActivityRepresenter, UserRepresenter}
+ alias Pleroma.Web.ActivityPub.ActivityPub
+
+ import Pleroma.Factory
test "create a status" do
user = UserBuilder.build(%{ap_id: "142344"})
@@ -24,14 +27,15 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPITest do
object = Repo.insert!(%Object{data: object_data})
input = %{
- "status" => "Hello again, @shp.<script></script>",
+ "status" => "Hello again, @shp.<script></script>\nThis is on another line.",
"media_ids" => [object.id]
}
{ :ok, activity = %Activity{} } = TwitterAPI.create_status(user, input)
- assert get_in(activity.data, ["object", "content"]) == "Hello again, <a href='shp'>@shp</a>."
+ assert get_in(activity.data, ["object", "content"]) == "Hello again, <a href='shp'>@shp</a>.<br>This is on another line."
assert get_in(activity.data, ["object", "type"]) == "Note"
+ assert get_in(activity.data, ["object", "actor"]) == user.ap_id
assert get_in(activity.data, ["actor"]) == user.ap_id
assert Enum.member?(get_in(activity.data, ["to"]), User.ap_followers(user))
assert Enum.member?(get_in(activity.data, ["to"]), "https://www.w3.org/ns/activitystreams#Public")
@@ -44,6 +48,8 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPITest do
assert get_in(activity.data, ["statusnetConversationId"]) == activity.id
assert is_list(activity.data["object"]["attachment"])
+
+ assert activity.data["object"] == Object.get_by_ap_id(activity.data["object"]["id"]).data
end
test "create a status that is a reply" do
@@ -176,4 +182,78 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPITest do
assert TwitterAPI.add_user_links(text, mentions) == expected_text
end
+
+ test "it favorites a status, returns the updated status" do
+ user = insert(:user)
+ note_activity = insert(:note_activity)
+ activity_user = Repo.get_by!(User, ap_id: note_activity.data["actor"])
+
+ {:ok, status} = TwitterAPI.favorite(user, note_activity)
+ updated_activity = Activity.get_by_ap_id(note_activity.data["id"])
+
+ assert status == ActivityRepresenter.to_map(updated_activity, %{user: activity_user, for: user})
+ end
+
+ test "it unfavorites a status, returns the updated status" do
+ user = insert(:user)
+ note_activity = insert(:note_activity)
+ activity_user = Repo.get_by!(User, ap_id: note_activity.data["actor"])
+ object = Object.get_by_ap_id(note_activity.data["object"]["id"])
+
+ {:ok, _like_activity, _object } = ActivityPub.like(user, object)
+ updated_activity = Activity.get_by_ap_id(note_activity.data["id"])
+ assert ActivityRepresenter.to_map(updated_activity, %{user: activity_user, for: user})["fave_num"] == 1
+
+ {:ok, status} = TwitterAPI.unfavorite(user, note_activity)
+
+ assert status["fave_num"] == 0
+ end
+
+ test "it retweets a status and returns the retweet" do
+ user = insert(:user)
+ note_activity = insert(:note_activity)
+ activity_user = Repo.get_by!(User, ap_id: note_activity.data["actor"])
+
+ {:ok, status} = TwitterAPI.retweet(user, note_activity)
+ updated_activity = Activity.get_by_ap_id(note_activity.data["id"])
+
+ assert status == ActivityRepresenter.to_map(updated_activity, %{user: activity_user, for: user})
+ end
+
+ test "it registers a new user and returns the user." do
+ data = %{
+ "nickname" => "lain",
+ "email" => "lain@wired.jp",
+ "fullname" => "lain iwakura",
+ "bio" => "close the world.",
+ "password" => "bear",
+ "confirm" => "bear"
+ }
+
+ {:ok, user} = TwitterAPI.register_user(data)
+
+ fetched_user = Repo.get_by(User, nickname: "lain")
+ assert user == UserRepresenter.to_map(fetched_user)
+ end
+
+ test "it returns the error on registration problems" do
+ data = %{
+ "nickname" => "lain",
+ "email" => "lain@wired.jp",
+ "fullname" => "lain iwakura",
+ "bio" => "close the world.",
+ "password" => "bear"
+ }
+
+ {:error, error_object} = TwitterAPI.register_user(data)
+
+ assert is_binary(error_object[:error])
+ refute Repo.get_by(User, nickname: "lain")
+ end
+
+ setup do
+ Supervisor.terminate_child(Pleroma.Supervisor, ConCache)
+ Supervisor.restart_child(Pleroma.Supervisor, ConCache)
+ :ok
+ end
end