From 62296f5a251e376bed5b234a66b20226dbd58419 Mon Sep 17 00:00:00 2001 From: lain Date: Fri, 22 Feb 2019 12:02:51 +0100 Subject: Fix private post card handling. --- test/web/mastodon_api/mastodon_api_controller_test.exs | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'test') diff --git a/test/web/mastodon_api/mastodon_api_controller_test.exs b/test/web/mastodon_api/mastodon_api_controller_test.exs index 3dfbc8669..b52c2b805 100644 --- a/test/web/mastodon_api/mastodon_api_controller_test.exs +++ b/test/web/mastodon_api/mastodon_api_controller_test.exs @@ -1744,6 +1744,18 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do } } + # works with private posts + {:ok, activity} = + CommonAPI.post(user, %{"status" => "http://example.com/ogp", "visibility" => "direct"}) + + response_two = + conn + |> assign(:user, user) + |> get("/api/v1/statuses/#{activity.id}/card") + |> json_response(200) + + assert response_two == response + Pleroma.Config.put([:rich_media, :enabled], false) end end -- cgit v1.2.3 From 9e0686efa61940fe78736c3e2669acb7233d8ada Mon Sep 17 00:00:00 2001 From: lain Date: Fri, 22 Feb 2019 13:29:52 +0100 Subject: Move visibility into own module. --- test/web/activity_pub/visibilty_test.exs | 98 ++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 test/web/activity_pub/visibilty_test.exs (limited to 'test') diff --git a/test/web/activity_pub/visibilty_test.exs b/test/web/activity_pub/visibilty_test.exs new file mode 100644 index 000000000..1172b7455 --- /dev/null +++ b/test/web/activity_pub/visibilty_test.exs @@ -0,0 +1,98 @@ +defmodule Pleroma.Web.ActivityPub.VisibilityTest do + use Pleroma.DataCase + + alias Pleroma.Web.CommonAPI + alias Pleroma.Web.ActivityPub.Visibility + import Pleroma.Factory + + setup do + user = insert(:user) + mentioned = insert(:user) + following = insert(:user) + unrelated = insert(:user) + {:ok, following} = Pleroma.User.follow(following, user) + + {:ok, public} = + CommonAPI.post(user, %{"status" => "@#{mentioned.nickname}", "visibility" => "public"}) + + {:ok, private} = + CommonAPI.post(user, %{"status" => "@#{mentioned.nickname}", "visibility" => "private"}) + + {:ok, direct} = + CommonAPI.post(user, %{"status" => "@#{mentioned.nickname}", "visibility" => "direct"}) + + {:ok, unlisted} = + CommonAPI.post(user, %{"status" => "@#{mentioned.nickname}", "visibility" => "unlisted"}) + + %{ + public: public, + private: private, + direct: direct, + unlisted: unlisted, + user: user, + mentioned: mentioned, + following: following, + unrelated: unrelated + } + end + + test "is_direct?", %{public: public, private: private, direct: direct, unlisted: unlisted} do + assert Visibility.is_direct?(direct) + refute Visibility.is_direct?(public) + refute Visibility.is_direct?(private) + refute Visibility.is_direct?(unlisted) + end + + test "is_public?", %{public: public, private: private, direct: direct, unlisted: unlisted} do + refute Visibility.is_public?(direct) + assert Visibility.is_public?(public) + refute Visibility.is_public?(private) + assert Visibility.is_public?(unlisted) + end + + test "is_private?", %{public: public, private: private, direct: direct, unlisted: unlisted} do + refute Visibility.is_private?(direct) + refute Visibility.is_private?(public) + assert Visibility.is_private?(private) + refute Visibility.is_private?(unlisted) + end + + test "visible_for_user?", %{ + public: public, + private: private, + direct: direct, + unlisted: unlisted, + user: user, + mentioned: mentioned, + following: following, + unrelated: unrelated + } do + # All visible to author + + assert Visibility.visible_for_user?(public, user) + assert Visibility.visible_for_user?(private, user) + assert Visibility.visible_for_user?(unlisted, user) + assert Visibility.visible_for_user?(direct, user) + + # All visible to a mentioned user + + assert Visibility.visible_for_user?(public, mentioned) + assert Visibility.visible_for_user?(private, mentioned) + assert Visibility.visible_for_user?(unlisted, mentioned) + assert Visibility.visible_for_user?(direct, mentioned) + + # DM not visible for just follower + + assert Visibility.visible_for_user?(public, following) + assert Visibility.visible_for_user?(private, following) + assert Visibility.visible_for_user?(unlisted, following) + refute Visibility.visible_for_user?(direct, following) + + # Public and unlisted visible for unrelated user + + assert Visibility.visible_for_user?(public, unrelated) + assert Visibility.visible_for_user?(unlisted, unrelated) + refute Visibility.visible_for_user?(private, unrelated) + refute Visibility.visible_for_user?(direct, unrelated) + end +end -- cgit v1.2.3 From c3ac9424d2affe87df82c14dc243f507fa639343 Mon Sep 17 00:00:00 2001 From: Egor Date: Tue, 26 Feb 2019 23:32:26 +0000 Subject: AutoLinker --- test/formatter_test.exs | 114 +++++++++----------------- test/web/common_api/common_api_utils_test.exs | 32 ++++++-- 2 files changed, 65 insertions(+), 81 deletions(-) (limited to 'test') diff --git a/test/formatter_test.exs b/test/formatter_test.exs index f14077d25..7d8864bf4 100644 --- a/test/formatter_test.exs +++ b/test/formatter_test.exs @@ -21,22 +21,16 @@ defmodule Pleroma.FormatterTest do expected_text = "I love and " - tags = Formatter.parse_tags(text) - - assert expected_text == - Formatter.add_hashtag_links({[], text}, tags) |> Formatter.finalize() + assert {^expected_text, [], _tags} = Formatter.linkify(text) end test "does not turn html characters to tags" do - text = "Fact #3: pleroma does what mastodon't" + text = "#fact_3: pleroma does what mastodon't" expected_text = - "Fact : pleroma does what mastodon't" - - tags = Formatter.parse_tags(text) + ": pleroma does what mastodon't" - assert expected_text == - Formatter.add_hashtag_links({[], text}, tags) |> Formatter.finalize() + assert {^expected_text, [], _tags} = Formatter.linkify(text) end end @@ -47,79 +41,79 @@ defmodule Pleroma.FormatterTest do expected = "Hey, check out https://www.youtube.com/watch?v=8Zg1-TufF%20zY?x=1&y=2#blabla ." - assert Formatter.add_links({[], text}) |> Formatter.finalize() == expected + assert {^expected, [], []} = Formatter.linkify(text) text = "https://mastodon.social/@lambadalambda" expected = "https://mastodon.social/@lambadalambda" - assert Formatter.add_links({[], text}) |> Formatter.finalize() == expected + assert {^expected, [], []} = Formatter.linkify(text) text = "https://mastodon.social:4000/@lambadalambda" expected = "https://mastodon.social:4000/@lambadalambda" - assert Formatter.add_links({[], text}) |> Formatter.finalize() == expected + assert {^expected, [], []} = Formatter.linkify(text) text = "@lambadalambda" expected = "@lambadalambda" - assert Formatter.add_links({[], text}) |> Formatter.finalize() == expected + assert {^expected, [], []} = Formatter.linkify(text) text = "http://www.cs.vu.nl/~ast/intel/" expected = "http://www.cs.vu.nl/~ast/intel/" - assert Formatter.add_links({[], text}) |> Formatter.finalize() == expected + assert {^expected, [], []} = Formatter.linkify(text) text = "https://forum.zdoom.org/viewtopic.php?f=44&t=57087" expected = "https://forum.zdoom.org/viewtopic.php?f=44&t=57087" - assert Formatter.add_links({[], text}) |> Formatter.finalize() == expected + assert {^expected, [], []} = Formatter.linkify(text) text = "https://en.wikipedia.org/wiki/Sophia_(Gnosticism)#Mythos_of_the_soul" expected = "https://en.wikipedia.org/wiki/Sophia_(Gnosticism)#Mythos_of_the_soul" - assert Formatter.add_links({[], text}) |> Formatter.finalize() == expected + assert {^expected, [], []} = Formatter.linkify(text) text = "https://www.google.co.jp/search?q=Nasim+Aghdam" expected = "https://www.google.co.jp/search?q=Nasim+Aghdam" - assert Formatter.add_links({[], text}) |> Formatter.finalize() == expected + assert {^expected, [], []} = Formatter.linkify(text) text = "https://en.wikipedia.org/wiki/Duff's_device" expected = "https://en.wikipedia.org/wiki/Duff's_device" - assert Formatter.add_links({[], text}) |> Formatter.finalize() == expected + assert {^expected, [], []} = Formatter.linkify(text) text = "https://pleroma.com https://pleroma.com/sucks" expected = "https://pleroma.com https://pleroma.com/sucks" - assert Formatter.add_links({[], text}) |> Formatter.finalize() == expected + assert {^expected, [], []} = Formatter.linkify(text) text = "xmpp:contact@hacktivis.me" expected = "xmpp:contact@hacktivis.me" - assert Formatter.add_links({[], text}) |> Formatter.finalize() == expected + assert {^expected, [], []} = Formatter.linkify(text) text = "magnet:?xt=urn:btih:7ec9d298e91d6e4394d1379caf073c77ff3e3136&tr=udp%3A%2F%2Fopentor.org%3A2710&tr=udp%3A%2F%2Ftracker.blackunicorn.xyz%3A6969&tr=udp%3A%2F%2Ftracker.ccc.de%3A80&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969&tr=udp%3A%2F%2Ftracker.leechers-paradise.org%3A6969&tr=udp%3A%2F%2Ftracker.openbittorrent.com%3A80&tr=wss%3A%2F%2Ftracker.btorrent.xyz&tr=wss%3A%2F%2Ftracker.fastcast.nz&tr=wss%3A%2F%2Ftracker.openwebtorrent.com" expected = "#{text}" - assert Formatter.add_links({[], text}) |> Formatter.finalize() == expected + assert {^expected, [], []} = Formatter.linkify(text) end end @@ -136,12 +130,9 @@ defmodule Pleroma.FormatterTest do archaeme_remote = insert(:user, %{nickname: "archaeme@archae.me"}) - mentions = Pleroma.Formatter.parse_mentions(text) - - {subs, text} = Formatter.add_user_links({[], text}, mentions) + {text, mentions, []} = Formatter.linkify(text) - assert length(subs) == 3 - Enum.each(subs, fn {uuid, _} -> assert String.contains?(text, uuid) end) + assert length(mentions) == 3 expected_text = "@archaeme" - assert expected_text == Formatter.finalize({subs, text}) + assert expected_text == text end test "gives a replacement for user links when the user is using Osada" do @@ -160,48 +151,35 @@ defmodule Pleroma.FormatterTest do text = "@mike@osada.macgirvin.com test" - mentions = Formatter.parse_mentions(text) + {text, mentions, []} = Formatter.linkify(text) - {subs, text} = Formatter.add_user_links({[], text}, mentions) - - assert length(subs) == 1 - Enum.each(subs, fn {uuid, _} -> assert String.contains?(text, uuid) end) + assert length(mentions) == 1 expected_text = "@mike test" - assert expected_text == Formatter.finalize({subs, text}) + assert expected_text == text end test "gives a replacement for single-character local nicknames" do text = "@o hi" o = insert(:user, %{nickname: "o"}) - mentions = Formatter.parse_mentions(text) - - {subs, text} = Formatter.add_user_links({[], text}, mentions) + {text, mentions, []} = Formatter.linkify(text) - assert length(subs) == 1 - Enum.each(subs, fn {uuid, _} -> assert String.contains?(text, uuid) end) + assert length(mentions) == 1 expected_text = "@o hi" - assert expected_text == Formatter.finalize({subs, text}) + assert expected_text == text end test "does not give a replacement for single-character local nicknames who don't exist" do text = "@a hi" - mentions = Formatter.parse_mentions(text) - - {subs, text} = Formatter.add_user_links({[], text}, mentions) - - assert Enum.empty?(subs) - Enum.each(subs, fn {uuid, _} -> assert String.contains?(text, uuid) end) - expected_text = "@a hi" - assert expected_text == Formatter.finalize({subs, text}) + assert {^expected_text, [] = _mentions, [] = _tags} = Formatter.linkify(text) end end @@ -209,14 +187,14 @@ defmodule Pleroma.FormatterTest do test "parses tags in the text" do text = "Here's a #Test. Maybe these are #working or not. What about #漢字? And #は。" - expected = [ + expected_tags = [ {"#Test", "test"}, {"#working", "working"}, - {"#漢字", "漢字"}, - {"#は", "は"} + {"#は", "は"}, + {"#漢字", "漢字"} ] - assert Formatter.parse_tags(text) == expected + assert {_text, [], ^expected_tags} = Formatter.linkify(text) end end @@ -230,15 +208,15 @@ defmodule Pleroma.FormatterTest do archaeme = insert(:user, %{nickname: "archaeme"}) archaeme_remote = insert(:user, %{nickname: "archaeme@archae.me"}) - expected_result = [ - {"@gsimg", gsimg}, + expected_mentions = [ {"@archaeme", archaeme}, {"@archaeme@archae.me", archaeme_remote}, - {"@o", o}, - {"@jimm", jimm} + {"@gsimg", gsimg}, + {"@jimm", jimm}, + {"@o", o} ] - assert Formatter.parse_mentions(text) == expected_result + assert {_text, ^expected_mentions, []} = Formatter.linkify(text) end test "it adds cool emoji" do @@ -281,22 +259,10 @@ defmodule Pleroma.FormatterTest do assert Formatter.get_emoji(text) == [] end - describe "/mentions_escape" do - test "it returns text with escaped mention names" do - text = """ - @a_breakin_glass@cybre.space - (also, little voice inside my head thinking "maybe this will encourage people - pronouncing it properly instead of saying _raKEWdo_ ") - """ - - escape_text = """ - @a\\_breakin\\_glass@cybre\\.space - (also, little voice inside my head thinking \"maybe this will encourage people - pronouncing it properly instead of saying _raKEWdo_ \") - """ - - mentions = [{"@a_breakin_glass@cybre.space", %{}}] - assert Formatter.mentions_escape(text, mentions) == escape_text - end + test "it escapes HTML in plain text" do + text = "hello & world google.com/?a=b&c=d \n http://test.com/?a=b&c=d 1" + expected = "hello & world google.com/?a=b&c=d \n http://test.com/?a=b&c=d 1" + + assert Formatter.html_escape(text, "text/plain") == expected end end diff --git a/test/web/common_api/common_api_utils_test.exs b/test/web/common_api/common_api_utils_test.exs index faed6b685..dc7b4c229 100644 --- a/test/web/common_api/common_api_utils_test.exs +++ b/test/web/common_api/common_api_utils_test.exs @@ -57,19 +57,19 @@ defmodule Pleroma.Web.CommonAPI.UtilsTest do assert expected == Utils.emoji_from_profile(user) end - describe "format_input/4" do + describe "format_input/3" do test "works for bare text/plain" do text = "hello world!" expected = "hello world!" - output = Utils.format_input(text, [], [], "text/plain") + {output, [], []} = Utils.format_input(text, "text/plain") assert output == expected text = "hello world!\n\nsecond paragraph!" expected = "hello world!

