diff options
| -rw-r--r-- | test/pleroma/user_test.exs | 102 | ||||
| -rw-r--r-- | test/pleroma/web/web_finger/web_finger_controller_test.exs | 2 | ||||
| -rw-r--r-- | test/support/http_request_mock.ex | 171 | 
3 files changed, 178 insertions, 97 deletions
| diff --git a/test/pleroma/user_test.exs b/test/pleroma/user_test.exs index f64299370..b1ff52768 100644 --- a/test/pleroma/user_test.exs +++ b/test/pleroma/user_test.exs @@ -872,109 +872,19 @@ defmodule Pleroma.UserTest do      setup do: clear_config([Pleroma.Web.WebFinger, :update_nickname_on_user_fetch], true)      test "for mastodon" do -      Tesla.Mock.mock_global(fn -        %{url: "https://example.com/.well-known/host-meta"} -> -          %Tesla.Env{ -            status: 302, -            headers: [{"location", "https://sub.example.com/.well-known/host-meta"}] -          } - -        %{url: "https://sub.example.com/.well-known/host-meta"} -> -          %Tesla.Env{ -            status: 200, -            body: -              "test/fixtures/webfinger/masto-host-meta.xml" -              |> File.read!() -              |> String.replace("{{domain}}", "sub.example.com") -          } - -        %{url: "https://sub.example.com/.well-known/webfinger?resource=acct:a@example.com"} -> -          %Tesla.Env{ -            status: 200, -            body: -              "test/fixtures/webfinger/masto-webfinger.json" -              |> File.read!() -              |> String.replace("{{nickname}}", "a") -              |> String.replace("{{domain}}", "example.com") -              |> String.replace("{{subdomain}}", "sub.example.com"), -            headers: [{"content-type", "application/jrd+json"}] -          } - -        %{url: "https://sub.example.com/users/a"} -> -          %Tesla.Env{ -            status: 200, -            body: -              "test/fixtures/webfinger/masto-user.json" -              |> File.read!() -              |> String.replace("{{nickname}}", "a") -              |> String.replace("{{domain}}", "sub.example.com"), -            headers: [{"content-type", "application/activity+json"}] -          } - -        %{url: "https://sub.example.com/users/a/collections/featured"} -> -          %Tesla.Env{ -            status: 200, -            body: -              File.read!("test/fixtures/users_mock/masto_featured.json") -              |> String.replace("{{domain}}", "sub.example.com") -              |> String.replace("{{nickname}}", "a"), -            headers: [{"content-type", "application/activity+json"}] -          } -      end) - -      ap_id = "a@example.com" +      ap_id = "a@mastodon.example"        {:ok, fetched_user} = User.get_or_fetch(ap_id) -      assert fetched_user.ap_id == "https://sub.example.com/users/a" -      assert fetched_user.nickname == "a@example.com" +      assert fetched_user.ap_id == "https://sub.mastodon.example/users/a" +      assert fetched_user.nickname == "a@mastodon.example"      end      test "for pleroma" do -      Tesla.Mock.mock_global(fn -        %{url: "https://example.com/.well-known/host-meta"} -> -          %Tesla.Env{ -            status: 302, -            headers: [{"location", "https://sub.example.com/.well-known/host-meta"}] -          } - -        %{url: "https://sub.example.com/.well-known/host-meta"} -> -          %Tesla.Env{ -            status: 200, -            body: -              "test/fixtures/webfinger/pleroma-host-meta.xml" -              |> File.read!() -              |> String.replace("{{domain}}", "sub.example.com") -          } - -        %{url: "https://sub.example.com/.well-known/webfinger?resource=acct:a@example.com"} -> -          %Tesla.Env{ -            status: 200, -            body: -              "test/fixtures/webfinger/pleroma-webfinger.json" -              |> File.read!() -              |> String.replace("{{nickname}}", "a") -              |> String.replace("{{domain}}", "example.com") -              |> String.replace("{{subdomain}}", "sub.example.com"), -            headers: [{"content-type", "application/jrd+json"}] -          } - -        %{url: "https://sub.example.com/users/a"} -> -          %Tesla.Env{ -            status: 200, -            body: -              "test/fixtures/webfinger/pleroma-user.json" -              |> File.read!() -              |> String.replace("{{nickname}}", "a") -              |> String.replace("{{domain}}", "sub.example.com"), -            headers: [{"content-type", "application/activity+json"}] -          } -      end) - -      ap_id = "a@example.com" +      ap_id = "a@pleroma.example"        {:ok, fetched_user} = User.get_or_fetch(ap_id) -      assert fetched_user.ap_id == "https://sub.example.com/users/a" -      assert fetched_user.nickname == "a@example.com" +      assert fetched_user.ap_id == "https://sub.pleroma.example/users/a" +      assert fetched_user.nickname == "a@pleroma.example"      end    end diff --git a/test/pleroma/web/web_finger/web_finger_controller_test.exs b/test/pleroma/web/web_finger/web_finger_controller_test.exs index 5e3ac26f9..e01cec5e4 100644 --- a/test/pleroma/web/web_finger/web_finger_controller_test.exs +++ b/test/pleroma/web/web_finger/web_finger_controller_test.exs @@ -48,7 +48,7 @@ defmodule Pleroma.Web.WebFinger.WebFingerControllerTest do             ]    end -  test "reach user on tld, while pleroma is runned on subdomain" do +  test "reach user on tld, while pleroma is running on subdomain" do      Pleroma.Web.Endpoint.config_change(        [{Pleroma.Web.Endpoint, url: [host: "sub.example.com"]}],        [] diff --git a/test/support/http_request_mock.ex b/test/support/http_request_mock.ex index 78a367024..82d8c38d7 100644 --- a/test/support/http_request_mock.ex +++ b/test/support/http_request_mock.ex @@ -1464,6 +1464,177 @@ defmodule HttpRequestMock do       }}    end +  def get("https://google.com/", _, _, _) do +    {:ok, %Tesla.Env{status: 200, body: File.read!("test/fixtures/rich_media/google.html")}} +  end + +  def get("https://yahoo.com/", _, _, _) do +    {:ok, %Tesla.Env{status: 200, body: File.read!("test/fixtures/rich_media/yahoo.html")}} +  end + +  def get("https://example.com/error", _, _, _), do: {:error, :overload} + +  def get("https://example.com/ogp-missing-title", _, _, _) do +    {:ok, +     %Tesla.Env{ +       status: 200, +       body: File.read!("test/fixtures/rich_media/ogp-missing-title.html") +     }} +  end + +  def get("https://example.com/oembed", _, _, _) do +    {:ok, %Tesla.Env{status: 200, body: File.read!("test/fixtures/rich_media/oembed.html")}} +  end + +  def get("https://example.com/oembed.json", _, _, _) do +    {:ok, %Tesla.Env{status: 200, body: File.read!("test/fixtures/rich_media/oembed.json")}} +  end + +  def get("https://example.com/twitter-card", _, _, _) do +    {:ok, %Tesla.Env{status: 200, body: File.read!("test/fixtures/rich_media/twitter_card.html")}} +  end + +  def get("https://example.com/non-ogp", _, _, _) do +    {:ok, +     %Tesla.Env{status: 200, body: File.read!("test/fixtures/rich_media/non_ogp_embed.html")}} +  end + +  def get("https://example.com/empty", _, _, _) do +    {:ok, %Tesla.Env{status: 200, body: "hello"}} +  end + +  def get("https://friends.grishka.me/posts/54642", _, _, _) do +    {:ok, +     %Tesla.Env{ +       status: 200, +       body: File.read!("test/fixtures/tesla_mock/smithereen_non_anonymous_poll.json"), +       headers: activitypub_object_headers() +     }} +  end + +  def get("https://friends.grishka.me/users/1", _, _, _) do +    {:ok, +     %Tesla.Env{ +       status: 200, +       body: File.read!("test/fixtures/tesla_mock/smithereen_user.json"), +       headers: activitypub_object_headers() +     }} +  end + +  def get("https://mastodon.example/.well-known/host-meta", _, _, _) do +    {:ok, +     %Tesla.Env{ +       status: 302, +       headers: [{"location", "https://sub.mastodon.example/.well-known/host-meta"}] +     }} +  end + +  def get("https://sub.mastodon.example/.well-known/host-meta", _, _, _) do +    {:ok, +     %Tesla.Env{ +       status: 200, +       body: +         "test/fixtures/webfinger/masto-host-meta.xml" +         |> File.read!() +         |> String.replace("{{domain}}", "sub.mastodon.example") +     }} +  end + +  def get( +        "https://sub.mastodon.example/.well-known/webfinger?resource=acct:a@mastodon.example", +        _, +        _, +        _ +      ) do +    {:ok, +     %Tesla.Env{ +       status: 200, +       body: +         "test/fixtures/webfinger/masto-webfinger.json" +         |> File.read!() +         |> String.replace("{{nickname}}", "a") +         |> String.replace("{{domain}}", "mastodon.example") +         |> String.replace("{{subdomain}}", "sub.mastodon.example"), +       headers: [{"content-type", "application/jrd+json"}] +     }} +  end + +  def get("https://sub.mastodon.example/users/a", _, _, _) do +    {:ok, +     %Tesla.Env{ +       status: 200, +       body: +         "test/fixtures/webfinger/masto-user.json" +         |> File.read!() +         |> String.replace("{{nickname}}", "a") +         |> String.replace("{{domain}}", "sub.mastodon.example"), +       headers: [{"content-type", "application/activity+json"}] +     }} +  end + +  def get("https://sub.mastodon.example/users/a/collections/featured", _, _, _) do +    {:ok, +     %Tesla.Env{ +       status: 200, +       body: +         File.read!("test/fixtures/users_mock/masto_featured.json") +         |> String.replace("{{domain}}", "sub.mastodon.example") +         |> String.replace("{{nickname}}", "a"), +       headers: [{"content-type", "application/activity+json"}] +     }} +  end + +  def get("https://pleroma.example/.well-known/host-meta", _, _, _) do +    {:ok, +     %Tesla.Env{ +       status: 302, +       headers: [{"location", "https://sub.pleroma.example/.well-known/host-meta"}] +     }} +  end + +  def get("https://sub.pleroma.example/.well-known/host-meta", _, _, _) do +    {:ok, +     %Tesla.Env{ +       status: 200, +       body: +         "test/fixtures/webfinger/pleroma-host-meta.xml" +         |> File.read!() +         |> String.replace("{{domain}}", "sub.pleroma.example") +     }} +  end + +  def get( +        "https://sub.pleroma.example/.well-known/webfinger?resource=acct:a@pleroma.example", +        _, +        _, +        _ +      ) do +    {:ok, +     %Tesla.Env{ +       status: 200, +       body: +         "test/fixtures/webfinger/pleroma-webfinger.json" +         |> File.read!() +         |> String.replace("{{nickname}}", "a") +         |> String.replace("{{domain}}", "pleroma.example") +         |> String.replace("{{subdomain}}", "sub.pleroma.example"), +       headers: [{"content-type", "application/jrd+json"}] +     }} +  end + +  def get("https://sub.pleroma.example/users/a", _, _, _) do +    {:ok, +     %Tesla.Env{ +       status: 200, +       body: +         "test/fixtures/webfinger/pleroma-user.json" +         |> File.read!() +         |> String.replace("{{nickname}}", "a") +         |> String.replace("{{domain}}", "sub.pleroma.example"), +       headers: [{"content-type", "application/activity+json"}] +     }} +  end +    def get(url, query, body, headers) do      {:error,       "Mock response not implemented for GET #{inspect(url)}, #{query}, #{inspect(body)}, #{inspect(headers)}"} | 
