diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/http/ex_aws_test.exs | 54 | ||||
| -rw-r--r-- | test/plugs/instance_static_test.exs | 2 | ||||
| -rw-r--r-- | test/user_test.exs | 10 | ||||
| -rw-r--r-- | test/web/fallback_test.exs | 68 | ||||
| -rw-r--r-- | test/web/preload/instance_test.exs | 37 | ||||
| -rw-r--r-- | test/web/preload/status_net_test.exs | 14 | ||||
| -rw-r--r-- | test/web/preload/timeline_test.exs | 74 | ||||
| -rw-r--r-- | test/web/preload/user_test.exs | 33 | 
8 files changed, 269 insertions, 23 deletions
| diff --git a/test/http/ex_aws_test.exs b/test/http/ex_aws_test.exs new file mode 100644 index 000000000..d0b00ca26 --- /dev/null +++ b/test/http/ex_aws_test.exs @@ -0,0 +1,54 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.HTTP.ExAwsTest do +  use ExUnit.Case + +  import Tesla.Mock +  alias Pleroma.HTTP + +  @url "https://s3.amazonaws.com/test_bucket/test_image.jpg" + +  setup do +    mock(fn +      %{method: :get, url: @url, headers: [{"x-amz-bucket-region", "us-east-1"}]} -> +        %Tesla.Env{ +          status: 200, +          body: "image-content", +          headers: [{"x-amz-bucket-region", "us-east-1"}] +        } + +      %{method: :post, url: @url, body: "image-content-2"} -> +        %Tesla.Env{status: 200, body: "image-content-2"} +    end) + +    :ok +  end + +  describe "request" do +    test "get" do +      assert HTTP.ExAws.request(:get, @url, "", [{"x-amz-bucket-region", "us-east-1"}]) == { +               :ok, +               %{ +                 body: "image-content", +                 headers: [{"x-amz-bucket-region", "us-east-1"}], +                 status_code: 200 +               } +             } +    end + +    test "post" do +      assert HTTP.ExAws.request(:post, @url, "image-content-2", [ +               {"x-amz-bucket-region", "us-east-1"} +             ]) == { +               :ok, +               %{ +                 body: "image-content-2", +                 headers: [], +                 status_code: 200 +               } +             } +    end +  end +end diff --git a/test/plugs/instance_static_test.exs b/test/plugs/instance_static_test.exs index b8f070d6a..be2613ad0 100644 --- a/test/plugs/instance_static_test.exs +++ b/test/plugs/instance_static_test.exs @@ -16,7 +16,7 @@ defmodule Pleroma.Web.RuntimeStaticPlugTest do    test "overrides index" do      bundled_index = get(build_conn(), "/") -    assert html_response(bundled_index, 200) == File.read!("priv/static/index.html") +    refute html_response(bundled_index, 200) == "hello world"      File.write!(@dir <> "/index.html", "hello world") diff --git a/test/user_test.exs b/test/user_test.exs index 311b6c683..9b66f3f51 100644 --- a/test/user_test.exs +++ b/test/user_test.exs @@ -199,6 +199,16 @@ defmodule Pleroma.UserTest do      assert [^pending_follower] = User.get_follow_requests(locked)    end +  test "doesn't return follow requests for deactivated accounts" do +    locked = insert(:user, locked: true) +    pending_follower = insert(:user, %{deactivated: true}) + +    CommonAPI.follow(pending_follower, locked) + +    assert true == pending_follower.deactivated +    assert [] = User.get_follow_requests(locked) +  end +    test "clears follow requests when requester is blocked" do      followed = insert(:user, locked: true)      follower = insert(:user) diff --git a/test/web/fallback_test.exs b/test/web/fallback_test.exs index 3919ef93a..a65865860 100644 --- a/test/web/fallback_test.exs +++ b/test/web/fallback_test.exs @@ -6,22 +6,56 @@ defmodule Pleroma.Web.FallbackTest do    use Pleroma.Web.ConnCase    import Pleroma.Factory -  test "GET /registration/:token", %{conn: conn} do -    assert conn -           |> get("/registration/foo") -           |> html_response(200) =~ "<!--server-generated-meta-->" +  describe "neither preloaded data nor metadata attached to" do +    test "GET /registration/:token", %{conn: conn} do +      response = get(conn, "/registration/foo") + +      assert html_response(response, 200) =~ "<!--server-generated-meta-->" +    end + +    test "GET /*path", %{conn: conn} do +      assert conn +             |> get("/foo") +             |> html_response(200) =~ "<!--server-generated-meta-->" +    end    end -  test "GET /:maybe_nickname_or_id", %{conn: conn} do -    user = insert(:user) +  describe "preloaded data and metadata attached to" do +    test "GET /:maybe_nickname_or_id", %{conn: conn} do +      user = insert(:user) +      user_missing = get(conn, "/foo") +      user_present = get(conn, "/#{user.nickname}") -    assert conn -           |> get("/foo") -           |> html_response(200) =~ "<!--server-generated-meta-->" +      assert(html_response(user_missing, 200) =~ "<!--server-generated-meta-->") +      refute html_response(user_present, 200) =~ "<!--server-generated-meta-->" +      assert html_response(user_present, 200) =~ "initial-results" +    end -    refute conn -           |> get("/" <> user.nickname) -           |> html_response(200) =~ "<!--server-generated-meta-->" +    test "GET /*path", %{conn: conn} do +      assert conn +             |> get("/foo") +             |> html_response(200) =~ "<!--server-generated-meta-->" + +      refute conn +             |> get("/foo/bar") +             |> html_response(200) =~ "<!--server-generated-meta-->" +    end +  end + +  describe "preloaded data is attached to" do +    test "GET /main/public", %{conn: conn} do +      public_page = get(conn, "/main/public") + +      refute html_response(public_page, 200) =~ "<!--server-generated-meta-->" +      assert html_response(public_page, 200) =~ "initial-results" +    end + +    test "GET /main/all", %{conn: conn} do +      public_page = get(conn, "/main/all") + +      refute html_response(public_page, 200) =~ "<!--server-generated-meta-->" +      assert html_response(public_page, 200) =~ "initial-results" +    end    end    test "GET /api*path", %{conn: conn} do @@ -34,16 +68,6 @@ defmodule Pleroma.Web.FallbackTest do      assert redirected_to(get(conn, "/pleroma/admin")) =~ "/pleroma/admin/"    end -  test "GET /*path", %{conn: conn} do -    assert conn -           |> get("/foo") -           |> html_response(200) =~ "<!--server-generated-meta-->" - -    assert conn -           |> get("/foo/bar") -           |> html_response(200) =~ "<!--server-generated-meta-->" -  end -    test "OPTIONS /*path", %{conn: conn} do      assert conn             |> options("/foo") diff --git a/test/web/preload/instance_test.exs b/test/web/preload/instance_test.exs new file mode 100644 index 000000000..42a0d87bc --- /dev/null +++ b/test/web/preload/instance_test.exs @@ -0,0 +1,37 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.Preload.Providers.InstanceTest do +  use Pleroma.DataCase +  alias Pleroma.Web.Preload.Providers.Instance + +  setup do: {:ok, Instance.generate_terms(nil)} + +  test "it renders the info", %{"/api/v1/instance": info} do +    assert %{ +             description: description, +             email: "admin@example.com", +             registrations: true +           } = info + +    assert String.equivalent?(description, "Pleroma: An efficient and flexible fediverse server") +  end + +  test "it renders the panel", %{"/instance/panel.html": panel} do +    assert String.contains?( +             panel, +             "<p>Welcome to <a href=\"https://pleroma.social\" target=\"_blank\">Pleroma!</a></p>" +           ) +  end + +  test "it renders the node_info", %{"/nodeinfo/2.0": nodeinfo} do +    %{ +      metadata: metadata, +      version: "2.0" +    } = nodeinfo + +    assert metadata.private == false +    assert metadata.suggestions == %{enabled: false} +  end +end diff --git a/test/web/preload/status_net_test.exs b/test/web/preload/status_net_test.exs new file mode 100644 index 000000000..ab6823a7e --- /dev/null +++ b/test/web/preload/status_net_test.exs @@ -0,0 +1,14 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.Preload.Providers.StatusNetTest do +  use Pleroma.DataCase +  alias Pleroma.Web.Preload.Providers.StatusNet + +  setup do: {:ok, StatusNet.generate_terms(nil)} + +  test "it renders the info", %{"/api/statusnet/config.json": info} do +    assert info =~ "<name>Pleroma</name>" +  end +end diff --git a/test/web/preload/timeline_test.exs b/test/web/preload/timeline_test.exs new file mode 100644 index 000000000..da6a3aded --- /dev/null +++ b/test/web/preload/timeline_test.exs @@ -0,0 +1,74 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.Preload.Providers.TimelineTest do +  use Pleroma.DataCase +  import Pleroma.Factory + +  alias Pleroma.Web.CommonAPI +  alias Pleroma.Web.Preload.Providers.Timelines + +  @public_url :"/api/v1/timelines/public" + +  describe "unauthenticated timeliness when restricted" do +    setup do +      svd_config = Pleroma.Config.get([:restrict_unauthenticated, :timelines]) +      Pleroma.Config.put([:restrict_unauthenticated, :timelines], %{local: true, federated: true}) + +      on_exit(fn -> +        Pleroma.Config.put([:restrict_unauthenticated, :timelines], svd_config) +      end) + +      :ok +    end + +    test "return nothing" do +      tl_data = Timelines.generate_terms(%{}) + +      refute Map.has_key?(tl_data, "/api/v1/timelines/public") +    end +  end + +  describe "unauthenticated timeliness when unrestricted" do +    setup do +      svd_config = Pleroma.Config.get([:restrict_unauthenticated, :timelines]) + +      Pleroma.Config.put([:restrict_unauthenticated, :timelines], %{ +        local: false, +        federated: false +      }) + +      on_exit(fn -> +        Pleroma.Config.put([:restrict_unauthenticated, :timelines], svd_config) +      end) + +      {:ok, user: insert(:user)} +    end + +    test "returns the timeline when not restricted" do +      assert Timelines.generate_terms(%{}) +             |> Map.has_key?(@public_url) +    end + +    test "returns public items", %{user: user} do +      {:ok, _} = CommonAPI.post(user, %{status: "it's post 1!"}) +      {:ok, _} = CommonAPI.post(user, %{status: "it's post 2!"}) +      {:ok, _} = CommonAPI.post(user, %{status: "it's post 3!"}) + +      assert Timelines.generate_terms(%{}) +             |> Map.fetch!(@public_url) +             |> Enum.count() == 3 +    end + +    test "does not return non-public items", %{user: user} do +      {:ok, _} = CommonAPI.post(user, %{status: "it's post 1!", visibility: "unlisted"}) +      {:ok, _} = CommonAPI.post(user, %{status: "it's post 2!", visibility: "direct"}) +      {:ok, _} = CommonAPI.post(user, %{status: "it's post 3!"}) + +      assert Timelines.generate_terms(%{}) +             |> Map.fetch!(@public_url) +             |> Enum.count() == 1 +    end +  end +end diff --git a/test/web/preload/user_test.exs b/test/web/preload/user_test.exs new file mode 100644 index 000000000..99232cdfa --- /dev/null +++ b/test/web/preload/user_test.exs @@ -0,0 +1,33 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.Preload.Providers.UserTest do +  use Pleroma.DataCase +  import Pleroma.Factory +  alias Pleroma.Web.Preload.Providers.User + +  describe "returns empty when user doesn't exist" do +    test "nil user specified" do +      refute User.generate_terms(%{user: nil}) +             |> Map.has_key?("/api/v1/accounts") +    end + +    test "missing user specified" do +      refute User.generate_terms(%{user: :not_a_user}) +             |> Map.has_key?("/api/v1/accounts") +    end +  end + +  describe "specified user exists" do +    setup do +      user = insert(:user) + +      {:ok, User.generate_terms(%{user: user})} +    end + +    test "account is rendered", %{"/api/v1/accounts": accounts} do +      assert %{acct: user, username: user} = accounts +    end +  end +end | 
