diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/formatter_test.exs | 19 | ||||
| -rw-r--r-- | test/web/admin_api/admin_api_controller_test.exs | 99 | ||||
| -rw-r--r-- | test/web/mastodon_api/mastodon_api_controller_test.exs | 14 | ||||
| -rw-r--r-- | test/web/mastodon_api/status_view_test.exs | 28 | ||||
| -rw-r--r-- | test/web/web_finger/web_finger_controller_test.exs | 37 | 
5 files changed, 196 insertions, 1 deletions
diff --git a/test/formatter_test.exs b/test/formatter_test.exs index 428227d78..bb318b7d5 100644 --- a/test/formatter_test.exs +++ b/test/formatter_test.exs @@ -257,4 +257,23 @@ defmodule Pleroma.FormatterTest do      text = nil      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 +  end  end diff --git a/test/web/admin_api/admin_api_controller_test.exs b/test/web/admin_api/admin_api_controller_test.exs index 4c12dd988..e183da3a1 100644 --- a/test/web/admin_api/admin_api_controller_test.exs +++ b/test/web/admin_api/admin_api_controller_test.exs @@ -154,6 +154,105 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do      end    end +  describe "POST /api/pleroma/admin/email_invite, with valid config" do +    setup do +      registrations_open = Pleroma.Config.get([:instance, :registrations_open]) +      invites_enabled = Pleroma.Config.get([:instance, :invites_enabled]) +      Pleroma.Config.put([:instance, :registrations_open], false) +      Pleroma.Config.put([:instance, :invites_enabled], true) + +      on_exit(fn -> +        Pleroma.Config.put([:instance, :registrations_open], registrations_open) +        Pleroma.Config.put([:instance, :invites_enabled], invites_enabled) +        :ok +      end) + +      [user: insert(:user, info: %{is_admin: true})] +    end + +    test "sends invitation and returns 204", %{conn: conn, user: user} do +      recipient_email = "foo@bar.com" +      recipient_name = "J. D." + +      conn = +        conn +        |> assign(:user, user) +        |> post("/api/pleroma/admin/email_invite?email=#{recipient_email}&name=#{recipient_name}") + +      assert json_response(conn, :no_content) + +      token_record = List.last(Pleroma.Repo.all(Pleroma.UserInviteToken)) +      assert token_record +      refute token_record.used + +      Swoosh.TestAssertions.assert_email_sent( +        Pleroma.UserEmail.user_invitation_email( +          user, +          token_record, +          recipient_email, +          recipient_name +        ) +      ) +    end + +    test "it returns 403 if requested by a non-admin", %{conn: conn} do +      non_admin_user = insert(:user) + +      conn = +        conn +        |> assign(:user, non_admin_user) +        |> post("/api/pleroma/admin/email_invite?email=foo@bar.com&name=JD") + +      assert json_response(conn, :forbidden) +    end +  end + +  describe "POST /api/pleroma/admin/email_invite, with invalid config" do +    setup do +      [user: insert(:user, info: %{is_admin: true})] +    end + +    test "it returns 500 if `invites_enabled` is not enabled", %{conn: conn, user: user} do +      registrations_open = Pleroma.Config.get([:instance, :registrations_open]) +      invites_enabled = Pleroma.Config.get([:instance, :invites_enabled]) +      Pleroma.Config.put([:instance, :registrations_open], false) +      Pleroma.Config.put([:instance, :invites_enabled], false) + +      on_exit(fn -> +        Pleroma.Config.put([:instance, :registrations_open], registrations_open) +        Pleroma.Config.put([:instance, :invites_enabled], invites_enabled) +        :ok +      end) + +      conn = +        conn +        |> assign(:user, user) +        |> post("/api/pleroma/admin/email_invite?email=foo@bar.com&name=JD") + +      assert json_response(conn, :internal_server_error) +    end + +    test "it returns 500 if `registrations_open` is enabled", %{conn: conn, user: user} do +      registrations_open = Pleroma.Config.get([:instance, :registrations_open]) +      invites_enabled = Pleroma.Config.get([:instance, :invites_enabled]) +      Pleroma.Config.put([:instance, :registrations_open], true) +      Pleroma.Config.put([:instance, :invites_enabled], true) + +      on_exit(fn -> +        Pleroma.Config.put([:instance, :registrations_open], registrations_open) +        Pleroma.Config.put([:instance, :invites_enabled], invites_enabled) +        :ok +      end) + +      conn = +        conn +        |> assign(:user, user) +        |> post("/api/pleroma/admin/email_invite?email=foo@bar.com&name=JD") + +      assert json_response(conn, :internal_server_error) +    end +  end +    test "/api/pleroma/admin/invite_token" do      admin = insert(:user, info: %{is_admin: true}) diff --git a/test/web/mastodon_api/mastodon_api_controller_test.exs b/test/web/mastodon_api/mastodon_api_controller_test.exs index e8275d4ab..aec0f851c 100644 --- a/test/web/mastodon_api/mastodon_api_controller_test.exs +++ b/test/web/mastodon_api/mastodon_api_controller_test.exs @@ -1415,4 +1415,18 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do      assert result["stats"]["user_count"] == 2      assert result["stats"]["status_count"] == 1    end + +  test "put settings", %{conn: conn} do +    user = insert(:user) + +    conn = +      conn +      |> assign(:user, user) +      |> put("/api/web/settings", %{"data" => %{"programming" => "socks"}}) + +    assert result = json_response(conn, 200) + +    user = User.get_cached_by_ap_id(user.ap_id) +    assert user.info.settings == %{"programming" => "socks"} +  end  end diff --git a/test/web/mastodon_api/status_view_test.exs b/test/web/mastodon_api/status_view_test.exs index d10d59d6c..b7ac92760 100644 --- a/test/web/mastodon_api/status_view_test.exs +++ b/test/web/mastodon_api/status_view_test.exs @@ -62,7 +62,12 @@ defmodule Pleroma.Web.MastodonAPI.StatusViewTest do        visibility: "public",        media_attachments: [],        mentions: [], -      tags: note.data["object"]["tag"], +      tags: [ +        %{ +          name: "#{note.data["object"]["tag"]}", +          url: "/tag/#{note.data["object"]["tag"]}" +        } +      ],        application: %{          name: "Web",          website: nil @@ -151,4 +156,25 @@ defmodule Pleroma.Web.MastodonAPI.StatusViewTest do      assert represented[:reblog][:id] == to_string(activity.id)      assert represented[:emojis] == []    end + +  describe "build_tags/1" do +    test "it returns a a dictionary tags" do +      object_tags = [ +        "fediverse", +        "mastodon", +        "nextcloud", +        %{ +          "href" => "https://kawen.space/users/lain", +          "name" => "@lain@kawen.space", +          "type" => "Mention" +        } +      ] + +      assert StatusView.build_tags(object_tags) == [ +               %{name: "fediverse", url: "/tag/fediverse"}, +               %{name: "mastodon", url: "/tag/mastodon"}, +               %{name: "nextcloud", url: "/tag/nextcloud"} +             ] +    end +  end  end diff --git a/test/web/web_finger/web_finger_controller_test.exs b/test/web/web_finger/web_finger_controller_test.exs new file mode 100644 index 000000000..cac003e76 --- /dev/null +++ b/test/web/web_finger/web_finger_controller_test.exs @@ -0,0 +1,37 @@ +defmodule Pleroma.Web.WebFinger.WebFingerControllerTest do +  use Pleroma.Web.ConnCase + +  alias Pleroma.User +  alias Pleroma.Web.WebFinger.WebFingerController + +  import Pleroma.Factory +  import ExUnit.CaptureLog +  import Tesla.Mock + +  setup do +    mock(fn env -> apply(HttpRequestMock, :request, [env]) end) +    :ok +  end + +  test "Webfinger JRD" do +    user = insert(:user) + +    response = +      build_conn() +      |> put_req_header("accept", "application/jrd+json") +      |> get("/.well-known/webfinger?resource=acct:#{user.nickname}@localhost") + +    assert json_response(response, 200)["subject"] == "acct:#{user.nickname}@localhost" +  end + +  test "Webfinger XML" do +    user = insert(:user) + +    response = +      build_conn() +      |> put_req_header("accept", "application/jrd+json") +      |> get("/.well-known/webfinger?resource=acct:#{user.nickname}@localhost") + +    assert response(response, 200) +  end +end  | 