second paragraph!" - output = Utils.format_input(text, [], [], "text/plain") + {output, [], []} = Utils.format_input(text, "text/plain") assert output == expected end @@ -78,14 +78,14 @@ defmodule Pleroma.Web.CommonAPI.UtilsTest do text = "

hello world!

" expected = "

hello world!

" - output = Utils.format_input(text, [], [], "text/html") + {output, [], []} = Utils.format_input(text, "text/html") assert output == expected text = "

hello world!

\n\n

second paragraph

" expected = "

hello world!

\n\n

second paragraph

" - output = Utils.format_input(text, [], [], "text/html") + {output, [], []} = Utils.format_input(text, "text/html") assert output == expected end @@ -94,14 +94,32 @@ defmodule Pleroma.Web.CommonAPI.UtilsTest do text = "**hello world**" expected = "

hello world

\n" - output = Utils.format_input(text, [], [], "text/markdown") + {output, [], []} = Utils.format_input(text, "text/markdown") assert output == expected text = "**hello world**\n\n*another paragraph*" expected = "

hello world

\n

another paragraph

\n" - output = Utils.format_input(text, [], [], "text/markdown") + {output, [], []} = Utils.format_input(text, "text/markdown") + + assert output == expected + end + + test "works for text/markdown with mentions" do + {:ok, user} = + UserBuilder.insert(%{nickname: "user__test", ap_id: "http://foo.com/user__test"}) + + text = "**hello world**\n\n*another @user__test and @user__test google.com paragraph*" + + expected = + "

