add missing tesla mocks
authorSteven Fuchs <steven.fuchs@dockyard.com>
Mon, 4 Nov 2019 15:18:32 +0000 (15:18 +0000)
committerlain <lain@soykaf.club>
Mon, 4 Nov 2019 15:18:32 +0000 (15:18 +0000)
lib/pleroma/web/rel_me.ex
test/support/http_request_mock.ex
test/web/rel_me_test.exs

index d376e2069fb370264c508bdf5a4bb302aaaf2467..16b1a53d2886df63a1fa3ce2354b85b53156aa6b 100644 (file)
@@ -25,13 +25,13 @@ defmodule Pleroma.Web.RelMe do
   def parse(_), do: {:error, "No URL provided"}
 
   defp parse_url(url) do
-    {:ok, %Tesla.Env{body: html}} = Pleroma.HTTP.get(url, [], adapter: @hackney_options)
-
-    data =
-      Floki.attribute(html, "link[rel~=me]", "href") ++
-        Floki.attribute(html, "a[rel~=me]", "href")
-
-    {:ok, data}
+    with {:ok, %Tesla.Env{body: html, status: status}} when status in 200..299 <-
+           Pleroma.HTTP.get(url, [], adapter: @hackney_options),
+         data <-
+           Floki.attribute(html, "link[rel~=me]", "href") ++
+             Floki.attribute(html, "a[rel~=me]", "href") do
+      {:ok, data}
+    end
   rescue
     e -> {:error, "Parsing error: #{inspect(e)}"}
   end
index eba22c40b1dabe5c3d09d46b00ed67a8b68423fb..965335e966bed52e72b7a0d90d69e59fc6ebcb37 100644 (file)
@@ -1183,6 +1183,30 @@ defmodule HttpRequestMock do
      }}
   end
 
+  def get("https://10.111.10.1/notice/9kCP7V", _, _, _) do
+    {:ok, %Tesla.Env{status: 200, body: ""}}
+  end
+
+  def get("https://172.16.32.40/notice/9kCP7V", _, _, _) do
+    {:ok, %Tesla.Env{status: 200, body: ""}}
+  end
+
+  def get("https://192.168.10.40/notice/9kCP7V", _, _, _) do
+    {:ok, %Tesla.Env{status: 200, body: ""}}
+  end
+
+  def get("https://www.patreon.com/posts/mastodon-2-9-and-28121681", _, _, _) do
+    {:ok, %Tesla.Env{status: 200, body: ""}}
+  end
+
+  def get("http://mastodon.example.org/@admin/99541947525187367", _, _, _) do
+    {:ok, %Tesla.Env{status: 200, body: File.read!("test/fixtures/mastodon-post-activity.json")}}
+  end
+
+  def get("https://info.pleroma.site/activity4.json", _, _, _) do
+    {:ok, %Tesla.Env{status: 500, body: "Error occurred"}}
+  end
+
   def get("http://example.com/rel_me/anchor", _, _, _) do
     {:ok, %Tesla.Env{status: 200, body: File.read!("test/fixtures/rel_me_anchor.html")}}
   end
@@ -1215,6 +1239,10 @@ defmodule HttpRequestMock do
     {:ok, %Tesla.Env{status: 200, body: File.read!("test/fixtures/tesla_mock/rin.json")}}
   end
 
+  def get("http://example.com/rel_me/error", _, _, _) do
+    {:ok, %Tesla.Env{status: 404, body: ""}}
+  end
+
   def get(url, query, body, headers) do
     {:error,
      "Mock response not implemented for GET #{inspect(url)}, #{query}, #{inspect(body)}, #{
index 2251fed1697b66724ac01d403047a7c65a1d68fd..77b5d5dc697024fdb1486fb36d765d0e9005d7ae 100644 (file)
@@ -14,7 +14,9 @@ defmodule Pleroma.Web.RelMeTest do
     hrefs = ["https://social.example.org/users/lain"]
 
     assert Pleroma.Web.RelMe.parse("http://example.com/rel_me/null") == {:ok, []}
-    assert {:error, _} = Pleroma.Web.RelMe.parse("http://example.com/rel_me/error")
+
+    assert {:ok, %Tesla.Env{status: 404}} =
+             Pleroma.Web.RelMe.parse("http://example.com/rel_me/error")
 
     assert Pleroma.Web.RelMe.parse("http://example.com/rel_me/link") == {:ok, hrefs}
     assert Pleroma.Web.RelMe.parse("http://example.com/rel_me/anchor") == {:ok, hrefs}