diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/signature_test.exs | 14 | ||||
| -rw-r--r-- | test/tasks/relay_test.exs | 4 | ||||
| -rw-r--r-- | test/web/activity_pub/activity_pub_controller_test.exs | 29 | ||||
| -rw-r--r-- | test/web/activity_pub/relay_test.exs | 39 | 
4 files changed, 84 insertions, 2 deletions
| diff --git a/test/signature_test.exs b/test/signature_test.exs index 26337eaf9..d5bf63d7d 100644 --- a/test/signature_test.exs +++ b/test/signature_test.exs @@ -8,6 +8,7 @@ defmodule Pleroma.SignatureTest do    import ExUnit.CaptureLog    import Pleroma.Factory    import Tesla.Mock +  import Mock    alias Pleroma.Signature @@ -114,4 +115,17 @@ defmodule Pleroma.SignatureTest do                 "https://example.com/users/1234"      end    end + +  describe "signed_date" do +    test "it returns formatted current date" do +      with_mock(NaiveDateTime, utc_now: fn -> ~N[2019-08-23 18:11:24.822233] end) do +        assert Signature.signed_date() == "Fri, 23 Aug 2019 18:11:24 GMT" +      end +    end + +    test "it returns formatted date" do +      assert Signature.signed_date(~N[2019-08-23 08:11:24.822233]) == +               "Fri, 23 Aug 2019 08:11:24 GMT" +    end +  end  end diff --git a/test/tasks/relay_test.exs b/test/tasks/relay_test.exs index 0d341c8d6..7bde56606 100644 --- a/test/tasks/relay_test.exs +++ b/test/tasks/relay_test.exs @@ -50,7 +50,8 @@ defmodule Mix.Tasks.Pleroma.RelayTest do        %User{ap_id: follower_id} = local_user = Relay.get_actor()        target_user = User.get_cached_by_ap_id(target_instance)        follow_activity = Utils.fetch_latest_follow(local_user, target_user) - +      User.follow(local_user, target_user) +      assert "#{target_instance}/followers" in refresh_record(local_user).following        Mix.Tasks.Pleroma.Relay.run(["unfollow", target_instance])        cancelled_activity = Activity.get_by_ap_id(follow_activity.data["id"]) @@ -67,6 +68,7 @@ defmodule Mix.Tasks.Pleroma.RelayTest do        assert undo_activity.data["type"] == "Undo"        assert undo_activity.data["actor"] == local_user.ap_id        assert undo_activity.data["object"] == cancelled_activity.data +      refute "#{target_instance}/followers" in refresh_record(local_user).following      end    end diff --git a/test/web/activity_pub/activity_pub_controller_test.exs b/test/web/activity_pub/activity_pub_controller_test.exs index 77f5e39fa..5192e734f 100644 --- a/test/web/activity_pub/activity_pub_controller_test.exs +++ b/test/web/activity_pub/activity_pub_controller_test.exs @@ -10,6 +10,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do    alias Pleroma.Object    alias Pleroma.User    alias Pleroma.Web.ActivityPub.ObjectView +  alias Pleroma.Web.ActivityPub.Relay    alias Pleroma.Web.ActivityPub.UserView    alias Pleroma.Web.ActivityPub.Utils    alias Pleroma.Web.CommonAPI @@ -593,6 +594,34 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do      end    end +  describe "/relay/followers" do +    test "it returns relay followers", %{conn: conn} do +      relay_actor = Relay.get_actor() +      user = insert(:user) +      User.follow(user, relay_actor) + +      result = +        conn +        |> assign(:relay, true) +        |> get("/relay/followers") +        |> json_response(200) + +      assert result["first"]["orderedItems"] == [user.ap_id] +    end +  end + +  describe "/relay/following" do +    test "it returns relay following", %{conn: conn} do +      result = +        conn +        |> assign(:relay, true) +        |> get("/relay/following") +        |> json_response(200) + +      assert result["first"]["orderedItems"] == [] +    end +  end +    describe "/users/:nickname/followers" do      test "it returns the followers in a collection", %{conn: conn} do        user = insert(:user) diff --git a/test/web/activity_pub/relay_test.exs b/test/web/activity_pub/relay_test.exs index e10b808f7..4f7d592a6 100644 --- a/test/web/activity_pub/relay_test.exs +++ b/test/web/activity_pub/relay_test.exs @@ -11,6 +11,7 @@ defmodule Pleroma.Web.ActivityPub.RelayTest do    alias Pleroma.Web.ActivityPub.Relay    import Pleroma.Factory +  import Mock    test "gets an actor for the relay" do      user = Relay.get_actor() @@ -43,16 +44,21 @@ defmodule Pleroma.Web.ActivityPub.RelayTest do        user = insert(:user)        service_actor = Relay.get_actor()        ActivityPub.follow(service_actor, user) +      Pleroma.User.follow(service_actor, user) +      assert "#{user.ap_id}/followers" in refresh_record(service_actor).following        assert {:ok, %Activity{} = activity} = Relay.unfollow(user.ap_id)        assert activity.actor == "#{Pleroma.Web.Endpoint.url()}/relay"        assert user.ap_id in activity.recipients        assert activity.data["type"] == "Undo"        assert activity.data["actor"] == service_actor.ap_id        assert activity.data["to"] == [user.ap_id] +      refute "#{user.ap_id}/followers" in refresh_record(service_actor).following      end    end    describe "publish/1" do +    clear_config([:instance, :federating]) +      test "returns error when activity not `Create` type" do        activity = insert(:like_activity)        assert Relay.publish(activity) == {:error, "Not implemented"} @@ -63,13 +69,44 @@ defmodule Pleroma.Web.ActivityPub.RelayTest do        assert Relay.publish(activity) == {:error, false}      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() +      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"] +      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 | 
