diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/pleroma/object/fetcher_test.exs | 2 | ||||
| -rw-r--r-- | test/pleroma/user_test.exs | 15 | ||||
| -rw-r--r-- | test/pleroma/web/activity_pub/object_validators/attachment_validator_test.exs | 13 | ||||
| -rw-r--r-- | test/pleroma/web/feed/tag_controller_test.exs | 5 | ||||
| -rw-r--r-- | test/pleroma/web/feed/user_controller_test.exs | 8 | ||||
| -rw-r--r-- | test/pleroma/web/mastodon_api/update_credentials_test.exs | 82 | ||||
| -rw-r--r-- | test/pleroma/web/metadata/providers/twitter_card_test.exs | 56 | 
7 files changed, 145 insertions, 36 deletions
diff --git a/test/pleroma/object/fetcher_test.exs b/test/pleroma/object/fetcher_test.exs index 51541a42c..c8ad66ddb 100644 --- a/test/pleroma/object/fetcher_test.exs +++ b/test/pleroma/object/fetcher_test.exs @@ -166,7 +166,7 @@ defmodule Pleroma.Object.FetcherTest do        Instances.set_consistently_unreachable(id)        refute Instances.reachable?(id) -      {:ok, object} = +      {:ok, _object} =          Fetcher.fetch_object_from_id("http://mastodon.example.org/@admin/99541947525187367")        assert Instances.reachable?(id) diff --git a/test/pleroma/user_test.exs b/test/pleroma/user_test.exs index 303598fad..a58c8f68b 100644 --- a/test/pleroma/user_test.exs +++ b/test/pleroma/user_test.exs @@ -591,6 +591,21 @@ defmodule Pleroma.UserTest do        refute_email_sent()      end +    test "it works when the registering user does not provide an email" do +      clear_config([Pleroma.Emails.Mailer, :enabled], false) +      clear_config([:instance, :account_activation_required], false) +      clear_config([:instance, :account_approval_required], true) + +      cng = User.register_changeset(%User{}, @full_user_data |> Map.put(:email, "")) + +      # The user is still created +      assert {:ok, %User{nickname: "nick"}} = User.register(cng) + +      # No emails are sent +      ObanHelpers.perform_all() +      refute_email_sent() +    end +      test "it requires an email, name, nickname and password, bio is optional when account_activation_required is enabled" do        clear_config([:instance, :account_activation_required], true) diff --git a/test/pleroma/web/activity_pub/object_validators/attachment_validator_test.exs b/test/pleroma/web/activity_pub/object_validators/attachment_validator_test.exs index 9a17e277e..77f2044e9 100644 --- a/test/pleroma/web/activity_pub/object_validators/attachment_validator_test.exs +++ b/test/pleroma/web/activity_pub/object_validators/attachment_validator_test.exs @@ -11,6 +11,19 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.AttachmentValidatorTest do    import Pleroma.Factory    describe "attachments" do +    test "fails without url" do +      attachment = %{ +        "mediaType" => "", +        "name" => "", +        "summary" => "298p3RG7j27tfsZ9RQ.jpg", +        "type" => "Document" +      } + +      assert {:error, _cng} = +               AttachmentValidator.cast_and_validate(attachment) +               |> Ecto.Changeset.apply_action(:insert) +    end +      test "works with honkerific attachments" do        attachment = %{          "mediaType" => "", diff --git a/test/pleroma/web/feed/tag_controller_test.exs b/test/pleroma/web/feed/tag_controller_test.exs index 1bd2b157c..58ab8f137 100644 --- a/test/pleroma/web/feed/tag_controller_test.exs +++ b/test/pleroma/web/feed/tag_controller_test.exs @@ -63,7 +63,6 @@ defmodule Pleroma.Web.Feed.TagControllerTest do             ]      assert xpath(xml, ~x"//feed/entry/author/name/text()"ls) == [user.nickname, user.nickname] -    assert xpath(xml, ~x"//feed/entry/author/id/text()"ls) == [user.ap_id, user.ap_id]      conn =        conn @@ -138,8 +137,8 @@ defmodule Pleroma.Web.Feed.TagControllerTest do             ]      assert xpath(xml, ~x"//channel/item/pubDate/text()"sl) == [ -             FeedView.pub_date(activity2.data["published"]), -             FeedView.pub_date(activity1.data["published"]) +             FeedView.to_rfc2822(activity2.data["published"]), +             FeedView.to_rfc2822(activity1.data["published"])             ]      assert xpath(xml, ~x"//channel/item/enclosure/@url"sl) == [ diff --git a/test/pleroma/web/feed/user_controller_test.exs b/test/pleroma/web/feed/user_controller_test.exs index 38cde3315..de32d3d4b 100644 --- a/test/pleroma/web/feed/user_controller_test.exs +++ b/test/pleroma/web/feed/user_controller_test.exs @@ -74,7 +74,7 @@ defmodule Pleroma.Web.Feed.UserControllerTest do          |> SweetXml.parse()          |> SweetXml.xpath(~x"//entry/title/text()"l) -      assert activity_titles == ['42 & Thi...', 'This & t...'] +      assert activity_titles == ['2hu', '2hu & as']        assert resp =~ FeedView.escape(object.data["content"])        assert resp =~ FeedView.escape(object.data["summary"])        assert resp =~ FeedView.escape(object.data["context"]) @@ -90,7 +90,7 @@ defmodule Pleroma.Web.Feed.UserControllerTest do          |> SweetXml.parse()          |> SweetXml.xpath(~x"//entry/title/text()"l) -      assert activity_titles == ['This & t...'] +      assert activity_titles == ['2hu & as']      end      test "gets a rss feed", %{conn: conn, user: user, object: object, max_id: max_id} do @@ -105,7 +105,7 @@ defmodule Pleroma.Web.Feed.UserControllerTest do          |> SweetXml.parse()          |> SweetXml.xpath(~x"//item/title/text()"l) -      assert activity_titles == ['42 & Thi...', 'This & t...'] +      assert activity_titles == ['2hu', '2hu & as']        assert resp =~ FeedView.escape(object.data["content"])        assert resp =~ FeedView.escape(object.data["summary"])        assert resp =~ FeedView.escape(object.data["context"]) @@ -121,7 +121,7 @@ defmodule Pleroma.Web.Feed.UserControllerTest do          |> SweetXml.parse()          |> SweetXml.xpath(~x"//item/title/text()"l) -      assert activity_titles == ['This & t...'] +      assert activity_titles == ['2hu & as']      end      test "returns 404 for a missing feed", %{conn: conn} do diff --git a/test/pleroma/web/mastodon_api/update_credentials_test.exs b/test/pleroma/web/mastodon_api/update_credentials_test.exs index f5211a60e..d5fac7e25 100644 --- a/test/pleroma/web/mastodon_api/update_credentials_test.exs +++ b/test/pleroma/web/mastodon_api/update_credentials_test.exs @@ -259,6 +259,34 @@ defmodule Pleroma.Web.MastodonAPI.UpdateCredentialsTest do        assert user.avatar == nil      end +    test "updates the user's avatar, upload_limit, returns a HTTP 413", %{conn: conn, user: user} do +      upload_limit = Config.get([:instance, :upload_limit]) * 8 + 8 + +      assert :ok == +               File.write(Path.absname("test/tmp/large_binary.data"), <<0::size(upload_limit)>>) + +      new_avatar_oversized = %Plug.Upload{ +        content_type: nil, +        path: Path.absname("test/tmp/large_binary.data"), +        filename: "large_binary.data" +      } + +      assert user.avatar == %{} + +      res = +        patch(conn, "/api/v1/accounts/update_credentials", %{"avatar" => new_avatar_oversized}) + +      assert user_response = json_response_and_validate_schema(res, 413) +      assert user_response["avatar"] != User.avatar_url(user) + +      user = User.get_by_id(user.id) +      assert user.avatar == %{} + +      clear_config([:instance, :upload_limit], upload_limit) + +      assert :ok == File.rm(Path.absname("test/tmp/large_binary.data")) +    end +      test "updates the user's banner", %{user: user, conn: conn} do        new_header = %Plug.Upload{          content_type: "image/jpeg", @@ -278,6 +306,32 @@ defmodule Pleroma.Web.MastodonAPI.UpdateCredentialsTest do        assert user.banner == nil      end +    test "updates the user's banner, upload_limit, returns a HTTP 413", %{conn: conn, user: user} do +      upload_limit = Config.get([:instance, :upload_limit]) * 8 + 8 + +      assert :ok == +               File.write(Path.absname("test/tmp/large_binary.data"), <<0::size(upload_limit)>>) + +      new_header_oversized = %Plug.Upload{ +        content_type: nil, +        path: Path.absname("test/tmp/large_binary.data"), +        filename: "large_binary.data" +      } + +      res = +        patch(conn, "/api/v1/accounts/update_credentials", %{"header" => new_header_oversized}) + +      assert user_response = json_response_and_validate_schema(res, 413) +      assert user_response["header"] != User.banner_url(user) + +      user = User.get_by_id(user.id) +      assert user.banner == %{} + +      clear_config([:instance, :upload_limit], upload_limit) + +      assert :ok == File.rm(Path.absname("test/tmp/large_binary.data")) +    end +      test "updates the user's background", %{conn: conn, user: user} do        new_header = %Plug.Upload{          content_type: "image/jpeg", @@ -301,6 +355,34 @@ defmodule Pleroma.Web.MastodonAPI.UpdateCredentialsTest do        assert user.background == nil      end +    test "updates the user's background, upload_limit, returns a HTTP 413", %{ +      conn: conn, +      user: user +    } do +      upload_limit = Config.get([:instance, :upload_limit]) * 8 + 8 + +      assert :ok == +               File.write(Path.absname("test/tmp/large_binary.data"), <<0::size(upload_limit)>>) + +      new_background_oversized = %Plug.Upload{ +        content_type: nil, +        path: Path.absname("test/tmp/large_binary.data"), +        filename: "large_binary.data" +      } + +      res = +        patch(conn, "/api/v1/accounts/update_credentials", %{ +          "pleroma_background_image" => new_background_oversized +        }) + +      assert user_response = json_response_and_validate_schema(res, 413) +      assert user.background == %{} + +      clear_config([:instance, :upload_limit], upload_limit) + +      assert :ok == File.rm(Path.absname("test/tmp/large_binary.data")) +    end +      test "requires 'write:accounts' permission" do        token1 = insert(:oauth_token, scopes: ["read"])        token2 = insert(:oauth_token, scopes: ["write", "follow"]) diff --git a/test/pleroma/web/metadata/providers/twitter_card_test.exs b/test/pleroma/web/metadata/providers/twitter_card_test.exs index 1a0cea9ce..be4cfbe7b 100644 --- a/test/pleroma/web/metadata/providers/twitter_card_test.exs +++ b/test/pleroma/web/metadata/providers/twitter_card_test.exs @@ -22,10 +22,10 @@ defmodule Pleroma.Web.Metadata.Providers.TwitterCardTest do      res = TwitterCard.build_tags(%{user: user})      assert res == [ -             {:meta, [property: "twitter:title", content: Utils.user_name_string(user)], []}, -             {:meta, [property: "twitter:description", content: "born 19 March 1994"], []}, -             {:meta, [property: "twitter:image", content: avatar_url], []}, -             {:meta, [property: "twitter:card", content: "summary"], []} +             {:meta, [name: "twitter:title", content: Utils.user_name_string(user)], []}, +             {:meta, [name: "twitter:description", content: "born 19 March 1994"], []}, +             {:meta, [name: "twitter:image", content: avatar_url], []}, +             {:meta, [name: "twitter:card", content: "summary"], []}             ]    end @@ -47,11 +47,11 @@ defmodule Pleroma.Web.Metadata.Providers.TwitterCardTest do      result = TwitterCard.build_tags(%{object: note, user: user, activity_id: activity.id})      assert [ -             {:meta, [property: "twitter:title", content: Utils.user_name_string(user)], []}, -             {:meta, [property: "twitter:description", content: "pleroma in a nutshell"], []}, -             {:meta, [property: "twitter:image", content: "http://localhost:4001/images/avi.png"], +             {:meta, [name: "twitter:title", content: Utils.user_name_string(user)], []}, +             {:meta, [name: "twitter:description", content: "pleroma in a nutshell"], []}, +             {:meta, [name: "twitter:image", content: "http://localhost:4001/images/avi.png"],                []}, -             {:meta, [property: "twitter:card", content: "summary"], []} +             {:meta, [name: "twitter:card", content: "summary"], []}             ] == result    end @@ -73,15 +73,15 @@ defmodule Pleroma.Web.Metadata.Providers.TwitterCardTest do      result = TwitterCard.build_tags(%{object: note, user: user, activity_id: activity.id})      assert [ -             {:meta, [property: "twitter:title", content: Utils.user_name_string(user)], []}, +             {:meta, [name: "twitter:title", content: Utils.user_name_string(user)], []},               {:meta,                [ -                property: "twitter:description", +                name: "twitter:description",                  content: "Public service announcement on caffeine consumption"                ], []}, -             {:meta, [property: "twitter:image", content: "http://localhost:4001/images/avi.png"], +             {:meta, [name: "twitter:image", content: "http://localhost:4001/images/avi.png"],                []}, -             {:meta, [property: "twitter:card", content: "summary"], []} +             {:meta, [name: "twitter:card", content: "summary"], []}             ] == result    end @@ -123,11 +123,11 @@ defmodule Pleroma.Web.Metadata.Providers.TwitterCardTest do      result = TwitterCard.build_tags(%{object: note, user: user, activity_id: activity.id})      assert [ -             {:meta, [property: "twitter:title", content: Utils.user_name_string(user)], []}, -             {:meta, [property: "twitter:description", content: "pleroma in a nutshell"], []}, -             {:meta, [property: "twitter:image", content: "http://localhost:4001/images/avi.png"], +             {:meta, [name: "twitter:title", content: Utils.user_name_string(user)], []}, +             {:meta, [name: "twitter:description", content: "pleroma in a nutshell"], []}, +             {:meta, [name: "twitter:image", content: "http://localhost:4001/images/avi.png"],                []}, -             {:meta, [property: "twitter:card", content: "summary"], []} +             {:meta, [name: "twitter:card", content: "summary"], []}             ] == result    end @@ -179,26 +179,26 @@ defmodule Pleroma.Web.Metadata.Providers.TwitterCardTest do      result = TwitterCard.build_tags(%{object: note, user: user, activity_id: activity.id})      assert [ -             {:meta, [property: "twitter:title", content: Utils.user_name_string(user)], []}, -             {:meta, [property: "twitter:description", content: "pleroma in a nutshell"], []}, -             {:meta, [property: "twitter:card", content: "summary_large_image"], []}, -             {:meta, [property: "twitter:player", content: "https://pleroma.gov/tenshi.png"], []}, -             {:meta, [property: "twitter:player:width", content: "1280"], []}, -             {:meta, [property: "twitter:player:height", content: "1024"], []}, -             {:meta, [property: "twitter:card", content: "player"], []}, +             {:meta, [name: "twitter:title", content: Utils.user_name_string(user)], []}, +             {:meta, [name: "twitter:description", content: "pleroma in a nutshell"], []}, +             {:meta, [name: "twitter:card", content: "summary_large_image"], []}, +             {:meta, [name: "twitter:player", content: "https://pleroma.gov/tenshi.png"], []}, +             {:meta, [name: "twitter:player:width", content: "1280"], []}, +             {:meta, [name: "twitter:player:height", content: "1024"], []}, +             {:meta, [name: "twitter:card", content: "player"], []},               {:meta,                [ -                property: "twitter:player", +                name: "twitter:player",                  content: Router.Helpers.o_status_url(Endpoint, :notice_player, activity.id)                ], []}, -             {:meta, [property: "twitter:player:width", content: "800"], []}, -             {:meta, [property: "twitter:player:height", content: "600"], []}, +             {:meta, [name: "twitter:player:width", content: "800"], []}, +             {:meta, [name: "twitter:player:height", content: "600"], []},               {:meta,                [ -                property: "twitter:player:stream", +                name: "twitter:player:stream",                  content: "https://pleroma.gov/about/juche.webm"                ], []}, -             {:meta, [property: "twitter:player:stream:content_type", content: "video/webm"], []} +             {:meta, [name: "twitter:player:stream:content_type", content: "video/webm"], []}             ] == result    end  end  | 
