summaryrefslogtreecommitdiff
path: root/test/web
diff options
context:
space:
mode:
Diffstat (limited to 'test/web')
-rw-r--r--test/web/ostatus/activity_representer_test.exs21
-rw-r--r--test/web/ostatus/incoming_documents/delete_handling_test.exs28
-rw-r--r--test/web/ostatus/ostatus_test.exs11
-rw-r--r--test/web/twitter_api/twitter_api_controller_test.exs36
-rw-r--r--test/web/twitter_api/twitter_api_test.exs13
-rw-r--r--test/web/twitter_api/twitter_api_utils_test.exs2
-rw-r--r--test/web/twitter_api/views/user_view_test.exs2
7 files changed, 107 insertions, 6 deletions
diff --git a/test/web/ostatus/activity_representer_test.exs b/test/web/ostatus/activity_representer_test.exs
index b9fa4ccfb..0129e3758 100644
--- a/test/web/ostatus/activity_representer_test.exs
+++ b/test/web/ostatus/activity_representer_test.exs
@@ -4,9 +4,23 @@ defmodule Pleroma.Web.OStatus.ActivityRepresenterTest do
alias Pleroma.Web.OStatus.ActivityRepresenter
alias Pleroma.{User, Activity, Object}
alias Pleroma.Web.ActivityPub.ActivityPub
+ alias Pleroma.Web.OStatus
import Pleroma.Factory
+ test "an external note activity" do
+ incoming = File.read!("test/fixtures/mastodon-note-cw.xml")
+ {:ok, [activity]} = OStatus.handle_incoming(incoming)
+
+ user = User.get_cached_by_ap_id(activity.data["actor"])
+
+ tuple = ActivityRepresenter.to_simple_form(activity, user)
+
+ res = :xmerl.export_simple_content(tuple, :xmerl_xml) |> IO.iodata_to_binary
+
+ assert String.contains?(res, ~s{<link type="text/html" href="https://mastodon.social/users/lambadalambda/updates/2314748" rel="alternate"/>})
+ end
+
test "a note activity" do
note_activity = insert(:note_activity)
@@ -23,6 +37,7 @@ defmodule Pleroma.Web.OStatus.ActivityRepresenterTest do
<ostatus:conversation>#{note_activity.data["context"]}</ostatus:conversation>
<link ref="#{note_activity.data["context"]}" rel="ostatus:conversation" />
<link type="application/atom+xml" href="#{note_activity.data["object"]["id"]}" rel="self" />
+ <link type="text/html" href="#{note_activity.data["object"]["id"]}" rel="alternate" />
<category term="2hu"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
"""
@@ -43,6 +58,9 @@ defmodule Pleroma.Web.OStatus.ActivityRepresenterTest do
data = %{answer.data | "object" => object}
answer = %{answer | data: data}
+ note_object = Object.get_by_ap_id(note.data["object"]["id"])
+ Repo.update!(Object.change(note_object, %{ data: Map.put(note_object.data, "external_url", "someurl") }))
+
user = User.get_cached_by_ap_id(answer.data["actor"])
expected = """
@@ -56,8 +74,9 @@ defmodule Pleroma.Web.OStatus.ActivityRepresenterTest do
<ostatus:conversation>#{answer.data["context"]}</ostatus:conversation>
<link ref="#{answer.data["context"]}" rel="ostatus:conversation" />
<link type="application/atom+xml" href="#{answer.data["object"]["id"]}" rel="self" />
+ <link type="text/html" href="#{answer.data["object"]["id"]}" rel="alternate" />
<category term="2hu"/>
- <thr:in-reply-to ref="#{note.data["object"]["id"]}" />
+ <thr:in-reply-to ref="#{note.data["object"]["id"]}" href="someurl" />
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
"""
diff --git a/test/web/ostatus/incoming_documents/delete_handling_test.exs b/test/web/ostatus/incoming_documents/delete_handling_test.exs
new file mode 100644
index 000000000..989c87afa
--- /dev/null
+++ b/test/web/ostatus/incoming_documents/delete_handling_test.exs
@@ -0,0 +1,28 @@
+defmodule Pleroma.Web.OStatus.DeleteHandlingTest do
+ use Pleroma.DataCase
+
+ import Pleroma.Factory
+ alias Pleroma.{Repo, Activity, Object}
+ alias Pleroma.Web.OStatus
+
+ describe "deletions" do
+ test "it removes the mentioned activity" do
+ note = insert(:note_activity)
+ second_note = insert(:note_activity)
+ user = insert(:user)
+ object = Object.get_by_ap_id(note.data["object"]["id"])
+
+ {:ok, like, object} = Pleroma.Web.ActivityPub.ActivityPub.like(user, object)
+
+ incoming = File.read!("test/fixtures/delete.xml")
+ |> String.replace("tag:mastodon.sdf.org,2017-06-10:objectId=310513:objectType=Status", note.data["object"]["id"])
+ {:ok, []} = OStatus.handle_incoming(incoming)
+
+ refute Repo.get(Activity, note.id)
+ refute Repo.get(Activity, like.id)
+ refute Object.get_by_ap_id(note.data["object"]["id"])
+ assert Repo.get(Activity, second_note.id)
+ assert Object.get_by_ap_id(second_note.data["object"]["id"])
+ end
+ end
+end
diff --git a/test/web/ostatus/ostatus_test.exs b/test/web/ostatus/ostatus_test.exs
index 34bfaa005..44d687d8e 100644
--- a/test/web/ostatus/ostatus_test.exs
+++ b/test/web/ostatus/ostatus_test.exs
@@ -15,6 +15,8 @@ defmodule Pleroma.Web.OStatusTest do
incoming = File.read!("test/fixtures/incoming_note_activity.xml")
{:ok, [activity]} = OStatus.handle_incoming(incoming)
+ user = User.get_by_ap_id(activity.data["actor"])
+ assert user.info["note_count"] == 1
assert activity.data["type"] == "Create"
assert activity.data["object"]["type"] == "Note"
assert activity.data["object"]["id"] == "tag:gs.example.org:4040,2017-04-23:noticeId=29:objectType=note"
@@ -324,11 +326,18 @@ defmodule Pleroma.Web.OStatusTest do
describe "fetching a status by it's HTML url" do
test "it builds a missing status from an html url" do
url = "https://shitposter.club/notice/2827873"
- {:ok, [activity] } = OStatus.fetch_activity_from_html_url(url)
+ {:ok, [activity] } = OStatus.fetch_activity_from_url(url)
assert activity.data["actor"] == "https://shitposter.club/user/1"
assert activity.data["object"]["id"] == "tag:shitposter.club,2017-05-05:noticeId=2827873:objectType=comment"
end
+
+ test "it works for atom notes, too" do
+ url = "https://social.sakamoto.gq/objects/0ccc1a2c-66b0-4305-b23a-7f7f2b040056"
+ {:ok, [activity] } = OStatus.fetch_activity_from_url(url)
+ assert activity.data["actor"] == "https://social.sakamoto.gq/users/eal"
+ assert activity.data["object"]["id"] == url
+ end
end
test "insert or update a user from given data" do
diff --git a/test/web/twitter_api/twitter_api_controller_test.exs b/test/web/twitter_api/twitter_api_controller_test.exs
index 0281ea55b..8c689d7d3 100644
--- a/test/web/twitter_api/twitter_api_controller_test.exs
+++ b/test/web/twitter_api/twitter_api_controller_test.exs
@@ -419,6 +419,42 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do
end
end
+ describe "GET /api/statuses/followers" do
+ test "it returns a user's followers", %{conn: conn} do
+ user = insert(:user)
+ follower_one = insert(:user)
+ follower_two = insert(:user)
+ not_follower = insert(:user)
+
+ {:ok, follower_one} = User.follow(follower_one, user)
+ {:ok, follower_two} = User.follow(follower_two, user)
+
+ conn = conn
+ |> assign(:user, user)
+ |> get("/api/statuses/followers")
+
+ assert json_response(conn, 200) == UserView.render("index.json", %{users: [follower_one, follower_two], for: user})
+ end
+ end
+
+ describe "GET /api/statuses/friends" do
+ test "it returns a user's friends", %{conn: conn} do
+ user = insert(:user)
+ followed_one = insert(:user)
+ followed_two = insert(:user)
+ not_followed = insert(:user)
+
+ {:ok, user} = User.follow(user, followed_one)
+ {:ok, user} = User.follow(user, followed_two)
+
+ conn = conn
+ |> assign(:user, user)
+ |> get("/api/statuses/friends")
+
+ assert json_response(conn, 200) == UserView.render("index.json", %{users: [followed_one, followed_two], for: user})
+ end
+ end
+
defp valid_user(_context) do
user = insert(:user)
[user: user]
diff --git a/test/web/twitter_api/twitter_api_test.exs b/test/web/twitter_api/twitter_api_test.exs
index 080e5f86a..bbb261eff 100644
--- a/test/web/twitter_api/twitter_api_test.exs
+++ b/test/web/twitter_api/twitter_api_test.exs
@@ -9,7 +9,7 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPITest do
import Pleroma.Factory
test "create a status" do
- user = UserBuilder.build(%{ap_id: "142344"})
+ user = insert(:user)
_mentioned_user = UserBuilder.insert(%{nickname: "shp", ap_id: "shp"})
object_data = %{
@@ -52,10 +52,14 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPITest do
assert is_list(activity.data["object"]["attachment"])
assert activity.data["object"] == Object.get_by_ap_id(activity.data["object"]["id"]).data
+
+ user = User.get_by_ap_id(user.ap_id)
+
+ assert user.info["note_count"] == 1
end
test "create a status that is a reply" do
- user = UserBuilder.build(%{ap_id: "some_cool_id"})
+ user = insert(:user)
input = %{
"status" => "Hello again."
}
@@ -73,7 +77,7 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPITest do
assert get_in(reply.data, ["object", "context"]) == get_in(activity.data, ["object", "context"])
assert get_in(reply.data, ["object", "inReplyTo"]) == get_in(activity.data, ["object", "id"])
assert get_in(reply.data, ["object", "inReplyToStatusId"]) == activity.id
- assert Enum.member?(get_in(reply.data, ["to"]), "some_cool_id")
+ assert Enum.member?(get_in(reply.data, ["to"]), user.ap_id)
end
test "fetch public statuses, excluding remote ones." do
@@ -187,6 +191,9 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPITest do
{:ok, user, followed, _activity } = TwitterAPI.follow(user, %{"screen_name" => followed.nickname})
assert user.following == [User.ap_followers(followed)]
+ followed = User.get_by_ap_id(followed.ap_id)
+ assert followed.info["follower_count"] == 1
+
{ :error, msg } = TwitterAPI.follow(user, %{"screen_name" => followed.nickname})
assert msg == "Could not follow user: #{followed.nickname} is already on your list."
end
diff --git a/test/web/twitter_api/twitter_api_utils_test.exs b/test/web/twitter_api/twitter_api_utils_test.exs
index 62aa7843b..49818afed 100644
--- a/test/web/twitter_api/twitter_api_utils_test.exs
+++ b/test/web/twitter_api/twitter_api_utils_test.exs
@@ -9,6 +9,6 @@ defmodule Pleroma.Web.TwitterAPI.UtilsTest do
res = Utils.add_attachments("", [attachment])
- assert res == "<br>\n<a href=\"http://heise.de/i%22m%20a%20boy.png\" class='attachment'>i\"m a boy.png</a>"
+ assert res == "<br>\n<a href=\"http://heise.de/i\"m a boy.png\" class='attachment'>i\"m a boy.png</a>"
end
end
diff --git a/test/web/twitter_api/views/user_view_test.exs b/test/web/twitter_api/views/user_view_test.exs
index de2cd3d30..b81d3d64d 100644
--- a/test/web/twitter_api/views/user_view_test.exs
+++ b/test/web/twitter_api/views/user_view_test.exs
@@ -22,6 +22,7 @@ defmodule Pleroma.Web.TwitterAPI.UserViewTest do
test "A user" do
note_activity = insert(:note_activity)
user = User.get_cached_by_ap_id(note_activity.data["actor"])
+ {:ok, user} = User.update_note_count(user)
follower = insert(:user)
second_follower = insert(:user)
@@ -57,6 +58,7 @@ defmodule Pleroma.Web.TwitterAPI.UserViewTest do
test "A user for a given other follower", %{user: user} do
{:ok, follower} = UserBuilder.insert(%{following: [User.ap_followers(user)]})
+ {:ok, user} = User.update_follower_count(user)
image = "https://placehold.it/48x48"
represented = %{
"id" => user.id,