diff options
| author | stwf <steven.fuchs@dockyard.com> | 2020-05-12 11:08:00 -0400 | 
|---|---|---|
| committer | stwf <steven.fuchs@dockyard.com> | 2020-05-29 14:15:24 -0400 | 
| commit | d67b302810c53d92ace7c347c77eecc10be6bcd6 (patch) | |
| tree | d278d3be9def4c5c9492ad20c000188aef2fa3df /test | |
| parent | 219d2b3146ee72abc0bb8bd163c0ddcd986988fc (diff) | |
| download | pleroma-d67b302810c53d92ace7c347c77eecc10be6bcd6.tar.gz pleroma-d67b302810c53d92ace7c347c77eecc10be6bcd6.zip | |
preload data into index.html
Diffstat (limited to 'test')
| -rw-r--r-- | test/plugs/instance_static_test.exs | 2 | ||||
| -rw-r--r-- | test/web/fallback_test.exs | 38 | ||||
| -rw-r--r-- | test/web/preload/instance_test.exs | 37 | ||||
| -rw-r--r-- | test/web/preload/timeline_test.exs | 74 | ||||
| -rw-r--r-- | test/web/preload/user_test.exs | 33 | 
5 files changed, 171 insertions, 13 deletions
| 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/web/fallback_test.exs b/test/web/fallback_test.exs index 3919ef93a..3b7a51d5e 100644 --- a/test/web/fallback_test.exs +++ b/test/web/fallback_test.exs @@ -6,22 +6,36 @@ 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-->" +      assert html_response(response, 200) =~ "<!--server-generated-initial-data-->" +    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-->" -    refute conn -           |> get("/" <> user.nickname) -           |> html_response(200) =~ "<!--server-generated-meta-->" +      assert html_response(user_missing, 200) =~ "<!--server-generated-initial-data-->" +      refute html_response(user_present, 200) =~ "<!--server-generated-initial-data-->" +    end +  end + +  describe "preloaded data only attached to" do +    test "GET /*path", %{conn: conn} do +      public_page = get(conn, "/main/public") + +      assert html_response(public_page, 200) =~ "<!--server-generated-meta-->" +      refute html_response(public_page, 200) =~ "<!--server-generated-initial-data-->" +    end    end    test "GET /api*path", %{conn: conn} do diff --git a/test/web/preload/instance_test.exs b/test/web/preload/instance_test.exs new file mode 100644 index 000000000..52f9bab3b --- /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, "A Pleroma instance, an alternative 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/timeline_test.exs b/test/web/preload/timeline_test.exs new file mode 100644 index 000000000..00b10d0ab --- /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 | 