hello world

\n

another @user__test and @user__test google.com paragraph

\n" + + {output, _, _} = Utils.format_input(text, "text/markdown") assert output == expected end -- cgit v1.2.3 From ed7fd6b47e93e0874e3d79f124b71693e43dbb2c Mon Sep 17 00:00:00 2001 From: Maxim Filippov Date: Wed, 27 Feb 2019 03:08:03 +0300 Subject: Add missing docs and tests --- test/web/admin_api/admin_api_controller_test.exs | 35 ++++++++++++++++++++++++ 1 file changed, 35 insertions(+) (limited to 'test') diff --git a/test/web/admin_api/admin_api_controller_test.exs b/test/web/admin_api/admin_api_controller_test.exs index 9fbaaba39..f6ae16844 100644 --- a/test/web/admin_api/admin_api_controller_test.exs +++ b/test/web/admin_api/admin_api_controller_test.exs @@ -330,4 +330,39 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do assert conn.status == 200 end + + test "GET /api/pleroma/admin/users" do + admin = insert(:user, info: %{is_admin: true}) + user = insert(:user) + + conn = + build_conn() + |> assign(:user, admin) + |> get("/api/pleroma/admin/users") + + assert json_response(conn, 200) == [ + %{ + "deactivated" => user.info.deactivated, + "id" => user.id, + "nickname" => user.nickname + } + ] + end + + test "PATCH /api/pleroma/admin/users/:nickname/toggle_activation" do + admin = insert(:user, info: %{is_admin: true}) + user = insert(:user) + + conn = + build_conn() + |> assign(:user, admin) + |> patch("/api/pleroma/admin/users/#{user.nickname}/toggle_activation") + + assert json_response(conn, 200) == + %{ + "deactivated" => !user.info.deactivated, + "id" => user.id, + "nickname" => user.nickname + } + end end -- cgit v1.2.3 From 5d961d536cd190c8201d53624680a6f3384ffd9b Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Wed, 27 Feb 2019 15:40:30 +0700 Subject: fix formatter --- test/web/common_api/common_api_utils_test.exs | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'test') diff --git a/test/web/common_api/common_api_utils_test.exs b/test/web/common_api/common_api_utils_test.exs index dc7b4c229..684f2a23f 100644 --- a/test/web/common_api/common_api_utils_test.exs +++ b/test/web/common_api/common_api_utils_test.exs @@ -104,6 +104,18 @@ defmodule Pleroma.Web.CommonAPI.UtilsTest do {output, [], []} = Utils.format_input(text, "text/markdown") assert output == expected + + text = """ + > cool quote + + by someone + """ + + expected = "

cool quote

\n
\n

by someone

\n" + + {output, [], []} = Utils.format_input(text, "text/markdown") + + assert output == expected end test "works for text/markdown with mentions" do @@ -113,11 +125,11 @@ defmodule Pleroma.Web.CommonAPI.UtilsTest do text = "**hello world**\n\n*another @user__test and @user__test google.com paragraph*" expected = - "

hello world

\n

another @user__test and @user__test google.com paragraph

\n" + }\" class=\"u-url mention\" href=\"http://foo.com/user__test\">@user__test google.com paragraph

