update tests
This commit is contained in:
parent
6062017493
commit
654d291b6d
|
@ -22,13 +22,7 @@ def follow(target_instance) do
|
||||||
Logger.info("relay: followed instance: #{target_instance}; id=#{activity.data["id"]}")
|
Logger.info("relay: followed instance: #{target_instance}; id=#{activity.data["id"]}")
|
||||||
{:ok, activity}
|
{:ok, activity}
|
||||||
else
|
else
|
||||||
{:error, _} = error ->
|
error -> format_error(error)
|
||||||
Logger.error("error: #{inspect(error)}")
|
|
||||||
error
|
|
||||||
|
|
||||||
e ->
|
|
||||||
Logger.error("error: #{inspect(e)}")
|
|
||||||
{:error, e}
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -41,13 +35,7 @@ def unfollow(target_instance) do
|
||||||
Logger.info("relay: unfollowed instance: #{target_instance}: id=#{activity.data["id"]}")
|
Logger.info("relay: unfollowed instance: #{target_instance}: id=#{activity.data["id"]}")
|
||||||
{:ok, activity}
|
{:ok, activity}
|
||||||
else
|
else
|
||||||
{:error, _} = error ->
|
error -> format_error(error)
|
||||||
Logger.error("error: #{inspect(error)}")
|
|
||||||
error
|
|
||||||
|
|
||||||
e ->
|
|
||||||
Logger.error("error: #{inspect(e)}")
|
|
||||||
{:error, e}
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -57,11 +45,16 @@ def publish(%Activity{data: %{"type" => "Create"}} = activity) do
|
||||||
%Object{} = object <- Object.normalize(activity) do
|
%Object{} = object <- Object.normalize(activity) do
|
||||||
ActivityPub.announce(user, object, nil, true, false)
|
ActivityPub.announce(user, object, nil, true, false)
|
||||||
else
|
else
|
||||||
e ->
|
error -> format_error(error)
|
||||||
Logger.error("error: #{inspect(e)}")
|
|
||||||
{:error, inspect(e)}
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def publish(_), do: {:error, "Not implemented"}
|
def publish(_), do: {:error, "Not implemented"}
|
||||||
|
|
||||||
|
defp format_error({:error, error}), do: format_error(error)
|
||||||
|
|
||||||
|
defp format_error(error) do
|
||||||
|
Logger.error("error: #{inspect(error)}")
|
||||||
|
{:error, error}
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -11,6 +11,7 @@ defmodule Pleroma.Web.ActivityPub.RelayTest do
|
||||||
alias Pleroma.Web.ActivityPub.Relay
|
alias Pleroma.Web.ActivityPub.Relay
|
||||||
|
|
||||||
import Pleroma.Factory
|
import Pleroma.Factory
|
||||||
|
import Mock
|
||||||
|
|
||||||
test "gets an actor for the relay" do
|
test "gets an actor for the relay" do
|
||||||
user = Relay.get_actor()
|
user = Relay.get_actor()
|
||||||
|
@ -56,6 +57,8 @@ test "returns activity" do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "publish/1" do
|
describe "publish/1" do
|
||||||
|
clear_config([:instance, :federating])
|
||||||
|
|
||||||
test "returns error when activity not `Create` type" do
|
test "returns error when activity not `Create` type" do
|
||||||
activity = insert(:like_activity)
|
activity = insert(:like_activity)
|
||||||
assert Relay.publish(activity) == {:error, "Not implemented"}
|
assert Relay.publish(activity) == {:error, "Not implemented"}
|
||||||
|
@ -66,13 +69,44 @@ test "returns error when activity not public" do
|
||||||
assert Relay.publish(activity) == {:error, false}
|
assert Relay.publish(activity) == {:error, false}
|
||||||
end
|
end
|
||||||
|
|
||||||
test "returns announce activity" do
|
test "returns error when object is unknown" do
|
||||||
|
activity =
|
||||||
|
insert(:note_activity,
|
||||||
|
data: %{
|
||||||
|
"type" => "Create",
|
||||||
|
"object" => "http://mastodon.example.org/eee/99541947525187367"
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
assert Relay.publish(activity) == {:error, nil}
|
||||||
|
end
|
||||||
|
|
||||||
|
test_with_mock "returns announce activity and publish to federate",
|
||||||
|
Pleroma.Web.Federator,
|
||||||
|
[:passthrough],
|
||||||
|
[] do
|
||||||
|
Pleroma.Config.put([:instance, :federating], true)
|
||||||
service_actor = Relay.get_actor()
|
service_actor = Relay.get_actor()
|
||||||
note = insert(:note_activity)
|
note = insert(:note_activity)
|
||||||
assert {:ok, %Activity{} = activity, %Object{} = obj} = Relay.publish(note)
|
assert {:ok, %Activity{} = activity, %Object{} = obj} = Relay.publish(note)
|
||||||
assert activity.data["type"] == "Announce"
|
assert activity.data["type"] == "Announce"
|
||||||
assert activity.data["actor"] == service_actor.ap_id
|
assert activity.data["actor"] == service_actor.ap_id
|
||||||
assert activity.data["object"] == obj.data["id"]
|
assert activity.data["object"] == obj.data["id"]
|
||||||
|
assert called(Pleroma.Web.Federator.publish(activity, 5))
|
||||||
|
end
|
||||||
|
|
||||||
|
test_with_mock "returns announce activity and not publish to federate",
|
||||||
|
Pleroma.Web.Federator,
|
||||||
|
[:passthrough],
|
||||||
|
[] do
|
||||||
|
Pleroma.Config.put([:instance, :federating], false)
|
||||||
|
service_actor = Relay.get_actor()
|
||||||
|
note = insert(:note_activity)
|
||||||
|
assert {:ok, %Activity{} = activity, %Object{} = obj} = Relay.publish(note)
|
||||||
|
assert activity.data["type"] == "Announce"
|
||||||
|
assert activity.data["actor"] == service_actor.ap_id
|
||||||
|
assert activity.data["object"] == obj.data["id"]
|
||||||
|
refute called(Pleroma.Web.Federator.publish(activity, 5))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue