diff --git a/test/federation/node_info_test.exs b/test/federation/node_info_test.exs new file mode 100644 index 000000000..10a5c4b38 --- /dev/null +++ b/test/federation/node_info_test.exs @@ -0,0 +1,60 @@ +defmodule Mobilizon.Federation.NodeInfoTest do + use Mobilizon.DataCase + import Mox + + alias Mobilizon.Federation.NodeInfo + alias Mobilizon.Service.HTTP.WebfingerClient.Mock, as: WebfingerClientMock + + @instance_domain "event-federation.eu" + @nodeinfo_fixture_path "test/fixtures/nodeinfo/wp-event-federation.json" + @nodeinfo_regular_fixture_path "test/fixtures/nodeinfo/regular.json" + + describe "getting application actor" do + test "from wordpress event federation" do + nodeinfo_data = @nodeinfo_fixture_path |> File.read!() |> Jason.decode!() + + WebfingerClientMock + |> expect(:call, fn + %{ + method: :get, + url: "https://event-federation.eu/.well-known/nodeinfo" + }, + _opts -> + {:ok, %Tesla.Env{status: 200, body: nodeinfo_data}} + end) + + assert "https://event-federation.eu/actor-relay" == + NodeInfo.application_actor(@instance_domain) + end + + test "with no FEP-2677 information" do + nodeinfo_data = @nodeinfo_regular_fixture_path |> File.read!() |> Jason.decode!() + + WebfingerClientMock + |> expect(:call, fn + %{ + method: :get, + url: "https://event-federation.eu/.well-known/nodeinfo" + }, + _opts -> + {:ok, %Tesla.Env{status: 200, body: nodeinfo_data}} + end) + + assert nil == NodeInfo.application_actor(@instance_domain) + end + + test "with no result" do + WebfingerClientMock + |> expect(:call, fn + %{ + method: :get, + url: "https://event-federation.eu/.well-known/nodeinfo" + }, + _opts -> + {:ok, %Tesla.Env{status: 404, body: ""}} + end) + + assert nil == NodeInfo.application_actor(@instance_domain) + end + end +end diff --git a/test/fixtures/nodeinfo/regular.json b/test/fixtures/nodeinfo/regular.json new file mode 100644 index 000000000..f18dfcfab --- /dev/null +++ b/test/fixtures/nodeinfo/regular.json @@ -0,0 +1,8 @@ +{ + "links": [ + { + "rel": "http:\/\/nodeinfo.diaspora.software\/ns\/schema\/2.0", + "href": "https:\/\/event-federation.eu\/wp-json\/activitypub\/1.0\/nodeinfo" + } + ] +} \ No newline at end of file diff --git a/test/fixtures/nodeinfo/wp-event-federation.json b/test/fixtures/nodeinfo/wp-event-federation.json new file mode 100644 index 000000000..be64bcb71 --- /dev/null +++ b/test/fixtures/nodeinfo/wp-event-federation.json @@ -0,0 +1,12 @@ +{ + "links": [ + { + "rel": "http:\/\/nodeinfo.diaspora.software\/ns\/schema\/2.0", + "href": "https:\/\/event-federation.eu\/wp-json\/activitypub\/1.0\/nodeinfo" + }, + { + "rel": "https://www.w3.org/ns/activitystreams#Application", + "href": "https://event-federation.eu/actor-relay" + } + ] +} \ No newline at end of file