\n" {output, _, _} = Utils.format_input(text, "text/markdown") -- cgit v1.2.3 From 153664096255208055ae2e0b31ea20238ad540b2 Mon Sep 17 00:00:00 2001 From: William Pitcock Date: Wed, 27 Feb 2019 13:01:10 +0000 Subject: mastodon api: embed relationship card under account card for Pleroma FE convenience --- test/web/mastodon_api/account_view_test.exs | 66 ++++++++++++++++++++++++++++- 1 file changed, 64 insertions(+), 2 deletions(-) (limited to 'test') diff --git a/test/web/mastodon_api/account_view_test.exs b/test/web/mastodon_api/account_view_test.exs index f8cd68173..6be66ef63 100644 --- a/test/web/mastodon_api/account_view_test.exs +++ b/test/web/mastodon_api/account_view_test.exs @@ -63,7 +63,8 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest do confirmation_pending: false, tags: [], is_admin: false, - is_moderator: false + is_moderator: false, + relationship: %{} } } @@ -106,7 +107,8 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest do confirmation_pending: false, tags: [], is_admin: false, - is_moderator: false + is_moderator: false, + relationship: %{} } } @@ -148,4 +150,64 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest do assert expected == AccountView.render("relationship.json", %{user: user, target: other_user}) end + + test "represent an embedded relationship" do + user = + insert(:user, %{ + info: %{note_count: 5, follower_count: 3, source_data: %{"type" => "Service"}}, + nickname: "shp@shitposter.club", + inserted_at: ~N[2017-08-15 15:47:06.597036] + }) + + other_user = insert(:user) + + {:ok, other_user} = User.follow(other_user, user) + {:ok, other_user} = User.block(other_user, user) + + expected = %{ + id: to_string(user.id), + username: "shp", + acct: user.nickname, + display_name: user.name, + locked: false, + created_at: "2017-08-15T15:47:06.000Z", + followers_count: 3, + following_count: 0, + statuses_count: 5, + note: user.bio, + url: user.ap_id, + avatar: "http://localhost:4001/images/avi.png", + avatar_static: "http://localhost:4001/images/avi.png", + header: "http://localhost:4001/images/banner.png", + header_static: "http://localhost:4001/images/banner.png", + emojis: [], + fields: [], + bot: true, + source: %{ + note: "", + privacy: "public", + sensitive: false + }, + pleroma: %{ + confirmation_pending: false, + tags: [], + is_admin: false, + is_moderator: false, + relationship: %{ + id: to_string(user.id), + following: false, + followed_by: false, + blocking: true, + muting: false, + muting_notifications: false, + requested: false, + domain_blocking: false, + showing_reblogs: false, + endorsed: false + } + } + } + + assert expected == AccountView.render("account.json", %{user: user, for: other_user}) + end end -- cgit v1.2.3 From 8d8cb08f94490299bfc7fe97381a34e4a7a095a9 Mon Sep 17 00:00:00 2001 From: lain Date: Wed, 27 Feb 2019 14:51:07 +0100 Subject: Add follow request test. --- test/user_test.exs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'test') diff --git a/test/user_test.exs b/test/user_test.exs index 0b1c39ecf..cbe4693fc 100644 --- a/test/user_test.exs +++ b/test/user_test.exs @@ -50,6 +50,20 @@ defmodule Pleroma.UserTest do assert expected_followers_collection == User.ap_followers(user) end + test "returns all pending follow requests" do + unlocked = insert(:user) + locked = insert(:user, %{info: %{locked: true}}) + follower = insert(:user) + + Pleroma.Web.TwitterAPI.TwitterAPI.follow(follower, %{"user_id" => unlocked.id}) + Pleroma.Web.TwitterAPI.TwitterAPI.follow(follower, %{"user_id" => locked.id}) + + assert {:ok, []} = User.get_follow_requests(unlocked) + assert {:ok, [activity]} = User.get_follow_requests(locked) + + assert activity + end + test "follow_all follows mutliple users" do user = insert(:user) followed_zero = insert(:user) -- cgit v1.2.3 From c4235f96bde49def1fb6927ba79a49a0f75cd60a Mon Sep 17 00:00:00 2001 From: lain Date: Wed, 27 Feb 2019 16:37:42 +0100 Subject: Add `with_muted` param. --- test/web/activity_pub/activity_pub_test.exs | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'test') diff --git a/test/web/activity_pub/activity_pub_test.exs b/test/web/activity_pub/activity_pub_test.exs index 11262c523..ac3a565de 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -291,6 +291,13 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do assert Enum.member?(activities, activity_three) refute Enum.member?(activities, activity_one) + # Calling with 'with_muted' will deliver muted activities, too. + activities = ActivityPub.fetch_activities([], %{"muting_user" => user, "with_muted" => true}) + + assert Enum.member?(activities, activity_two) + assert Enum.member?(activities, activity_three) + assert Enum.member?(activities, activity_one) + {:ok, user} = User.unmute(user, %User{ap_id: activity_one.data["actor"]}) activities = ActivityPub.fetch_activities([], %{"muting_user" => user}) -- cgit v1.2.3 From c1ae495878cc95d09a051cc56e2bf7dc7ed0a032 Mon Sep 17 00:00:00 2001 From: lain Date: Wed, 27 Feb 2019 16:46:47 +0100 Subject: Add user muted status info to MastodonAPI. --- test/web/mastodon_api/status_view_test.exs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'test') diff --git a/test/web/mastodon_api/status_view_test.exs b/test/web/mastodon_api/status_view_test.exs index 3412a6be2..351dbf673 100644 --- a/test/web/mastodon_api/status_view_test.exs +++ b/test/web/mastodon_api/status_view_test.exs @@ -126,6 +126,22 @@ defmodule Pleroma.Web.MastodonAPI.StatusViewTest do assert status == expected end + test "tells if the message is muted for some reason" do + user = insert(:user) + other_user = insert(:user) + + {:ok, user} = User.mute(user, other_user) + + {:ok, activity} = CommonAPI.post(other_user, %{"status" => "test"}) + status = StatusView.render("status.json", %{activity: activity}) + + assert status.muted == false + + status = StatusView.render("status.json", %{activity: activity, for: user}) + + assert status.muted == true + end + test "a reply" do note = insert(:note_activity) user = insert(:user) -- cgit v1.2.3 From 9ade1242c20acae5d27785deb833b453628b12ee Mon Sep 17 00:00:00 2001 From: lain Date: Wed, 27 Feb 2019 16:52:03 +0100 Subject: Add user muted status info to twitterapi. --- test/web/twitter_api/views/activity_view_test.exs | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'test') diff --git a/test/web/twitter_api/views/activity_view_test.exs b/test/web/twitter_api/views/activity_view_test.exs index 4f854ecaa..0a5384f34 100644 --- a/test/web/twitter_api/views/activity_view_test.exs +++ b/test/web/twitter_api/views/activity_view_test.exs @@ -56,6 +56,22 @@ defmodule Pleroma.Web.TwitterAPI.ActivityViewTest do assert result["user"]["id"] == user.id end + test "tells if the message is muted for some reason" do + user = insert(:user) + other_user = insert(:user) + + {:ok, user} = User.mute(user, other_user) + + {:ok, activity} = CommonAPI.post(other_user, %{"status" => "test"}) + status = ActivityView.render("activity.json", %{activity: activity}) + + assert status["muted"] == false + + status = ActivityView.render("activity.json", %{activity: activity, for: user}) + + assert status["muted"] == true + end + test "a create activity with a html status" do text = """ #Bike log - Commute Tuesday\nhttps://pla.bike/posts/20181211/\n#cycling #CHScycling #commute\nMVIMG_20181211_054020.jpg @@ -149,7 +165,8 @@ defmodule Pleroma.Web.TwitterAPI.ActivityViewTest do "uri" => activity.data["object"]["id"], "user" => UserView.render("show.json", %{user: user}), "visibility" => "direct", - "card" => nil + "card" => nil, + "muted" => false } assert result == expected -- cgit v1.2.3 From bbbdbec4fd8f14aa039d7f4a42215544cd6e4932 Mon Sep 17 00:00:00 2001 From: lain Date: Wed, 27 Feb 2019 17:24:51 +0100 Subject: Remove parts of the old activity view. Not used anymore. --- .../representers/activity_representer_test.exs | 43 +--------------------- 1 file changed, 1 insertion(+), 42 deletions(-) (limited to 'test') diff --git a/test/web/twitter_api/representers/activity_representer_test.exs b/test/web/twitter_api/representers/activity_representer_test.exs index 365c7f659..0e554623c 100644 --- a/test/web/twitter_api/representers/activity_representer_test.exs +++ b/test/web/twitter_api/representers/activity_representer_test.exs @@ -13,36 +13,6 @@ defmodule Pleroma.Web.TwitterAPI.Representers.ActivityRepresenterTest do alias Pleroma.Web.TwitterAPI.UserView import Pleroma.Factory - test "an announce activity" do - user = insert(:user) - note_activity = insert(:note_activity) - activity_actor = Repo.get_by(User, ap_id: note_activity.data["actor"]) - object = Object.get_by_ap_id(note_activity.data["object"]["id"]) - - {:ok, announce_activity, _object} = ActivityPub.announce(user, object) - note_activity = Activity.get_by_ap_id(note_activity.data["id"]) - - status = - ActivityRepresenter.to_map(announce_activity, %{ - users: [user, activity_actor], - announced_activity: note_activity, - for: user - }) - - assert status["id"] == announce_activity.id - assert status["user"] == UserView.render("show.json", %{user: user, for: user}) - - retweeted_status = - ActivityRepresenter.to_map(note_activity, %{user: activity_actor, for: user}) - - assert retweeted_status["repeated"] == true - assert retweeted_status["id"] == note_activity.id - assert status["statusnet_conversation_id"] == retweeted_status["statusnet_conversation_id"] - - assert status["retweeted_status"] == retweeted_status - assert status["activity_type"] == "repeat" - end - test "a like activity" do user = insert(:user) note_activity = insert(:note_activity) @@ -168,6 +138,7 @@ defmodule Pleroma.Web.TwitterAPI.Representers.ActivityRepresenterTest do "uri" => activity.data["object"]["id"], "visibility" => "direct", "card" => nil, + "muted" => false, "summary" => "2hu :2hu:", "summary_html" => "2hu \"2hu\"" @@ -180,18 +151,6 @@ defmodule Pleroma.Web.TwitterAPI.Representers.ActivityRepresenterTest do }) == expected_status end - test "an undo for a follow" do - follower = insert(:user) - followed = insert(:user) - - {:ok, _follow} = ActivityPub.follow(follower, followed) - {:ok, unfollow} = ActivityPub.unfollow(follower, followed) - - map = ActivityRepresenter.to_map(unfollow, %{user: follower}) - assert map["is_post_verb"] == false - assert map["activity_type"] == "undo" - end - test "a delete activity" do object = insert(:note) user = User.get_by_ap_id(object.data["actor"]) -- cgit v1.2.3 From 2883f75a3a25599c6217460133578cddcd34ebb4 Mon Sep 17 00:00:00 2001 From: Maxim Filippov Date: Thu, 28 Feb 2019 01:11:56 +0300 Subject: Add pagination to users admin API --- test/web/admin_api/admin_api_controller_test.exs | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) (limited to 'test') diff --git a/test/web/admin_api/admin_api_controller_test.exs b/test/web/admin_api/admin_api_controller_test.exs index f6ae16844..1b0a2f5be 100644 --- a/test/web/admin_api/admin_api_controller_test.exs +++ b/test/web/admin_api/admin_api_controller_test.exs @@ -338,15 +338,19 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do conn = build_conn() |> assign(:user, admin) - |> get("/api/pleroma/admin/users") - - assert json_response(conn, 200) == [ - %{ - "deactivated" => user.info.deactivated, - "id" => user.id, - "nickname" => user.nickname - } - ] + |> get("/api/pleroma/admin/users?page=1") + + assert json_response(conn, 200) == %{ + "count" => 1, + "page_size" => 50, + "users" => [ + %{ + "deactivated" => user.info.deactivated, + "id" => user.id, + "nickname" => user.nickname + } + ] + } end test "PATCH /api/pleroma/admin/users/:nickname/toggle_activation" do -- cgit v1.2.3 From 6b11011039dca5090c3a7b7b2a01f32b666be380 Mon Sep 17 00:00:00 2001 From: eugenijm Date: Thu, 28 Feb 2019 08:31:33 +0300 Subject: Added deactivated to the user view --- test/web/twitter_api/views/user_view_test.exs | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'test') diff --git a/test/web/twitter_api/views/user_view_test.exs b/test/web/twitter_api/views/user_view_test.exs index 95e52ca46..114f24a1c 100644 --- a/test/web/twitter_api/views/user_view_test.exs +++ b/test/web/twitter_api/views/user_view_test.exs @@ -239,6 +239,13 @@ defmodule Pleroma.Web.TwitterAPI.UserViewTest do assert represented["role"] == nil end + test "A regular user for the admin", %{user: user} do + admin = insert(:user, %{info: %{is_admin: true}}) + represented = UserView.render("show.json", %{user: user, for: admin}) + + assert represented["pleroma"]["deactivated"] == false + end + test "A blocked user for the blocker" do user = insert(:user) blocker = insert(:user) -- cgit v1.2.3 From 70e82a3465ee10004d0ae347934524e779bd778a Mon Sep 17 00:00:00 2001 From: Maxim Filippov Date: Thu, 28 Feb 2019 17:54:02 +0300 Subject: Add test for the second page --- test/web/admin_api/admin_api_controller_test.exs | 56 ++++++++++++++++-------- 1 file changed, 37 insertions(+), 19 deletions(-) (limited to 'test') diff --git a/test/web/admin_api/admin_api_controller_test.exs b/test/web/admin_api/admin_api_controller_test.exs index 1b0a2f5be..893387ef5 100644 --- a/test/web/admin_api/admin_api_controller_test.exs +++ b/test/web/admin_api/admin_api_controller_test.exs @@ -331,26 +331,44 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do assert conn.status == 200 end - test "GET /api/pleroma/admin/users" do - admin = insert(:user, info: %{is_admin: true}) - user = insert(:user) + describe "GET /api/pleroma/admin/users" do + test "renders users array for the first page" do + admin = insert(:user, info: %{is_admin: true}) + user = insert(:user) - conn = - build_conn() - |> assign(:user, admin) - |> get("/api/pleroma/admin/users?page=1") - - assert json_response(conn, 200) == %{ - "count" => 1, - "page_size" => 50, - "users" => [ - %{ - "deactivated" => user.info.deactivated, - "id" => user.id, - "nickname" => user.nickname - } - ] - } + conn = + build_conn() + |> assign(:user, admin) + |> get("/api/pleroma/admin/users?page=1") + + assert json_response(conn, 200) == %{ + "count" => 1, + "page_size" => 50, + "users" => [ + %{ + "deactivated" => user.info.deactivated, + "id" => user.id, + "nickname" => user.nickname + } + ] + } + end + + test "renders empty array for the second page" do + admin = insert(:user, info: %{is_admin: true}) + user = insert(:user) + + conn = + build_conn() + |> assign(:user, admin) + |> get("/api/pleroma/admin/users?page=2") + + assert json_response(conn, 200) == %{ + "count" => 1, + "page_size" => 50, + "users" => [] + } + end end test "PATCH /api/pleroma/admin/users/:nickname/toggle_activation" do -- cgit v1.2.3 From 46f29b9da1cfdcc2ab14616f999f061fa0c87ddc Mon Sep 17 00:00:00 2001 From: Maxim Filippov Date: Thu, 28 Feb 2019 19:04:47 +0300 Subject: Add search users endpoint --- test/web/admin_api/admin_api_controller_test.exs | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) (limited to 'test') diff --git a/test/web/admin_api/admin_api_controller_test.exs b/test/web/admin_api/admin_api_controller_test.exs index 893387ef5..14625af32 100644 --- a/test/web/admin_api/admin_api_controller_test.exs +++ b/test/web/admin_api/admin_api_controller_test.exs @@ -356,7 +356,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do test "renders empty array for the second page" do admin = insert(:user, info: %{is_admin: true}) - user = insert(:user) + insert(:user) conn = build_conn() @@ -387,4 +387,26 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do "nickname" => user.nickname } end + + test "GET /api/pleroma/admin/users/search" do + admin = insert(:user, info: %{is_admin: true}) + user = insert(:user, nickname: "bob") + + conn = + build_conn() + |> assign(:user, admin) + |> get("/api/pleroma/admin/users/search?query=bo") + + assert json_response(conn, 200) == %{ + "count" => 1, + "page_size" => 50, + "users" => [ + %{ + "deactivated" => user.info.deactivated, + "id" => user.id, + "nickname" => user.nickname + } + ] + } + end end -- cgit v1.2.3 From 1341ee650ecde656f385454264f43b21051e86f2 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Fri, 1 Mar 2019 09:37:29 +0300 Subject: [#675] Do not show DMs in mentions timeline --- test/web/activity_pub/activity_pub_test.exs | 8 ++++++++ test/web/twitter_api/twitter_api_controller_test.exs | 19 ++++++++++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) (limited to 'test') diff --git a/test/web/activity_pub/activity_pub_test.exs b/test/web/activity_pub/activity_pub_test.exs index 11262c523..17f48797b 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -55,6 +55,14 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do ActivityPub.fetch_activities([], %{:visibility => "public", "actor_id" => user.ap_id}) assert activities == [public_activity] + + activities = + ActivityPub.fetch_activities([], %{ + :visibility => ~w[private public], + "actor_id" => user.ap_id + }) + + assert activities == [public_activity, private_activity] end end diff --git a/test/web/twitter_api/twitter_api_controller_test.exs b/test/web/twitter_api/twitter_api_controller_test.exs index 05a832967..ed5683779 100644 --- a/test/web/twitter_api/twitter_api_controller_test.exs +++ b/test/web/twitter_api/twitter_api_controller_test.exs @@ -427,7 +427,10 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do test "with credentials", %{conn: conn, user: current_user} do {:ok, activity} = - ActivityBuilder.insert(%{"to" => [current_user.ap_id]}, %{user: current_user}) + ActivityBuilder.insert( + %{"to" => [current_user.ap_id, "https://www.w3.org/ns/activitystreams#Public"]}, + %{user: current_user} + ) conn = conn @@ -445,6 +448,20 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do mentioned: [current_user] }) end + + test "does not show DMs in mentions timeline", %{conn: conn, user: current_user} do + {:ok, _activity} = + ActivityBuilder.insert(%{"to" => [current_user.ap_id]}, %{user: current_user}) + + conn = + conn + |> with_credentials(current_user.nickname, "test") + |> get("/api/statuses/mentions.json") + + response = json_response(conn, 200) + + assert length(response) == 0 + end end describe "GET /api/qvitter/statuses/notifications.json" do -- cgit v1.2.3 From 9c6abec4d8b2487edeb124aa197a5dd6d771e345 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Fri, 1 Mar 2019 15:48:04 +0300 Subject: use commonapi.post instead of activitybulder --- test/web/twitter_api/twitter_api_controller_test.exs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'test') diff --git a/test/web/twitter_api/twitter_api_controller_test.exs b/test/web/twitter_api/twitter_api_controller_test.exs index ed5683779..7125d85ab 100644 --- a/test/web/twitter_api/twitter_api_controller_test.exs +++ b/test/web/twitter_api/twitter_api_controller_test.exs @@ -427,10 +427,10 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do test "with credentials", %{conn: conn, user: current_user} do {:ok, activity} = - ActivityBuilder.insert( - %{"to" => [current_user.ap_id, "https://www.w3.org/ns/activitystreams#Public"]}, - %{user: current_user} - ) + CommonAPI.post(current_user, %{ + "status" => "why is tenshi eating a corndog so cute?", + "visibility" => "public" + }) conn = conn @@ -451,7 +451,10 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do test "does not show DMs in mentions timeline", %{conn: conn, user: current_user} do {:ok, _activity} = - ActivityBuilder.insert(%{"to" => [current_user.ap_id]}, %{user: current_user}) + CommonAPI.post(current_user, %{ + "status" => "Have you guys ever seen how cute tenshi eating a corndog is?", + "visibility" => "direct" + }) conn = conn -- cgit v1.2.3 From 5b08b470f69738f4528455a58fefe3a8d4acae02 Mon Sep 17 00:00:00 2001 From: Maxim Filippov Date: Fri, 1 Mar 2019 20:13:02 +0300 Subject: Add "local" params to users search --- test/web/admin_api/admin_api_controller_test.exs | 64 +++++++++++++++++------- 1 file changed, 45 insertions(+), 19 deletions(-) (limited to 'test') diff --git a/test/web/admin_api/admin_api_controller_test.exs b/test/web/admin_api/admin_api_controller_test.exs index 14625af32..460f2a6bd 100644 --- a/test/web/admin_api/admin_api_controller_test.exs +++ b/test/web/admin_api/admin_api_controller_test.exs @@ -388,25 +388,51 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do } end - test "GET /api/pleroma/admin/users/search" do - admin = insert(:user, info: %{is_admin: true}) - user = insert(:user, nickname: "bob") + describe "GET /api/pleroma/admin/users/search" do + test "regular search" do + admin = insert(:user, info: %{is_admin: true}) + user = insert(:user, nickname: "bob") - conn = - build_conn() - |> assign(:user, admin) - |> get("/api/pleroma/admin/users/search?query=bo") - - assert json_response(conn, 200) == %{ - "count" => 1, - "page_size" => 50, - "users" => [ - %{ - "deactivated" => user.info.deactivated, - "id" => user.id, - "nickname" => user.nickname - } - ] - } + conn = + build_conn() + |> assign(:user, admin) + |> get("/api/pleroma/admin/users/search?query=bo") + + assert json_response(conn, 200) == %{ + "count" => 1, + "page_size" => 50, + "users" => [ + %{ + "deactivated" => user.info.deactivated, + "id" => user.id, + "nickname" => user.nickname + } + ] + } + end + + test "only local users" do + admin = insert(:user, info: %{is_admin: true}) + user = insert(:user, nickname: "bob") + + insert(:user, nickname: "bobb", local: false) + + conn = + build_conn() + |> assign(:user, admin) + |> get("/api/pleroma/admin/users/search?query=bo&local=true") + + assert json_response(conn, 200) == %{ + "count" => 1, + "page_size" => 50, + "users" => [ + %{ + "deactivated" => user.info.deactivated, + "id" => user.id, + "nickname" => user.nickname + } + ] + } + end end end -- cgit v1.2.3 From f1a4c3163b18692a7a8bd9874a45e75a6535dd5a Mon Sep 17 00:00:00 2001 From: Maxim Filippov Date: Fri, 1 Mar 2019 20:23:03 +0300 Subject: Show current user in users list as well --- test/web/admin_api/admin_api_controller_test.exs | 45 +++++++++++++----------- 1 file changed, 25 insertions(+), 20 deletions(-) (limited to 'test') diff --git a/test/web/admin_api/admin_api_controller_test.exs b/test/web/admin_api/admin_api_controller_test.exs index 460f2a6bd..0679f5dfe 100644 --- a/test/web/admin_api/admin_api_controller_test.exs +++ b/test/web/admin_api/admin_api_controller_test.exs @@ -345,6 +345,11 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do "count" => 1, "page_size" => 50, "users" => [ + %{ + "deactivated" => admin.info.deactivated, + "id" => admin.id, + "nickname" => admin.nickname + }, %{ "deactivated" => user.info.deactivated, "id" => user.id, @@ -399,16 +404,16 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do |> get("/api/pleroma/admin/users/search?query=bo") assert json_response(conn, 200) == %{ - "count" => 1, - "page_size" => 50, - "users" => [ - %{ - "deactivated" => user.info.deactivated, - "id" => user.id, - "nickname" => user.nickname - } - ] - } + "count" => 1, + "page_size" => 50, + "users" => [ + %{ + "deactivated" => user.info.deactivated, + "id" => user.id, + "nickname" => user.nickname + } + ] + } end test "only local users" do @@ -423,16 +428,16 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do |> get("/api/pleroma/admin/users/search?query=bo&local=true") assert json_response(conn, 200) == %{ - "count" => 1, - "page_size" => 50, - "users" => [ - %{ - "deactivated" => user.info.deactivated, - "id" => user.id, - "nickname" => user.nickname - } - ] - } + "count" => 1, + "page_size" => 50, + "users" => [ + %{ + "deactivated" => user.info.deactivated, + "id" => user.id, + "nickname" => user.nickname + } + ] + } end end end -- cgit v1.2.3 From f384a9a2563d2fb6161ebb824534fda08cf67c64 Mon Sep 17 00:00:00 2001 From: Maxim Filippov Date: Fri, 1 Mar 2019 20:23:19 +0300 Subject: Format --- test/web/admin_api/admin_api_controller_test.exs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'test') diff --git a/test/web/admin_api/admin_api_controller_test.exs b/test/web/admin_api/admin_api_controller_test.exs index 0679f5dfe..a3042fa05 100644 --- a/test/web/admin_api/admin_api_controller_test.exs +++ b/test/web/admin_api/admin_api_controller_test.exs @@ -345,11 +345,11 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do "count" => 1, "page_size" => 50, "users" => [ - %{ - "deactivated" => admin.info.deactivated, - "id" => admin.id, - "nickname" => admin.nickname - }, + %{ + "deactivated" => admin.info.deactivated, + "id" => admin.id, + "nickname" => admin.nickname + }, %{ "deactivated" => user.info.deactivated, "id" => user.id, -- cgit v1.2.3 From aaa9fed1ca196b55d8c05af838d6947959548bf0 Mon Sep 17 00:00:00 2001 From: Maxim Filippov Date: Fri, 1 Mar 2019 20:58:47 +0300 Subject: Fix user_test --- test/user_test.exs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'test') diff --git a/test/user_test.exs b/test/user_test.exs index 0b1c39ecf..27137fc35 100644 --- a/test/user_test.exs +++ b/test/user_test.exs @@ -901,7 +901,7 @@ defmodule Pleroma.UserTest do {:ok, follower} = User.follow(follower, u1) {:ok, u1} = User.follow(u1, friend) - assert [friend.id, follower.id, u2.id] == Enum.map(User.search("doe", false, u1), & &1.id) + assert [friend.id, follower.id, u2.id] == Enum.map(User.search("doe", resolve: false, for_user: u1), & &1.id) end test "finds a user whose name is nil" do @@ -923,7 +923,7 @@ defmodule Pleroma.UserTest do end test "works with URIs" do - results = User.search("http://mastodon.example.org/users/admin", true) + results = User.search("http://mastodon.example.org/users/admin", resolve: true) result = results |> List.first() user = User.get_by_ap_id("http://mastodon.example.org/users/admin") -- cgit v1.2.3 From a25c1313aee2f5f3d2b858b9802698f29acf4043 Mon Sep 17 00:00:00 2001 From: Maxim Filippov Date: Fri, 1 Mar 2019 21:07:05 +0300 Subject: Format --- test/user_test.exs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'test') diff --git a/test/user_test.exs b/test/user_test.exs index 27137fc35..4f9de4e31 100644 --- a/test/user_test.exs +++ b/test/user_test.exs @@ -901,7 +901,8 @@ defmodule Pleroma.UserTest do {:ok, follower} = User.follow(follower, u1) {:ok, u1} = User.follow(u1, friend) - assert [friend.id, follower.id, u2.id] == Enum.map(User.search("doe", resolve: false, for_user: u1), & &1.id) + assert [friend.id, follower.id, u2.id] == + Enum.map(User.search("doe", resolve: false, for_user: u1), & &1.id) end test "finds a user whose name is nil" do -- cgit v1.2.3 From bb9e40968a90b882ba85e71a2622756e40563207 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Sat, 2 Mar 2019 04:10:43 +0100 Subject: Web.OAuth.OAuthControllerTest: Add test against token formatting --- test/web/oauth/oauth_controller_test.exs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'test') diff --git a/test/web/oauth/oauth_controller_test.exs b/test/web/oauth/oauth_controller_test.exs index 53d83e6e8..ed94416ff 100644 --- a/test/web/oauth/oauth_controller_test.exs +++ b/test/web/oauth/oauth_controller_test.exs @@ -165,10 +165,10 @@ defmodule Pleroma.Web.OAuth.OAuthControllerTest do test "issues a token for request with HTTP basic auth client credentials" do user = insert(:user) - app = insert(:oauth_app, scopes: ["scope1", "scope2"]) + app = insert(:oauth_app, scopes: ["scope1", "scope2", "scope3"]) - {:ok, auth} = Authorization.create_authorization(app, user, ["scope2"]) - assert auth.scopes == ["scope2"] + {:ok, auth} = Authorization.create_authorization(app, user, ["scope1", "scope2"]) + assert auth.scopes == ["scope1", "scope2"] app_encoded = (URI.encode_www_form(app.client_id) <> ":" <> URI.encode_www_form(app.client_secret)) @@ -183,11 +183,13 @@ defmodule Pleroma.Web.OAuth.OAuthControllerTest do "redirect_uri" => app.redirect_uris }) - assert %{"access_token" => token} = json_response(conn, 200) + assert %{"access_token" => token, "scope" => scope} = json_response(conn, 200) + + assert scope == "scope1 scope2" token = Repo.get_by(Token, token: token) assert token - assert token.scopes == ["scope2"] + assert token.scopes == ["scope1", "scope2"] end test "rejects token exchange with invalid client credentials" do -- cgit v1.2.3 From 25e588496adab62be79da65e8dc23426b8813159 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Sat, 2 Mar 2019 06:13:04 +0100 Subject: Pleroma.Web.RelMeTest: Add test against Pleroma.Web.RelMe --- test/fixtures/rel_me_anchor.html | 14 +++++++++++ test/fixtures/rel_me_link.html | 14 +++++++++++ test/fixtures/rel_me_null.html | 13 ++++++++++ test/web/rel_me_test.exs | 54 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 95 insertions(+) create mode 100644 test/fixtures/rel_me_anchor.html create mode 100644 test/fixtures/rel_me_link.html create mode 100644 test/fixtures/rel_me_null.html create mode 100644 test/web/rel_me_test.exs (limited to 'test') diff --git a/test/fixtures/rel_me_anchor.html b/test/fixtures/rel_me_anchor.html new file mode 100644 index 000000000..5abcce129 --- /dev/null +++ b/test/fixtures/rel_me_anchor.html @@ -0,0 +1,14 @@ + + + + + Blog + + + + + diff --git a/test/fixtures/rel_me_link.html b/test/fixtures/rel_me_link.html new file mode 100644 index 000000000..b9ff18f6e --- /dev/null +++ b/test/fixtures/rel_me_link.html @@ -0,0 +1,14 @@ + + + + + Blog + + + +
+

Lorem ipsum

+

Lorem ipsum dolor sit ameph, …

+
+ + diff --git a/test/fixtures/rel_me_null.html b/test/fixtures/rel_me_null.html new file mode 100644 index 000000000..57d424b80 --- /dev/null +++ b/test/fixtures/rel_me_null.html @@ -0,0 +1,13 @@ + + + + + Blog + + +
+

Lorem ipsum

+

Lorem ipsum dolor sit ameph, …

+
+ + diff --git a/test/web/rel_me_test.exs b/test/web/rel_me_test.exs new file mode 100644 index 000000000..94cc01728 --- /dev/null +++ b/test/web/rel_me_test.exs @@ -0,0 +1,54 @@ +defmodule Pleroma.Web.RelMeTest do + use ExUnit.Case, async: true + + setup do + Tesla.Mock.mock(fn + %{ + method: :get, + url: "http://example.com/rel_me/anchor" + } -> + %Tesla.Env{status: 200, body: File.read!("test/fixtures/rel_me_anchor.html")} + + %{ + method: :get, + url: "http://example.com/rel_me/link" + } -> + %Tesla.Env{status: 200, body: File.read!("test/fixtures/rel_me_link.html")} + + %{ + method: :get, + url: "http://example.com/rel_me/null" + } -> + %Tesla.Env{status: 200, body: File.read!("test/fixtures/rel_me_null.html")} + end) + + :ok + end + + test "parse/1" do + hrefs = ["https://social.example.org/users/lain"] + + assert Pleroma.Web.RelMe.parse("http://example.com/rel_me/null") == {:ok, []} + assert {:error, _} = Pleroma.Web.RelMe.parse("http://example.com/rel_me/error") + + assert Pleroma.Web.RelMe.parse("http://example.com/rel_me/link") == {:ok, hrefs} + assert Pleroma.Web.RelMe.parse("http://example.com/rel_me/anchor") == {:ok, hrefs} + end + + test "maybe_put_rel_me/2" do + profile_urls = ["https://social.example.org/users/lain"] + attr = "rel=\"me\" " + + assert Pleroma.Web.RelMe.maybe_put_rel_me("http://example.com/rel_me/null", profile_urls) == + "" + + assert Pleroma.Web.RelMe.maybe_put_rel_me("http://example.com/rel_me/error", profile_urls) == + "" + + assert Pleroma.Web.RelMe.maybe_put_rel_me("http://example.com/rel_me/anchor", profile_urls) == + attr + + assert Pleroma.Web.RelMe.maybe_put_rel_me("http://example.com/rel_me/link", profile_urls) == + attr + end +end -- cgit v1.2.3 From 8e6f7fdb86bc7f90618c59ee4b13b30b94fda475 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Sat, 2 Mar 2019 06:58:42 +0100 Subject: RelMe.maybe_put_rel_me/2: When true put "me" otherwise nil --- test/web/rel_me_test.exs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'test') diff --git a/test/web/rel_me_test.exs b/test/web/rel_me_test.exs index 94cc01728..ba8038e69 100644 --- a/test/web/rel_me_test.exs +++ b/test/web/rel_me_test.exs @@ -37,13 +37,14 @@ defmodule Pleroma.Web.RelMeTest do test "maybe_put_rel_me/2" do profile_urls = ["https://social.example.org/users/lain"] - attr = "rel=\"me\" " + attr = "me" + fallback = nil assert Pleroma.Web.RelMe.maybe_put_rel_me("http://example.com/rel_me/null", profile_urls) == - "" + fallback assert Pleroma.Web.RelMe.maybe_put_rel_me("http://example.com/rel_me/error", profile_urls) == - "" + fallback assert Pleroma.Web.RelMe.maybe_put_rel_me("http://example.com/rel_me/anchor", profile_urls) == attr -- cgit v1.2.3 From 7b9868f34344144bfb965cdd099f71b2617976c6 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Sat, 2 Mar 2019 06:59:09 +0100 Subject: Pleroma.UserTest: Add tests for rel=me --- test/user_test.exs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'test') diff --git a/test/user_test.exs b/test/user_test.exs index cbe4693fc..e182a809f 100644 --- a/test/user_test.exs +++ b/test/user_test.exs @@ -1039,6 +1039,22 @@ defmodule Pleroma.UserTest do assert expected_text == User.parse_bio(bio, user) end + + test "Adds rel=me on linkbacked urls" do + user = insert(:user, ap_id: "http://social.example.org/users/lain") + + bio = "http://example.org/rel_me/null" + expected_text = "#{bio}" + assert expected_text == User.parse_bio(bio, user) + + bio = "http://example.org/rel_me/link" + expected_text = "#{bio}" + assert expected_text == User.parse_bio(bio, user) + + bio = "http://example.org/rel_me/anchor" + expected_text = "#{bio}" + assert expected_text == User.parse_bio(bio, user) + end end test "bookmarks" do -- cgit v1.2.3 From 2ec8cf566569912b767e15ab467cadd04fd1fd1c Mon Sep 17 00:00:00 2001 From: Maxim Filippov Date: Sat, 2 Mar 2019 17:21:18 +0300 Subject: Add pagination to search --- test/web/admin_api/admin_api_controller_test.exs | 46 ++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 3 deletions(-) (limited to 'test') diff --git a/test/web/admin_api/admin_api_controller_test.exs b/test/web/admin_api/admin_api_controller_test.exs index a3042fa05..42e0daf8e 100644 --- a/test/web/admin_api/admin_api_controller_test.exs +++ b/test/web/admin_api/admin_api_controller_test.exs @@ -342,7 +342,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do |> get("/api/pleroma/admin/users?page=1") assert json_response(conn, 200) == %{ - "count" => 1, + "count" => 2, "page_size" => 50, "users" => [ %{ @@ -369,7 +369,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do |> get("/api/pleroma/admin/users?page=2") assert json_response(conn, 200) == %{ - "count" => 1, + "count" => 2, "page_size" => 50, "users" => [] } @@ -416,9 +416,49 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do } end - test "only local users" do + test "regular search with page size" do admin = insert(:user, info: %{is_admin: true}) user = insert(:user, nickname: "bob") + user2 = insert(:user, nickname: "bo") + + conn = + build_conn() + |> assign(:user, admin) + |> get("/api/pleroma/admin/users/search?query=bo&page_size=1&page=1") + + assert json_response(conn, 200) == %{ + "count" => 2, + "page_size" => 1, + "users" => [ + %{ + "deactivated" => user.info.deactivated, + "id" => user.id, + "nickname" => user.nickname + } + ] + } + + conn = + build_conn() + |> assign(:user, admin) + |> get("/api/pleroma/admin/users/search?query=bo&page_size=1&page=2") + + assert json_response(conn, 200) == %{ + "count" => 2, + "page_size" => 1, + "users" => [ + %{ + "deactivated" => user2.info.deactivated, + "id" => user2.id, + "nickname" => user2.nickname + } + ] + } + end + + test "only local users" do + admin = insert(:user, info: %{is_admin: true}, nickname: "john") + user = insert(:user, nickname: "bob") insert(:user, nickname: "bobb", local: false) -- cgit v1.2.3 From bf30df99cb9a08870f7c6a25e0f9f3d2e03d5de7 Mon Sep 17 00:00:00 2001 From: Maxim Filippov Date: Sat, 2 Mar 2019 17:32:40 +0300 Subject: We do not guarantee the order of elements when we search --- test/user_test.exs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'test') diff --git a/test/user_test.exs b/test/user_test.exs index 4f9de4e31..188ab1a5c 100644 --- a/test/user_test.exs +++ b/test/user_test.exs @@ -901,8 +901,8 @@ defmodule Pleroma.UserTest do {:ok, follower} = User.follow(follower, u1) {:ok, u1} = User.follow(u1, friend) - assert [friend.id, follower.id, u2.id] == - Enum.map(User.search("doe", resolve: false, for_user: u1), & &1.id) + assert [friend.id, follower.id, u2.id] -- + Enum.map(User.search("doe", resolve: false, for_user: u1), & &1.id) == [] end test "finds a user whose name is nil" do -- cgit v1.2.3 From 1a1f4520cd711d46a53ffa0ec657f8a7e46896e7 Mon Sep 17 00:00:00 2001 From: eugenijm Date: Sat, 2 Mar 2019 22:18:51 +0300 Subject: Use sql query in User.get_follow_requests/1 for filtering logic --- test/user_test.exs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'test') diff --git a/test/user_test.exs b/test/user_test.exs index cbe4693fc..b8d41ecfd 100644 --- a/test/user_test.exs +++ b/test/user_test.exs @@ -64,6 +64,20 @@ defmodule Pleroma.UserTest do assert activity end + test "doesn't return already accepted or duplicate follow requests" do + locked = insert(:user, %{info: %{locked: true}}) + pending_follower = insert(:user) + accepted_follower = insert(:user) + + Pleroma.Web.TwitterAPI.TwitterAPI.follow(pending_follower, %{"user_id" => locked.id}) + Pleroma.Web.TwitterAPI.TwitterAPI.follow(pending_follower, %{"user_id" => locked.id}) + Pleroma.Web.TwitterAPI.TwitterAPI.follow(accepted_follower, %{"user_id" => locked.id}) + User.maybe_follow(accepted_follower, locked) + + assert {:ok, [activity]} = User.get_follow_requests(locked) + assert activity + end + test "follow_all follows mutliple users" do user = insert(:user) followed_zero = insert(:user) -- cgit v1.2.3 From c46950d3b16e6fe1ebb86a202ca47a810bfb76dc Mon Sep 17 00:00:00 2001 From: eugenijm Date: Sun, 3 Mar 2019 13:21:03 +0300 Subject: Increment user note count only on public activities --- test/web/activity_pub/activity_pub_test.exs | 43 +++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) (limited to 'test') diff --git a/test/web/activity_pub/activity_pub_test.exs b/test/web/activity_pub/activity_pub_test.exs index ac3a565de..70a98824d 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -205,6 +205,25 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do assert activity.actor == user.ap_id assert activity.recipients == ["user1", "user2", user.ap_id] end + + test "increases user note count only for public activities" do + user = insert(:user) + + {:ok, _} = + CommonAPI.post(Repo.get(User, user.id), %{"status" => "1", "visibility" => "public"}) + + {:ok, _} = + CommonAPI.post(Repo.get(User, user.id), %{"status" => "2", "visibility" => "unlisted"}) + + {:ok, _} = + CommonAPI.post(Repo.get(User, user.id), %{"status" => "2", "visibility" => "private"}) + + {:ok, _} = + CommonAPI.post(Repo.get(User, user.id), %{"status" => "3", "visibility" => "direct"}) + + user = Repo.get(User, user.id) + assert user.info.note_count == 2 + end end describe "fetch activities for recipients" do @@ -640,6 +659,30 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do assert Repo.get(Object, object.id).data["type"] == "Tombstone" end + + test "decrements user note count only for public activities" do + user = insert(:user, info: %{note_count: 10}) + + {:ok, a1} = + CommonAPI.post(Repo.get(User, user.id), %{"status" => "yeah", "visibility" => "public"}) + + {:ok, a2} = + CommonAPI.post(Repo.get(User, user.id), %{"status" => "yeah", "visibility" => "unlisted"}) + + {:ok, a3} = + CommonAPI.post(Repo.get(User, user.id), %{"status" => "yeah", "visibility" => "private"}) + + {:ok, a4} = + CommonAPI.post(Repo.get(User, user.id), %{"status" => "yeah", "visibility" => "direct"}) + + {:ok, _} = a1.data["object"]["id"] |> Object.get_by_ap_id() |> ActivityPub.delete() + {:ok, _} = a2.data["object"]["id"] |> Object.get_by_ap_id() |> ActivityPub.delete() + {:ok, _} = a3.data["object"]["id"] |> Object.get_by_ap_id() |> ActivityPub.delete() + {:ok, _} = a4.data["object"]["id"] |> Object.get_by_ap_id() |> ActivityPub.delete() + + user = Repo.get(User, user.id) + assert user.info.note_count == 10 + end end describe "timeline post-processing" do -- cgit v1.2.3 From d5418e9ff78785c48bc94fbc8cb146ffe90c1fc5 Mon Sep 17 00:00:00 2001 From: eugenijm Date: Sun, 3 Mar 2019 18:39:37 +0300 Subject: Remove follow_request_count as it's not needed for FE anymore. MastoFE uses `GET /api/v1/follow_requests` and PleromaFE uses `GET /api/pleroma/friend_requests` which they query on the initial page load. --- test/web/mastodon_api/mastodon_api_controller_test.exs | 4 ---- test/web/twitter_api/twitter_api_controller_test.exs | 5 ----- 2 files changed, 9 deletions(-) (limited to 'test') diff --git a/test/web/mastodon_api/mastodon_api_controller_test.exs b/test/web/mastodon_api/mastodon_api_controller_test.exs index b52c2b805..f7f10662a 100644 --- a/test/web/mastodon_api/mastodon_api_controller_test.exs +++ b/test/web/mastodon_api/mastodon_api_controller_test.exs @@ -946,7 +946,6 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do other_user = Repo.get(User, other_user.id) assert User.following?(other_user, user) == false - assert user.info.follow_request_count == 1 conn = build_conn() @@ -960,7 +959,6 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do other_user = Repo.get(User, other_user.id) assert User.following?(other_user, user) == true - assert user.info.follow_request_count == 0 end test "verify_credentials", %{conn: conn} do @@ -982,7 +980,6 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do {:ok, _activity} = ActivityPub.follow(other_user, user) user = Repo.get(User, user.id) - assert user.info.follow_request_count == 1 conn = build_conn() @@ -996,7 +993,6 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do other_user = Repo.get(User, other_user.id) assert User.following?(other_user, user) == false - assert user.info.follow_request_count == 0 end end diff --git a/test/web/twitter_api/twitter_api_controller_test.exs b/test/web/twitter_api/twitter_api_controller_test.exs index 7125d85ab..d18b65876 100644 --- a/test/web/twitter_api/twitter_api_controller_test.exs +++ b/test/web/twitter_api/twitter_api_controller_test.exs @@ -690,7 +690,6 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do followed = Repo.get(User, followed.id) refute User.ap_followers(followed) in current_user.following - assert followed.info.follow_request_count == 1 assert json_response(conn, 200) == UserView.render("show.json", %{user: followed, for: current_user}) @@ -1757,7 +1756,6 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do other_user = Repo.get(User, other_user.id) assert User.following?(other_user, user) == false - assert user.info.follow_request_count == 1 conn = build_conn() @@ -1769,7 +1767,6 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do assert relationship = json_response(conn, 200) assert other_user.id == relationship["id"] assert relationship["follows_you"] == true - assert user.info.follow_request_count == 0 end end @@ -1784,7 +1781,6 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do other_user = Repo.get(User, other_user.id) assert User.following?(other_user, user) == false - assert user.info.follow_request_count == 1 conn = build_conn() @@ -1796,7 +1792,6 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do assert relationship = json_response(conn, 200) assert other_user.id == relationship["id"] assert relationship["follows_you"] == false - assert user.info.follow_request_count == 0 end end -- cgit v1.2.3