diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/fixtures/image.jpg | bin | 291666 -> 284468 bytes | |||
| -rw-r--r-- | test/formatter_test.exs | 25 | ||||
| -rw-r--r-- | test/html_test.exs | 8 | ||||
| -rw-r--r-- | test/tasks/relay_test.exs | 3 | ||||
| -rw-r--r-- | test/upload_test.exs | 5 | ||||
| -rw-r--r-- | test/user_test.exs | 32 | ||||
| -rw-r--r-- | test/web/activity_pub/activity_pub_test.exs | 46 | ||||
| -rw-r--r-- | test/web/activity_pub/transmogrifier_test.exs | 47 | ||||
| -rw-r--r-- | test/web/admin_api/admin_api_controller_test.exs | 16 | ||||
| -rw-r--r-- | test/web/common_api/common_api_test.exs | 18 | ||||
| -rw-r--r-- | test/web/common_api/common_api_utils_test.exs | 17 | ||||
| -rw-r--r-- | test/web/mastodon_api/mastodon_api_controller_test.exs | 92 | ||||
| -rw-r--r-- | test/web/mastodon_api/status_view_test.exs | 6 | ||||
| -rw-r--r-- | test/web/node_info_test.exs | 23 | ||||
| -rw-r--r-- | test/web/oauth/ldap_authorization_test.exs | 6 | ||||
| -rw-r--r-- | test/web/twitter_api/twitter_api_test.exs | 16 | ||||
| -rw-r--r-- | test/web/twitter_api/util_controller_test.exs | 23 | ||||
| -rw-r--r-- | test/web/twitter_api/views/activity_view_test.exs | 15 | 
18 files changed, 347 insertions, 51 deletions
| diff --git a/test/fixtures/image.jpg b/test/fixtures/image.jpgBinary files differ index 09834bb5c..edff6246b 100644 --- a/test/fixtures/image.jpg +++ b/test/fixtures/image.jpg diff --git a/test/formatter_test.exs b/test/formatter_test.exs index 7d8864bf4..fcdf931b7 100644 --- a/test/formatter_test.exs +++ b/test/formatter_test.exs @@ -181,6 +181,31 @@ defmodule Pleroma.FormatterTest do        expected_text = "@a hi"        assert {^expected_text, [] = _mentions, [] = _tags} = Formatter.linkify(text)      end + +    test "given the 'safe_mention' option, it will only mention people in the beginning" do +      user = insert(:user) +      _other_user = insert(:user) +      third_user = insert(:user) +      text = " @#{user.nickname} hey dude i hate @#{third_user.nickname}" +      {expected_text, mentions, [] = _tags} = Formatter.linkify(text, safe_mention: true) + +      assert mentions == [{"@#{user.nickname}", user}] + +      assert expected_text == +               "<span class='h-card'><a data-user='#{user.id}' class='u-url mention' href='#{ +                 user.ap_id +               }'>@<span>#{user.nickname}</span></a></span> hey dude i hate <span class='h-card'><a data-user='#{ +                 third_user.id +               }' class='u-url mention' href='#{third_user.ap_id}'>@<span>#{third_user.nickname}</span></a></span>" +    end + +    test "given the 'safe_mention' option, it will still work without any mention" do +      text = "A post without any mention" +      {expected_text, mentions, [] = _tags} = Formatter.linkify(text, safe_mention: true) + +      assert mentions == [] +      assert expected_text == text +    end    end    describe ".parse_tags" do diff --git a/test/html_test.exs b/test/html_test.exs index 29cab17f3..0b5d3d892 100644 --- a/test/html_test.exs +++ b/test/html_test.exs @@ -10,6 +10,8 @@ defmodule Pleroma.HTMLTest do      <b>this is in bold</b>      <p>this is a paragraph</p>      this is a linebreak<br /> +    this is a link with allowed "rel" attribute: <a href="http://example.com/" rel="tag">example.com</a> +    this is a link with not allowed "rel" attribute: <a href="http://example.com/" rel="tag noallowed">example.com</a>      this is an image: <img src="http://example.com/image.jpg"><br />      <script>alert('hacked')</script>    """ @@ -24,6 +26,8 @@ defmodule Pleroma.HTMLTest do        this is in bold          this is a paragraph          this is a linebreak +        this is a link with allowed "rel" attribute: example.com +        this is a link with not allowed "rel" attribute: example.com          this is an image:           alert('hacked')        """ @@ -44,6 +48,8 @@ defmodule Pleroma.HTMLTest do        this is in bold          <p>this is a paragraph</p>          this is a linebreak<br /> +        this is a link with allowed "rel" attribute: <a href="http://example.com/" rel="tag">example.com</a> +        this is a link with not allowed "rel" attribute: <a href="http://example.com/">example.com</a>          this is an image: <img src="http://example.com/image.jpg" /><br />          alert('hacked')        """ @@ -66,6 +72,8 @@ defmodule Pleroma.HTMLTest do        <b>this is in bold</b>          <p>this is a paragraph</p>          this is a linebreak<br /> +        this is a link with allowed "rel" attribute: <a href="http://example.com/" rel="tag">example.com</a> +        this is a link with not allowed "rel" attribute: <a href="http://example.com/">example.com</a>          this is an image: <img src="http://example.com/image.jpg" /><br />          alert('hacked')        """ diff --git a/test/tasks/relay_test.exs b/test/tasks/relay_test.exs index c9d90fa2e..535dc3756 100644 --- a/test/tasks/relay_test.exs +++ b/test/tasks/relay_test.exs @@ -60,7 +60,8 @@ defmodule Mix.Tasks.Pleroma.RelayTest do          ActivityPub.fetch_activities([], %{            "type" => "Undo",            "actor_id" => follower_id, -          "limit" => 1 +          "limit" => 1, +          "skip_preload" => true          })        assert undo_activity.data["type"] == "Undo" diff --git a/test/upload_test.exs b/test/upload_test.exs index 770226478..946ebcb5a 100644 --- a/test/upload_test.exs +++ b/test/upload_test.exs @@ -56,7 +56,7 @@ defmodule Pleroma.UploadTest do        assert List.first(data["url"])["href"] ==                 Pleroma.Web.base_url() <> -                 "/media/e7a6d0cf595bff76f14c9a98b6c199539559e8b844e02e51e5efcfd1f614a2df.jpg" +                 "/media/e30397b58d226d6583ab5b8b3c5defb0c682bda5c31ef07a9f57c1c4986e3781.jpg"      end      test "copies the file to the configured folder without deduping" do @@ -150,8 +150,7 @@ defmodule Pleroma.UploadTest do        {:ok, data} = Upload.store(file)        [attachment_url | _] = data["url"] -      assert Path.basename(attachment_url["href"]) == -               "an%E2%80%A6%20image.jpg" +      assert Path.basename(attachment_url["href"]) == "an%E2%80%A6%20image.jpg"      end      test "escapes reserved uri characters" do diff --git a/test/user_test.exs b/test/user_test.exs index c57eb2c06..442599910 100644 --- a/test/user_test.exs +++ b/test/user_test.exs @@ -879,7 +879,11 @@ defmodule Pleroma.UserTest do        user = insert(:user, %{nickname: "john"})        Enum.each(["john", "jo", "j"], fn query -> -        assert user == User.search(query) |> List.first() |> Map.put(:search_rank, nil) +        assert user == +                 User.search(query) +                 |> List.first() +                 |> Map.put(:search_rank, nil) +                 |> Map.put(:search_type, nil)        end)      end @@ -887,7 +891,11 @@ defmodule Pleroma.UserTest do        user = insert(:user, %{name: "John Doe"})        Enum.each(["John Doe", "JOHN", "doe", "j d", "j", "d"], fn query -> -        assert user == User.search(query) |> List.first() |> Map.put(:search_rank, nil) +        assert user == +                 User.search(query) +                 |> List.first() +                 |> Map.put(:search_rank, nil) +                 |> Map.put(:search_type, nil)        end)      end @@ -941,6 +949,7 @@ defmodule Pleroma.UserTest do                 User.search("lain@pleroma.soykaf.com")                 |> List.first()                 |> Map.put(:search_rank, nil) +               |> Map.put(:search_type, nil)      end      test "does not yield false-positive matches" do @@ -958,7 +967,7 @@ defmodule Pleroma.UserTest do        user = User.get_by_ap_id("http://mastodon.example.org/users/admin")        assert length(results) == 1 -      assert user == result |> Map.put(:search_rank, nil) +      assert user == result |> Map.put(:search_rank, nil) |> Map.put(:search_type, nil)      end    end @@ -1098,4 +1107,21 @@ defmodule Pleroma.UserTest do      assert {:ok, user_state3} = User.bookmark(user, id2)      assert user_state3.bookmarks == [id2]    end + +  describe "search for admin" do +    test "it ignores case" do +      insert(:user, nickname: "papercoach") +      insert(:user, nickname: "CanadaPaperCoach") + +      {:ok, _results, count} = +        User.search_for_admin(%{ +          query: "paper", +          local: false, +          page: 1, +          page_size: 50 +        }) + +      assert count == 2 +    end +  end  end diff --git a/test/web/activity_pub/activity_pub_test.exs b/test/web/activity_pub/activity_pub_test.exs index 035778218..96ad64e62 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -140,7 +140,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do        activity = insert(:note_activity)        {:ok, new_activity} = ActivityPub.insert(activity.data) -      assert activity == new_activity +      assert activity.id == new_activity.id      end      test "inserts a given map into the activity database, giving it an id if it has none." do @@ -270,7 +270,8 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do      booster = insert(:user)      {:ok, user} = User.block(user, %{ap_id: activity_one.data["actor"]}) -    activities = ActivityPub.fetch_activities([], %{"blocking_user" => user}) +    activities = +      ActivityPub.fetch_activities([], %{"blocking_user" => user, "skip_preload" => true})      assert Enum.member?(activities, activity_two)      assert Enum.member?(activities, activity_three) @@ -278,7 +279,8 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do      {:ok, user} = User.unblock(user, %{ap_id: activity_one.data["actor"]}) -    activities = ActivityPub.fetch_activities([], %{"blocking_user" => user}) +    activities = +      ActivityPub.fetch_activities([], %{"blocking_user" => user, "skip_preload" => true})      assert Enum.member?(activities, activity_two)      assert Enum.member?(activities, activity_three) @@ -289,14 +291,16 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do      %Activity{} = boost_activity = Activity.get_create_by_object_ap_id(id)      activity_three = Repo.get(Activity, activity_three.id) -    activities = ActivityPub.fetch_activities([], %{"blocking_user" => user}) +    activities = +      ActivityPub.fetch_activities([], %{"blocking_user" => user, "skip_preload" => true})      assert Enum.member?(activities, activity_two)      refute Enum.member?(activities, activity_three)      refute Enum.member?(activities, boost_activity)      assert Enum.member?(activities, activity_one) -    activities = ActivityPub.fetch_activities([], %{"blocking_user" => nil}) +    activities = +      ActivityPub.fetch_activities([], %{"blocking_user" => nil, "skip_preload" => true})      assert Enum.member?(activities, activity_two)      assert Enum.member?(activities, activity_three) @@ -312,14 +316,20 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do      booster = insert(:user)      {:ok, user} = User.mute(user, %User{ap_id: activity_one.data["actor"]}) -    activities = ActivityPub.fetch_activities([], %{"muting_user" => user}) +    activities = +      ActivityPub.fetch_activities([], %{"muting_user" => user, "skip_preload" => true})      assert Enum.member?(activities, activity_two)      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}) +    activities = +      ActivityPub.fetch_activities([], %{ +        "muting_user" => user, +        "with_muted" => true, +        "skip_preload" => true +      })      assert Enum.member?(activities, activity_two)      assert Enum.member?(activities, activity_three) @@ -327,7 +337,8 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do      {:ok, user} = User.unmute(user, %User{ap_id: activity_one.data["actor"]}) -    activities = ActivityPub.fetch_activities([], %{"muting_user" => user}) +    activities = +      ActivityPub.fetch_activities([], %{"muting_user" => user, "skip_preload" => true})      assert Enum.member?(activities, activity_two)      assert Enum.member?(activities, activity_three) @@ -338,14 +349,15 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do      %Activity{} = boost_activity = Activity.get_create_by_object_ap_id(id)      activity_three = Repo.get(Activity, activity_three.id) -    activities = ActivityPub.fetch_activities([], %{"muting_user" => user}) +    activities = +      ActivityPub.fetch_activities([], %{"muting_user" => user, "skip_preload" => true})      assert Enum.member?(activities, activity_two)      refute Enum.member?(activities, activity_three)      refute Enum.member?(activities, boost_activity)      assert Enum.member?(activities, activity_one) -    activities = ActivityPub.fetch_activities([], %{"muting_user" => nil}) +    activities = ActivityPub.fetch_activities([], %{"muting_user" => nil, "skip_preload" => true})      assert Enum.member?(activities, activity_two)      assert Enum.member?(activities, activity_three) @@ -353,6 +365,20 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do      assert Enum.member?(activities, activity_one)    end +  test "does include announces on request" do +    activity_three = insert(:note_activity) +    user = insert(:user) +    booster = insert(:user) + +    {:ok, user} = User.follow(user, booster) + +    {:ok, announce, _object} = CommonAPI.repeat(activity_three.id, booster) + +    [announce_activity] = ActivityPub.fetch_activities([user.ap_id | user.following]) + +    assert announce_activity.id == announce.id +  end +    test "excludes reblogs on request" do      user = insert(:user)      {:ok, expected_activity} = ActivityBuilder.insert(%{"type" => "Create"}, %{:user => user}) diff --git a/test/web/activity_pub/transmogrifier_test.exs b/test/web/activity_pub/transmogrifier_test.exs index afb931934..50e8e40bd 100644 --- a/test/web/activity_pub/transmogrifier_test.exs +++ b/test/web/activity_pub/transmogrifier_test.exs @@ -335,6 +335,53 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do        assert data["to"] == ["http://mastodon.example.org/users/admin/followers"]      end +    test "it ensures that as:Public activities make it to their followers collection" do +      user = insert(:user) + +      data = +        File.read!("test/fixtures/mastodon-post-activity.json") +        |> Poison.decode!() +        |> Map.put("actor", user.ap_id) +        |> Map.put("to", ["https://www.w3.org/ns/activitystreams#Public"]) +        |> Map.put("cc", []) + +      object = +        data["object"] +        |> Map.put("attributedTo", user.ap_id) +        |> Map.put("to", ["https://www.w3.org/ns/activitystreams#Public"]) +        |> Map.put("cc", []) + +      data = Map.put(data, "object", object) + +      {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) + +      assert data["cc"] == [User.ap_followers(user)] +    end + +    test "it ensures that address fields become lists" do +      user = insert(:user) + +      data = +        File.read!("test/fixtures/mastodon-post-activity.json") +        |> Poison.decode!() +        |> Map.put("actor", user.ap_id) +        |> Map.put("to", nil) +        |> Map.put("cc", nil) + +      object = +        data["object"] +        |> Map.put("attributedTo", user.ap_id) +        |> Map.put("to", nil) +        |> Map.put("cc", nil) + +      data = Map.put(data, "object", object) + +      {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) + +      assert !is_nil(data["to"]) +      assert !is_nil(data["cc"]) +    end +      test "it works for incoming update activities" do        data = File.read!("test/fixtures/mastodon-post-activity.json") |> Poison.decode!() diff --git a/test/web/admin_api/admin_api_controller_test.exs b/test/web/admin_api/admin_api_controller_test.exs index e50f0edde..0aab7f262 100644 --- a/test/web/admin_api/admin_api_controller_test.exs +++ b/test/web/admin_api/admin_api_controller_test.exs @@ -495,20 +495,20 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do                 "page_size" => 50,                 "users" => [                   %{ -                   "deactivated" => admin.info.deactivated, -                   "id" => admin.id, -                   "nickname" => admin.nickname, -                   "roles" => %{"admin" => true, "moderator" => false}, -                   "local" => true, -                   "tags" => [] -                 }, -                 %{                     "deactivated" => user.info.deactivated,                     "id" => user.id,                     "nickname" => user.nickname,                     "roles" => %{"admin" => false, "moderator" => false},                     "local" => true,                     "tags" => [] +                 }, +                 %{ +                   "deactivated" => admin.info.deactivated, +                   "id" => admin.id, +                   "nickname" => admin.nickname, +                   "roles" => %{"admin" => true, "moderator" => false}, +                   "local" => true, +                   "tags" => []                   }                 ]               } diff --git a/test/web/common_api/common_api_test.exs b/test/web/common_api/common_api_test.exs index f83f80b40..34aa5bf18 100644 --- a/test/web/common_api/common_api_test.exs +++ b/test/web/common_api/common_api_test.exs @@ -10,6 +10,24 @@ defmodule Pleroma.Web.CommonAPITest do    import Pleroma.Factory +  test "with the safe_dm_mention option set, it does not mention people beyond the initial tags" do +    har = insert(:user) +    jafnhar = insert(:user) +    tridi = insert(:user) +    option = Pleroma.Config.get([:instance, :safe_dm_mentions]) +    Pleroma.Config.put([:instance, :safe_dm_mentions], true) + +    {:ok, activity} = +      CommonAPI.post(har, %{ +        "status" => "@#{jafnhar.nickname} hey, i never want to see @#{tridi.nickname} again", +        "visibility" => "direct" +      }) + +    refute tridi.ap_id in activity.recipients +    assert jafnhar.ap_id in activity.recipients +    Pleroma.Config.put([:instance, :safe_dm_mentions], option) +  end +    test "it de-duplicates tags" do      user = insert(:user)      {:ok, activity} = CommonAPI.post(user, %{"status" => "#2hu #2HU"}) diff --git a/test/web/common_api/common_api_utils_test.exs b/test/web/common_api/common_api_utils_test.exs index 4c97b0d62..e04b9f9b5 100644 --- a/test/web/common_api/common_api_utils_test.exs +++ b/test/web/common_api/common_api_utils_test.exs @@ -4,6 +4,7 @@  defmodule Pleroma.Web.CommonAPI.UtilsTest do    alias Pleroma.Builders.UserBuilder +  alias Pleroma.Object    alias Pleroma.Web.CommonAPI.Utils    alias Pleroma.Web.Endpoint    use Pleroma.DataCase @@ -136,4 +137,20 @@ defmodule Pleroma.Web.CommonAPI.UtilsTest do        assert output == expected      end    end + +  describe "context_to_conversation_id" do +    test "creates a mapping object" do +      conversation_id = Utils.context_to_conversation_id("random context") +      object = Object.get_by_ap_id("random context") + +      assert conversation_id == object.id +    end + +    test "returns an existing mapping for an existing object" do +      {:ok, object} = Object.context_mapping("random context") |> Repo.insert() +      conversation_id = Utils.context_to_conversation_id("random context") + +      assert conversation_id == object.id +    end +  end  end diff --git a/test/web/mastodon_api/mastodon_api_controller_test.exs b/test/web/mastodon_api/mastodon_api_controller_test.exs index 1560ec79c..d7082880a 100644 --- a/test/web/mastodon_api/mastodon_api_controller_test.exs +++ b/test/web/mastodon_api/mastodon_api_controller_test.exs @@ -806,6 +806,96 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do        assert all = json_response(conn, 200)        assert all == []      end + +    test "paginates notifications using min_id, since_id, max_id, and limit", %{conn: conn} do +      user = insert(:user) +      other_user = insert(:user) + +      {:ok, activity1} = CommonAPI.post(other_user, %{"status" => "hi @#{user.nickname}"}) +      {:ok, activity2} = CommonAPI.post(other_user, %{"status" => "hi @#{user.nickname}"}) +      {:ok, activity3} = CommonAPI.post(other_user, %{"status" => "hi @#{user.nickname}"}) +      {:ok, activity4} = CommonAPI.post(other_user, %{"status" => "hi @#{user.nickname}"}) + +      notification1_id = Repo.get_by(Notification, activity_id: activity1.id).id |> to_string() +      notification2_id = Repo.get_by(Notification, activity_id: activity2.id).id |> to_string() +      notification3_id = Repo.get_by(Notification, activity_id: activity3.id).id |> to_string() +      notification4_id = Repo.get_by(Notification, activity_id: activity4.id).id |> to_string() + +      conn = +        conn +        |> assign(:user, user) + +      # min_id +      conn_res = +        conn +        |> get("/api/v1/notifications?limit=2&min_id=#{notification1_id}") + +      result = json_response(conn_res, 200) +      assert [%{"id" => ^notification3_id}, %{"id" => ^notification2_id}] = result + +      # since_id +      conn_res = +        conn +        |> get("/api/v1/notifications?limit=2&since_id=#{notification1_id}") + +      result = json_response(conn_res, 200) +      assert [%{"id" => ^notification4_id}, %{"id" => ^notification3_id}] = result + +      # max_id +      conn_res = +        conn +        |> get("/api/v1/notifications?limit=2&max_id=#{notification4_id}") + +      result = json_response(conn_res, 200) +      assert [%{"id" => ^notification3_id}, %{"id" => ^notification2_id}] = result +    end + +    test "filters notifications using exclude_types", %{conn: conn} do +      user = insert(:user) +      other_user = insert(:user) + +      {:ok, mention_activity} = CommonAPI.post(other_user, %{"status" => "hey @#{user.nickname}"}) +      {:ok, create_activity} = CommonAPI.post(user, %{"status" => "hey"}) +      {:ok, favorite_activity, _} = CommonAPI.favorite(create_activity.id, other_user) +      {:ok, reblog_activity, _} = CommonAPI.repeat(create_activity.id, other_user) +      {:ok, _, _, follow_activity} = CommonAPI.follow(other_user, user) + +      mention_notification_id = +        Repo.get_by(Notification, activity_id: mention_activity.id).id |> to_string() + +      favorite_notification_id = +        Repo.get_by(Notification, activity_id: favorite_activity.id).id |> to_string() + +      reblog_notification_id = +        Repo.get_by(Notification, activity_id: reblog_activity.id).id |> to_string() + +      follow_notification_id = +        Repo.get_by(Notification, activity_id: follow_activity.id).id |> to_string() + +      conn = +        conn +        |> assign(:user, user) + +      conn_res = +        get(conn, "/api/v1/notifications", %{exclude_types: ["mention", "favourite", "reblog"]}) + +      assert [%{"id" => ^follow_notification_id}] = json_response(conn_res, 200) + +      conn_res = +        get(conn, "/api/v1/notifications", %{exclude_types: ["favourite", "reblog", "follow"]}) + +      assert [%{"id" => ^mention_notification_id}] = json_response(conn_res, 200) + +      conn_res = +        get(conn, "/api/v1/notifications", %{exclude_types: ["reblog", "follow", "mention"]}) + +      assert [%{"id" => ^favorite_notification_id}] = json_response(conn_res, 200) + +      conn_res = +        get(conn, "/api/v1/notifications", %{exclude_types: ["follow", "mention", "favourite"]}) + +      assert [%{"id" => ^reblog_notification_id}] = json_response(conn_res, 200) +    end    end    describe "reblogging" do @@ -1683,7 +1773,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do        assert user = json_response(conn, 200)        assert user["note"] == -               ~s(I drink <a class="hashtag" data-tag="cofe" href="http://localhost:4001/tag/cofe">#cofe</a> with <span class="h-card"><a data-user=") <> +               ~s(I drink <a class="hashtag" data-tag="cofe" href="http://localhost:4001/tag/cofe" rel="tag">#cofe</a> with <span class="h-card"><a data-user=") <>                   user2.id <>                   ~s(" class="u-url mention" href=") <>                   user2.ap_id <> ~s(">@<span>) <> user2.nickname <> ~s(</span></a></span>) diff --git a/test/web/mastodon_api/status_view_test.exs b/test/web/mastodon_api/status_view_test.exs index ade0ca9f9..e1c9b2c8f 100644 --- a/test/web/mastodon_api/status_view_test.exs +++ b/test/web/mastodon_api/status_view_test.exs @@ -9,6 +9,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusViewTest do    alias Pleroma.User    alias Pleroma.Web.ActivityPub.ActivityPub    alias Pleroma.Web.CommonAPI +  alias Pleroma.Web.CommonAPI.Utils    alias Pleroma.Web.MastodonAPI.AccountView    alias Pleroma.Web.MastodonAPI.StatusView    alias Pleroma.Web.OStatus @@ -72,6 +73,8 @@ defmodule Pleroma.Web.MastodonAPI.StatusViewTest do      note = insert(:note_activity)      user = User.get_cached_by_ap_id(note.data["actor"]) +    convo_id = Utils.context_to_conversation_id(note.data["object"]["context"]) +      status = StatusView.render("status.json", %{activity: note})      created_at = @@ -122,7 +125,8 @@ defmodule Pleroma.Web.MastodonAPI.StatusViewTest do          }        ],        pleroma: %{ -        local: true +        local: true, +        conversation_id: convo_id        }      } diff --git a/test/web/node_info_test.exs b/test/web/node_info_test.exs index 038feecc1..2fc42b7cc 100644 --- a/test/web/node_info_test.exs +++ b/test/web/node_info_test.exs @@ -108,4 +108,27 @@ defmodule Pleroma.Web.NodeInfoTest do      assert result = json_response(conn, 200)      assert Pleroma.Application.repository() == result["software"]["repository"]    end + +  test "it returns the safe_dm_mentions feature if enabled", %{conn: conn} do +    option = Pleroma.Config.get([:instance, :safe_dm_mentions]) +    Pleroma.Config.put([:instance, :safe_dm_mentions], true) + +    response = +      conn +      |> get("/nodeinfo/2.1.json") +      |> json_response(:ok) + +    assert "safe_dm_mentions" in response["metadata"]["features"] + +    Pleroma.Config.put([:instance, :safe_dm_mentions], false) + +    response = +      conn +      |> get("/nodeinfo/2.1.json") +      |> json_response(:ok) + +    refute "safe_dm_mentions" in response["metadata"]["features"] + +    Pleroma.Config.put([:instance, :safe_dm_mentions], option) +  end  end diff --git a/test/web/oauth/ldap_authorization_test.exs b/test/web/oauth/ldap_authorization_test.exs index 5bf7eb93c..0eb191c76 100644 --- a/test/web/oauth/ldap_authorization_test.exs +++ b/test/web/oauth/ldap_authorization_test.exs @@ -10,6 +10,8 @@ defmodule Pleroma.Web.OAuth.LDAPAuthorizationTest do    import ExUnit.CaptureLog    import Mock +  @skip if !Code.ensure_loaded?(:eldap), do: :skip +    setup_all do      ldap_authenticator =        Pleroma.Config.get(Pleroma.Web.Auth.Authenticator, Pleroma.Web.Auth.PleromaAuthenticator) @@ -27,6 +29,7 @@ defmodule Pleroma.Web.OAuth.LDAPAuthorizationTest do      :ok    end +  @tag @skip    test "authorizes the existing user using LDAP credentials" do      password = "testpassword"      user = insert(:user, password_hash: Comeonin.Pbkdf2.hashpwsalt(password)) @@ -65,6 +68,7 @@ defmodule Pleroma.Web.OAuth.LDAPAuthorizationTest do      end    end +  @tag @skip    test "creates a new user after successful LDAP authorization" do      password = "testpassword"      user = build(:user) @@ -110,6 +114,7 @@ defmodule Pleroma.Web.OAuth.LDAPAuthorizationTest do      end    end +  @tag @skip    test "falls back to the default authorization when LDAP is unavailable" do      password = "testpassword"      user = insert(:user, password_hash: Comeonin.Pbkdf2.hashpwsalt(password)) @@ -153,6 +158,7 @@ defmodule Pleroma.Web.OAuth.LDAPAuthorizationTest do      end    end +  @tag @skip    test "disallow authorization for wrong LDAP credentials" do      password = "testpassword"      user = insert(:user, password_hash: Comeonin.Pbkdf2.hashpwsalt(password)) diff --git a/test/web/twitter_api/twitter_api_test.exs b/test/web/twitter_api/twitter_api_test.exs index c8dd3fd7a..b823bfd68 100644 --- a/test/web/twitter_api/twitter_api_test.exs +++ b/test/web/twitter_api/twitter_api_test.exs @@ -445,22 +445,6 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPITest do      :ok    end -  describe "context_to_conversation_id" do -    test "creates a mapping object" do -      conversation_id = TwitterAPI.context_to_conversation_id("random context") -      object = Object.get_by_ap_id("random context") - -      assert conversation_id == object.id -    end - -    test "returns an existing mapping for an existing object" do -      {:ok, object} = Object.context_mapping("random context") |> Repo.insert() -      conversation_id = TwitterAPI.context_to_conversation_id("random context") - -      assert conversation_id == object.id -    end -  end -    describe "fetching a user by uri" do      test "fetches a user by uri" do        id = "https://mastodon.social/users/lambadalambda" diff --git a/test/web/twitter_api/util_controller_test.exs b/test/web/twitter_api/util_controller_test.exs index 6e8a25056..832fdc096 100644 --- a/test/web/twitter_api/util_controller_test.exs +++ b/test/web/twitter_api/util_controller_test.exs @@ -75,6 +75,29 @@ defmodule Pleroma.Web.TwitterAPI.UtilControllerTest do    end    describe "GET /api/statusnet/config.json" do +    test "returns the state of safe_dm_mentions flag", %{conn: conn} do +      option = Pleroma.Config.get([:instance, :safe_dm_mentions]) +      Pleroma.Config.put([:instance, :safe_dm_mentions], true) + +      response = +        conn +        |> get("/api/statusnet/config.json") +        |> json_response(:ok) + +      assert response["site"]["safeDMMentionsEnabled"] == "1" + +      Pleroma.Config.put([:instance, :safe_dm_mentions], false) + +      response = +        conn +        |> get("/api/statusnet/config.json") +        |> json_response(:ok) + +      assert response["site"]["safeDMMentionsEnabled"] == "0" + +      Pleroma.Config.put([:instance, :safe_dm_mentions], option) +    end +      test "it returns the managed config", %{conn: conn} do        Pleroma.Config.put([:instance, :managed_config], false)        Pleroma.Config.put([:fe], theme: "rei-ayanami-towel") diff --git a/test/web/twitter_api/views/activity_view_test.exs b/test/web/twitter_api/views/activity_view_test.exs index 6f0786b1c..a1776b3e6 100644 --- a/test/web/twitter_api/views/activity_view_test.exs +++ b/test/web/twitter_api/views/activity_view_test.exs @@ -12,7 +12,6 @@ defmodule Pleroma.Web.TwitterAPI.ActivityViewTest do    alias Pleroma.Web.CommonAPI    alias Pleroma.Web.CommonAPI.Utils    alias Pleroma.Web.TwitterAPI.ActivityView -  alias Pleroma.Web.TwitterAPI.TwitterAPI    alias Pleroma.Web.TwitterAPI.UserView    import Pleroma.Factory @@ -82,7 +81,7 @@ defmodule Pleroma.Web.TwitterAPI.ActivityViewTest do      result = ActivityView.render("activity.json", activity: activity)      assert result["statusnet_html"] == -             "<a class=\"hashtag\" data-tag=\"bike\" href=\"http://localhost:4001/tag/bike\">#Bike</a> log - Commute Tuesday<br /><a href=\"https://pla.bike/posts/20181211/\">https://pla.bike/posts/20181211/</a><br /><a class=\"hashtag\" data-tag=\"cycling\" href=\"http://localhost:4001/tag/cycling\">#cycling</a> <a class=\"hashtag\" data-tag=\"chscycling\" href=\"http://localhost:4001/tag/chscycling\">#CHScycling</a> <a class=\"hashtag\" data-tag=\"commute\" href=\"http://localhost:4001/tag/commute\">#commute</a><br />MVIMG_20181211_054020.jpg" +             "<a class=\"hashtag\" data-tag=\"bike\" href=\"http://localhost:4001/tag/bike\" rel=\"tag\">#Bike</a> log - Commute Tuesday<br /><a href=\"https://pla.bike/posts/20181211/\">https://pla.bike/posts/20181211/</a><br /><a class=\"hashtag\" data-tag=\"cycling\" href=\"http://localhost:4001/tag/cycling\" rel=\"tag\">#cycling</a> <a class=\"hashtag\" data-tag=\"chscycling\" href=\"http://localhost:4001/tag/chscycling\" rel=\"tag\">#CHScycling</a> <a class=\"hashtag\" data-tag=\"commute\" href=\"http://localhost:4001/tag/commute\" rel=\"tag\">#commute</a><br />MVIMG_20181211_054020.jpg"      assert result["text"] ==               "#Bike log - Commute Tuesday\nhttps://pla.bike/posts/20181211/\n#cycling #CHScycling #commute\nMVIMG_20181211_054020.jpg" @@ -129,7 +128,7 @@ defmodule Pleroma.Web.TwitterAPI.ActivityViewTest do      result = ActivityView.render("activity.json", activity: activity) -    convo_id = TwitterAPI.context_to_conversation_id(activity.data["object"]["context"]) +    convo_id = Utils.context_to_conversation_id(activity.data["object"]["context"])      expected = %{        "activity_type" => "post", @@ -177,12 +176,12 @@ defmodule Pleroma.Web.TwitterAPI.ActivityViewTest do      other_user = insert(:user, %{nickname: "shp"})      {:ok, activity} = CommonAPI.post(user, %{"status" => "Hey @shp!"}) -    convo_id = TwitterAPI.context_to_conversation_id(activity.data["object"]["context"]) +    convo_id = Utils.context_to_conversation_id(activity.data["object"]["context"])      mocks = [        { -        TwitterAPI, -        [], +        Utils, +        [:passthrough],          [context_to_conversation_id: fn _ -> false end]        },        { @@ -197,7 +196,7 @@ defmodule Pleroma.Web.TwitterAPI.ActivityViewTest do        assert result["statusnet_conversation_id"] == convo_id        assert result["user"] -      refute called(TwitterAPI.context_to_conversation_id(:_)) +      refute called(Utils.context_to_conversation_id(:_))        refute called(User.get_cached_by_ap_id(user.ap_id))        refute called(User.get_cached_by_ap_id(other_user.ap_id))      end @@ -280,7 +279,7 @@ defmodule Pleroma.Web.TwitterAPI.ActivityViewTest do      {:ok, activity} = CommonAPI.post(user, %{"status" => "Hey @shp!"})      {:ok, announce, _object} = CommonAPI.repeat(activity.id, other_user) -    convo_id = TwitterAPI.context_to_conversation_id(activity.data["object"]["context"]) +    convo_id = Utils.context_to_conversation_id(activity.data["object"]["context"])      activity = Repo.get(Activity, activity.id) | 
