Merge branch 'develop' into feature/addressable-lists
This commit is contained in:
commit
182f7bbb11
826 changed files with 14251 additions and 3303 deletions
|
|
@ -6,6 +6,7 @@ defmodule Pleroma.ActivityTest do
|
|||
use Pleroma.DataCase
|
||||
alias Pleroma.Activity
|
||||
alias Pleroma.Bookmark
|
||||
alias Pleroma.Object
|
||||
alias Pleroma.ThreadMute
|
||||
import Pleroma.Factory
|
||||
|
||||
|
|
@ -18,15 +19,18 @@ defmodule Pleroma.ActivityTest do
|
|||
|
||||
test "returns activities by it's objects AP ids" do
|
||||
activity = insert(:note_activity)
|
||||
[found_activity] = Activity.get_all_create_by_object_ap_id(activity.data["object"]["id"])
|
||||
object_data = Object.normalize(activity).data
|
||||
|
||||
[found_activity] = Activity.get_all_create_by_object_ap_id(object_data["id"])
|
||||
|
||||
assert activity == found_activity
|
||||
end
|
||||
|
||||
test "returns the activity that created an object" do
|
||||
activity = insert(:note_activity)
|
||||
object_data = Object.normalize(activity).data
|
||||
|
||||
found_activity = Activity.get_create_by_object_ap_id(activity.data["object"]["id"])
|
||||
found_activity = Activity.get_create_by_object_ap_id(object_data["id"])
|
||||
|
||||
assert activity == found_activity
|
||||
end
|
||||
|
|
@ -99,4 +103,65 @@ defmodule Pleroma.ActivityTest do
|
|||
assert Activity.get_bookmark(queried_activity, user) == bookmark
|
||||
end
|
||||
end
|
||||
|
||||
describe "search" do
|
||||
setup do
|
||||
Tesla.Mock.mock_global(fn env -> apply(HttpRequestMock, :request, [env]) end)
|
||||
|
||||
user = insert(:user)
|
||||
|
||||
params = %{
|
||||
"@context" => "https://www.w3.org/ns/activitystreams",
|
||||
"actor" => "http://mastodon.example.org/users/admin",
|
||||
"type" => "Create",
|
||||
"id" => "http://mastodon.example.org/users/admin/activities/1",
|
||||
"object" => %{
|
||||
"type" => "Note",
|
||||
"content" => "find me!",
|
||||
"id" => "http://mastodon.example.org/users/admin/objects/1",
|
||||
"attributedTo" => "http://mastodon.example.org/users/admin"
|
||||
},
|
||||
"to" => ["https://www.w3.org/ns/activitystreams#Public"]
|
||||
}
|
||||
|
||||
{:ok, local_activity} = Pleroma.Web.CommonAPI.post(user, %{"status" => "find me!"})
|
||||
{:ok, remote_activity} = Pleroma.Web.Federator.incoming_ap_doc(params)
|
||||
%{local_activity: local_activity, remote_activity: remote_activity, user: user}
|
||||
end
|
||||
|
||||
test "find local and remote statuses for authenticated users", %{
|
||||
local_activity: local_activity,
|
||||
remote_activity: remote_activity,
|
||||
user: user
|
||||
} do
|
||||
activities = Enum.sort_by(Activity.search(user, "find me"), & &1.id)
|
||||
|
||||
assert [^local_activity, ^remote_activity] = activities
|
||||
end
|
||||
|
||||
test "find only local statuses for unauthenticated users", %{local_activity: local_activity} do
|
||||
assert [^local_activity] = Activity.search(nil, "find me")
|
||||
end
|
||||
|
||||
test "find only local statuses for unauthenticated users when `limit_to_local_content` is `:all`",
|
||||
%{local_activity: local_activity} do
|
||||
Pleroma.Config.put([:instance, :limit_to_local_content], :all)
|
||||
assert [^local_activity] = Activity.search(nil, "find me")
|
||||
Pleroma.Config.put([:instance, :limit_to_local_content], :unauthenticated)
|
||||
end
|
||||
|
||||
test "find all statuses for unauthenticated users when `limit_to_local_content` is `false`",
|
||||
%{
|
||||
local_activity: local_activity,
|
||||
remote_activity: remote_activity
|
||||
} do
|
||||
Pleroma.Config.put([:instance, :limit_to_local_content], false)
|
||||
|
||||
activities = Enum.sort_by(Activity.search(nil, "find me"), & &1.id)
|
||||
|
||||
assert [^local_activity, ^remote_activity] = activities
|
||||
|
||||
Pleroma.Config.put([:instance, :limit_to_local_content], :unauthenticated)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,3 +1,7 @@
|
|||
# Pleroma: A lightweight social networking server
|
||||
# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
|
||||
# SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
defmodule Pleroma.BBS.HandlerTest do
|
||||
use Pleroma.DataCase
|
||||
alias Pleroma.Activity
|
||||
|
|
@ -59,6 +63,7 @@ defmodule Pleroma.BBS.HandlerTest do
|
|||
another_user = insert(:user)
|
||||
|
||||
{:ok, activity} = CommonAPI.post(another_user, %{"status" => "this is a test post"})
|
||||
activity_object = Object.normalize(activity)
|
||||
|
||||
output =
|
||||
capture_io(fn ->
|
||||
|
|
@ -76,8 +81,9 @@ defmodule Pleroma.BBS.HandlerTest do
|
|||
)
|
||||
|
||||
assert reply.actor == user.ap_id
|
||||
object = Object.normalize(reply)
|
||||
assert object.data["content"] == "this is a reply"
|
||||
assert object.data["inReplyTo"] == activity.data["object"]
|
||||
|
||||
reply_object_data = Object.normalize(reply).data
|
||||
assert reply_object_data["content"] == "this is a reply"
|
||||
assert reply_object_data["inReplyTo"] == activity_object.data["id"]
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,3 +1,7 @@
|
|||
# Pleroma: A lightweight social networking server
|
||||
# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
|
||||
# SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
defmodule Pleroma.BookmarkTest do
|
||||
use Pleroma.DataCase
|
||||
import Pleroma.Factory
|
||||
|
|
|
|||
57
test/config/transfer_task_test.exs
Normal file
57
test/config/transfer_task_test.exs
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
# Pleroma: A lightweight social networking server
|
||||
# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
|
||||
# SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
defmodule Pleroma.Config.TransferTaskTest do
|
||||
use Pleroma.DataCase
|
||||
|
||||
setup do
|
||||
dynamic = Pleroma.Config.get([:instance, :dynamic_configuration])
|
||||
|
||||
Pleroma.Config.put([:instance, :dynamic_configuration], true)
|
||||
|
||||
on_exit(fn ->
|
||||
Pleroma.Config.put([:instance, :dynamic_configuration], dynamic)
|
||||
end)
|
||||
end
|
||||
|
||||
test "transfer config values from db to env" do
|
||||
refute Application.get_env(:pleroma, :test_key)
|
||||
refute Application.get_env(:idna, :test_key)
|
||||
|
||||
Pleroma.Web.AdminAPI.Config.create(%{
|
||||
group: "pleroma",
|
||||
key: "test_key",
|
||||
value: [live: 2, com: 3]
|
||||
})
|
||||
|
||||
Pleroma.Web.AdminAPI.Config.create(%{
|
||||
group: "idna",
|
||||
key: "test_key",
|
||||
value: [live: 15, com: 35]
|
||||
})
|
||||
|
||||
Pleroma.Config.TransferTask.start_link()
|
||||
|
||||
assert Application.get_env(:pleroma, :test_key) == [live: 2, com: 3]
|
||||
assert Application.get_env(:idna, :test_key) == [live: 15, com: 35]
|
||||
|
||||
on_exit(fn ->
|
||||
Application.delete_env(:pleroma, :test_key)
|
||||
Application.delete_env(:idna, :test_key)
|
||||
end)
|
||||
end
|
||||
|
||||
test "non existing atom" do
|
||||
Pleroma.Web.AdminAPI.Config.create(%{
|
||||
group: "pleroma",
|
||||
key: "undefined_atom_key",
|
||||
value: [live: 2, com: 3]
|
||||
})
|
||||
|
||||
assert ExUnit.CaptureLog.capture_log(fn ->
|
||||
Pleroma.Config.TransferTask.start_link()
|
||||
end) =~
|
||||
"updating env causes error, key: \"undefined_atom_key\", error: %ArgumentError{message: \"argument error\"}"
|
||||
end
|
||||
end
|
||||
|
|
@ -72,8 +72,11 @@ defmodule Pleroma.Conversation.ParticipationTest do
|
|||
object2 = Pleroma.Object.normalize(activity_two)
|
||||
object3 = Pleroma.Object.normalize(activity_three)
|
||||
|
||||
user = Repo.get(Pleroma.User, user.id)
|
||||
|
||||
assert participation_one.conversation.ap_id == object3.data["context"]
|
||||
assert participation_two.conversation.ap_id == object2.data["context"]
|
||||
assert participation_one.conversation.users == [user]
|
||||
|
||||
# Pagination
|
||||
assert [participation_one] = Participation.for_user(user, %{"limit" => 1})
|
||||
|
|
|
|||
|
|
@ -11,6 +11,16 @@ defmodule Pleroma.ConversationTest do
|
|||
|
||||
import Pleroma.Factory
|
||||
|
||||
setup_all do
|
||||
config_path = [:instance, :federating]
|
||||
initial_setting = Pleroma.Config.get(config_path)
|
||||
|
||||
Pleroma.Config.put(config_path, true)
|
||||
on_exit(fn -> Pleroma.Config.put(config_path, initial_setting) end)
|
||||
|
||||
:ok
|
||||
end
|
||||
|
||||
test "it goes through old direct conversations" do
|
||||
user = insert(:user)
|
||||
other_user = insert(:user)
|
||||
|
|
|
|||
37
test/emails/admin_email_test.exs
Normal file
37
test/emails/admin_email_test.exs
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
# Pleroma: A lightweight social networking server
|
||||
# Copyright © 2017-2018 Pleroma Authors <https://pleroma.social/>
|
||||
# SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
defmodule Pleroma.Emails.AdminEmailTest do
|
||||
use Pleroma.DataCase
|
||||
import Pleroma.Factory
|
||||
|
||||
alias Pleroma.Emails.AdminEmail
|
||||
alias Pleroma.Web.Router.Helpers
|
||||
|
||||
test "build report email" do
|
||||
config = Pleroma.Config.get(:instance)
|
||||
to_user = insert(:user)
|
||||
reporter = insert(:user)
|
||||
account = insert(:user)
|
||||
|
||||
res =
|
||||
AdminEmail.report(to_user, reporter, account, [%{name: "Test", id: "12"}], "Test comment")
|
||||
|
||||
status_url = Helpers.o_status_url(Pleroma.Web.Endpoint, :notice, "12")
|
||||
reporter_url = Helpers.o_status_url(Pleroma.Web.Endpoint, :feed_redirect, reporter.nickname)
|
||||
account_url = Helpers.o_status_url(Pleroma.Web.Endpoint, :feed_redirect, account.nickname)
|
||||
|
||||
assert res.to == [{to_user.name, to_user.email}]
|
||||
assert res.from == {config[:name], config[:notify_email]}
|
||||
assert res.reply_to == {reporter.name, reporter.email}
|
||||
assert res.subject == "#{config[:name]} Report"
|
||||
|
||||
assert res.html_body ==
|
||||
"<p>Reported by: <a href=\"#{reporter_url}\">#{reporter.nickname}</a></p>\n<p>Reported Account: <a href=\"#{
|
||||
account_url
|
||||
}\">#{account.nickname}</a></p>\n<p>Comment: Test comment\n<p> Statuses:\n <ul>\n <li><a href=\"#{
|
||||
status_url
|
||||
}\">#{status_url}</li>\n </ul>\n</p>\n\n"
|
||||
end
|
||||
end
|
||||
57
test/emails/mailer_test.exs
Normal file
57
test/emails/mailer_test.exs
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
# Pleroma: A lightweight social networking server
|
||||
# Copyright © 2017-2018 Pleroma Authors <https://pleroma.social/>
|
||||
# SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
defmodule Pleroma.Emails.MailerTest do
|
||||
use Pleroma.DataCase
|
||||
alias Pleroma.Emails.Mailer
|
||||
|
||||
import Swoosh.TestAssertions
|
||||
|
||||
@email %Swoosh.Email{
|
||||
from: {"Pleroma", "noreply@example.com"},
|
||||
html_body: "Test email",
|
||||
subject: "Pleroma test email",
|
||||
to: [{"Test User", "user1@example.com"}]
|
||||
}
|
||||
|
||||
setup do
|
||||
value = Pleroma.Config.get([Pleroma.Emails.Mailer, :enabled])
|
||||
on_exit(fn -> Pleroma.Config.put([Pleroma.Emails.Mailer, :enabled], value) end)
|
||||
:ok
|
||||
end
|
||||
|
||||
test "not send email when mailer is disabled" do
|
||||
Pleroma.Config.put([Pleroma.Emails.Mailer, :enabled], false)
|
||||
Mailer.deliver(@email)
|
||||
|
||||
refute_email_sent(
|
||||
from: {"Pleroma", "noreply@example.com"},
|
||||
to: [{"Test User", "user1@example.com"}],
|
||||
html_body: "Test email",
|
||||
subject: "Pleroma test email"
|
||||
)
|
||||
end
|
||||
|
||||
test "send email" do
|
||||
Mailer.deliver(@email)
|
||||
|
||||
assert_email_sent(
|
||||
from: {"Pleroma", "noreply@example.com"},
|
||||
to: [{"Test User", "user1@example.com"}],
|
||||
html_body: "Test email",
|
||||
subject: "Pleroma test email"
|
||||
)
|
||||
end
|
||||
|
||||
test "perform" do
|
||||
Mailer.perform(:deliver_async, @email, [])
|
||||
|
||||
assert_email_sent(
|
||||
from: {"Pleroma", "noreply@example.com"},
|
||||
to: [{"Test User", "user1@example.com"}],
|
||||
html_body: "Test email",
|
||||
subject: "Pleroma test email"
|
||||
)
|
||||
end
|
||||
end
|
||||
48
test/emails/user_email_test.exs
Normal file
48
test/emails/user_email_test.exs
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
# Pleroma: A lightweight social networking server
|
||||
# Copyright © 2017-2018 Pleroma Authors <https://pleroma.social/>
|
||||
# SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
defmodule Pleroma.Emails.UserEmailTest do
|
||||
use Pleroma.DataCase
|
||||
|
||||
alias Pleroma.Emails.UserEmail
|
||||
alias Pleroma.Web.Endpoint
|
||||
alias Pleroma.Web.Router
|
||||
|
||||
import Pleroma.Factory
|
||||
|
||||
test "build password reset email" do
|
||||
config = Pleroma.Config.get(:instance)
|
||||
user = insert(:user)
|
||||
email = UserEmail.password_reset_email(user, "test_token")
|
||||
assert email.from == {config[:name], config[:notify_email]}
|
||||
assert email.to == [{user.name, user.email}]
|
||||
assert email.subject == "Password reset"
|
||||
assert email.html_body =~ Router.Helpers.reset_password_url(Endpoint, :reset, "test_token")
|
||||
end
|
||||
|
||||
test "build user invitation email" do
|
||||
config = Pleroma.Config.get(:instance)
|
||||
user = insert(:user)
|
||||
token = %Pleroma.UserInviteToken{token: "test-token"}
|
||||
email = UserEmail.user_invitation_email(user, token, "test@test.com", "Jonh")
|
||||
assert email.from == {config[:name], config[:notify_email]}
|
||||
assert email.subject == "Invitation to Pleroma"
|
||||
assert email.to == [{"Jonh", "test@test.com"}]
|
||||
|
||||
assert email.html_body =~
|
||||
Router.Helpers.redirect_url(Endpoint, :registration_page, token.token)
|
||||
end
|
||||
|
||||
test "build account confirmation email" do
|
||||
config = Pleroma.Config.get(:instance)
|
||||
user = insert(:user, info: %Pleroma.User.Info{confirmation_token: "conf-token"})
|
||||
email = UserEmail.account_confirmation_email(user)
|
||||
assert email.from == {config[:name], config[:notify_email]}
|
||||
assert email.to == [{user.name, user.email}]
|
||||
assert email.subject == "#{config[:name]} account confirmation"
|
||||
|
||||
assert email.html_body =~
|
||||
Router.Helpers.confirm_email_url(Endpoint, :confirm_email, user.id, "conf-token")
|
||||
end
|
||||
end
|
||||
|
|
@ -1,3 +1,7 @@
|
|||
# Pleroma: A lightweight social networking server
|
||||
# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
|
||||
# SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
defmodule Pleroma.EmojiTest do
|
||||
use ExUnit.Case, async: true
|
||||
alias Pleroma.Emoji
|
||||
|
|
|
|||
5
test/fixtures/host-meta-zetsubou.xn--q9jyb4c.xml
vendored
Normal file
5
test/fixtures/host-meta-zetsubou.xn--q9jyb4c.xml
vendored
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<XRD
|
||||
xmlns="http://docs.oasis-open.org/ns/xri/xrd-1.0">
|
||||
<Link rel="lrdd" template="https://zetsubou.xn--q9jyb4c/.well-known/webfinger?resource={uri}" type="application/xrd+xml" />
|
||||
</XRD>
|
||||
12
test/fixtures/lain.xml
vendored
Normal file
12
test/fixtures/lain.xml
vendored
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<XRD
|
||||
xmlns="http://docs.oasis-open.org/ns/xri/xrd-1.0">
|
||||
<Subject>acct:lain@zetsubou.xn--q9jyb4c</Subject>
|
||||
<Alias>https://zetsubou.xn--q9jyb4c/users/lain</Alias>
|
||||
<Link href="https://zetsubou.xn--q9jyb4c/users/lain/feed.atom" rel="http://schemas.google.com/g/2010#updates-from" type="application/atom+xml" />
|
||||
<Link href="https://zetsubou.xn--q9jyb4c/users/lain" rel="http://webfinger.net/rel/profile-page" type="text/html" />
|
||||
<Link href="https://zetsubou.xn--q9jyb4c/users/lain/salmon" rel="salmon" />
|
||||
<Link href="data:application/magic-public-key,RSA.7yTJNuPH7wSsg6sMH4XLi-OL6JL8idyRMwNsWy2xzKWPJRWVK5hxG1kMGQ4qC_9ksqIaT7c7DIQFJYYbhRTnXYdac1UxaWivzl5l2HYPOOF1_-gbE6TCaI4ItTQo5eB4yyy3zozrIuv_GY8W0Ww58Re8Z_G4DFFmnipgiBKNaHthxNQqtxcK-o4rUv3xdyr_M9KYi3QISCGiaV_t8xkdVREixzNmWpsqM5YZ46xXT0SiGSHDubLE_OGhyvWqf_WkJrnDBETL3WjXU4QsPmBbVBgLvLcHei_uAD-9d3QImSuWwBXXQZIzY7Diro6u8dZuPIoLmnbUp1-mViBwCUMWSQ==.AQAB" rel="magic-public-key" />
|
||||
<Link href="https://zetsubou.xn--q9jyb4c/users/lain" rel="self" type="application/activity+json" />
|
||||
<Link rel="http://ostatus.org/schema/1.0/subscribe" template="https://zetsubou.xn--q9jyb4c/ostatus_subscribe?acct={uri}" />
|
||||
</XRD>
|
||||
24
test/fixtures/mastodon-delete-user.json
vendored
Normal file
24
test/fixtures/mastodon-delete-user.json
vendored
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
"type": "Delete",
|
||||
"object": {
|
||||
"type": "Person",
|
||||
"id": "http://mastodon.example.org/users/admin",
|
||||
"atomUri": "http://mastodon.example.org/users/admin"
|
||||
},
|
||||
"id": "http://mastodon.example.org/users/admin#delete",
|
||||
"actor": "http://mastodon.example.org/users/admin",
|
||||
"@context": [
|
||||
{
|
||||
"toot": "http://joinmastodon.org/ns#",
|
||||
"sensitive": "as:sensitive",
|
||||
"ostatus": "http://ostatus.org#",
|
||||
"movedTo": "as:movedTo",
|
||||
"manuallyApprovesFollowers": "as:manuallyApprovesFollowers",
|
||||
"inReplyToAtomUri": "ostatus:inReplyToAtomUri",
|
||||
"conversation": "ostatus:conversation",
|
||||
"atomUri": "ostatus:atomUri",
|
||||
"Hashtag": "as:Hashtag",
|
||||
"Emoji": "toot:Emoji"
|
||||
}
|
||||
]
|
||||
}
|
||||
1479
test/fixtures/rich_media/non_ogp_embed.html
vendored
Normal file
1479
test/fixtures/rich_media/non_ogp_embed.html
vendored
Normal file
File diff suppressed because it is too large
Load diff
12
test/fixtures/rich_media/ogp-missing-title.html
vendored
Normal file
12
test/fixtures/rich_media/ogp-missing-title.html
vendored
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
<html prefix="og: http://ogp.me/ns#">
|
||||
|
||||
<head>
|
||||
<title>The Rock (1996)</title>
|
||||
<meta property="og:type" content="video.movie" />
|
||||
<meta property="og:url" content="http://www.imdb.com/title/tt0117500/" />
|
||||
<meta property="og:image" content="http://ia.media-imdb.com/images/rock.jpg" />
|
||||
<meta property="og:description"
|
||||
content="Directed by Michael Bay. With Sean Connery, Nicolas Cage, Ed Harris, John Spencer.">
|
||||
</head>
|
||||
|
||||
</html>
|
||||
7
test/fixtures/users_mock/masto_closed_followers.json
vendored
Normal file
7
test/fixtures/users_mock/masto_closed_followers.json
vendored
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"@context": "https://www.w3.org/ns/activitystreams",
|
||||
"id": "http://localhost:4001/users/masto_closed/followers",
|
||||
"type": "OrderedCollection",
|
||||
"totalItems": 437,
|
||||
"first": "http://localhost:4001/users/masto_closed/followers?page=1"
|
||||
}
|
||||
7
test/fixtures/users_mock/masto_closed_following.json
vendored
Normal file
7
test/fixtures/users_mock/masto_closed_following.json
vendored
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"@context": "https://www.w3.org/ns/activitystreams",
|
||||
"id": "http://localhost:4001/users/masto_closed/following",
|
||||
"type": "OrderedCollection",
|
||||
"totalItems": 152,
|
||||
"first": "http://localhost:4001/users/masto_closed/following?page=1"
|
||||
}
|
||||
20
test/fixtures/users_mock/pleroma_followers.json
vendored
Normal file
20
test/fixtures/users_mock/pleroma_followers.json
vendored
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"type": "OrderedCollection",
|
||||
"totalItems": 527,
|
||||
"id": "http://localhost:4001/users/fuser2/followers",
|
||||
"first": {
|
||||
"type": "OrderedCollectionPage",
|
||||
"totalItems": 527,
|
||||
"partOf": "http://localhost:4001/users/fuser2/followers",
|
||||
"orderedItems": [],
|
||||
"next": "http://localhost:4001/users/fuser2/followers?page=2",
|
||||
"id": "http://localhost:4001/users/fuser2/followers?page=1"
|
||||
},
|
||||
"@context": [
|
||||
"https://www.w3.org/ns/activitystreams",
|
||||
"http://localhost:4001/schemas/litepub-0.1.jsonld",
|
||||
{
|
||||
"@language": "und"
|
||||
}
|
||||
]
|
||||
}
|
||||
20
test/fixtures/users_mock/pleroma_following.json
vendored
Normal file
20
test/fixtures/users_mock/pleroma_following.json
vendored
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"type": "OrderedCollection",
|
||||
"totalItems": 267,
|
||||
"id": "http://localhost:4001/users/fuser2/following",
|
||||
"first": {
|
||||
"type": "OrderedCollectionPage",
|
||||
"totalItems": 267,
|
||||
"partOf": "http://localhost:4001/users/fuser2/following",
|
||||
"orderedItems": [],
|
||||
"next": "http://localhost:4001/users/fuser2/following?page=2",
|
||||
"id": "http://localhost:4001/users/fuser2/following?page=1"
|
||||
},
|
||||
"@context": [
|
||||
"https://www.w3.org/ns/activitystreams",
|
||||
"http://localhost:4001/schemas/litepub-0.1.jsonld",
|
||||
{
|
||||
"@language": "und"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,3 +1,7 @@
|
|||
# Pleroma: A lightweight social networking server
|
||||
# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
|
||||
# SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
defmodule Pleroma.HealthcheckTest do
|
||||
use Pleroma.DataCase
|
||||
alias Pleroma.Healthcheck
|
||||
|
|
|
|||
|
|
@ -4,8 +4,12 @@
|
|||
|
||||
defmodule Pleroma.HTMLTest do
|
||||
alias Pleroma.HTML
|
||||
alias Pleroma.Object
|
||||
alias Pleroma.Web.CommonAPI
|
||||
use Pleroma.DataCase
|
||||
|
||||
import Pleroma.Factory
|
||||
|
||||
@html_sample """
|
||||
<b>this is in bold</b>
|
||||
<p>this is a paragraph</p>
|
||||
|
|
@ -160,4 +164,69 @@ defmodule Pleroma.HTMLTest do
|
|||
)
|
||||
end
|
||||
end
|
||||
|
||||
describe "extract_first_external_url" do
|
||||
test "extracts the url" do
|
||||
user = insert(:user)
|
||||
|
||||
{:ok, activity} =
|
||||
CommonAPI.post(user, %{
|
||||
"status" =>
|
||||
"I think I just found the best github repo https://github.com/komeiji-satori/Dress"
|
||||
})
|
||||
|
||||
object = Object.normalize(activity)
|
||||
{:ok, url} = HTML.extract_first_external_url(object, object.data["content"])
|
||||
assert url == "https://github.com/komeiji-satori/Dress"
|
||||
end
|
||||
|
||||
test "skips mentions" do
|
||||
user = insert(:user)
|
||||
other_user = insert(:user)
|
||||
|
||||
{:ok, activity} =
|
||||
CommonAPI.post(user, %{
|
||||
"status" =>
|
||||
"@#{other_user.nickname} install misskey! https://github.com/syuilo/misskey/blob/develop/docs/setup.en.md"
|
||||
})
|
||||
|
||||
object = Object.normalize(activity)
|
||||
{:ok, url} = HTML.extract_first_external_url(object, object.data["content"])
|
||||
|
||||
assert url == "https://github.com/syuilo/misskey/blob/develop/docs/setup.en.md"
|
||||
|
||||
refute url == other_user.ap_id
|
||||
end
|
||||
|
||||
test "skips hashtags" do
|
||||
user = insert(:user)
|
||||
|
||||
{:ok, activity} =
|
||||
CommonAPI.post(user, %{
|
||||
"status" =>
|
||||
"#cofe https://www.pixiv.net/member_illust.php?mode=medium&illust_id=72255140"
|
||||
})
|
||||
|
||||
object = Object.normalize(activity)
|
||||
{:ok, url} = HTML.extract_first_external_url(object, object.data["content"])
|
||||
|
||||
assert url == "https://www.pixiv.net/member_illust.php?mode=medium&illust_id=72255140"
|
||||
end
|
||||
|
||||
test "skips microformats hashtags" do
|
||||
user = insert(:user)
|
||||
|
||||
{:ok, activity} =
|
||||
CommonAPI.post(user, %{
|
||||
"status" =>
|
||||
"<a href=\"https://pleroma.gov/tags/cofe\" rel=\"tag\">#cofe</a> https://www.pixiv.net/member_illust.php?mode=medium&illust_id=72255140",
|
||||
"content_type" => "text/html"
|
||||
})
|
||||
|
||||
object = Object.normalize(activity)
|
||||
{:ok, url} = HTML.extract_first_external_url(object, object.data["content"])
|
||||
|
||||
assert url == "https://www.pixiv.net/member_illust.php?mode=medium&illust_id=72255140"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue