diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/fixtures/users_mock/localhost.json | 41 | ||||
| -rw-r--r-- | test/notification_test.exs | 20 | ||||
| -rw-r--r-- | test/web/activity_pub/mrf/anti_link_spam_policy_test.exs | 9 | ||||
| -rw-r--r-- | test/web/activity_pub/relay_test.exs | 5 | ||||
| -rw-r--r-- | test/web/mastodon_api/controllers/notification_controller_test.exs | 13 | ||||
| -rw-r--r-- | test/web/mastodon_api/views/notification_view_test.exs | 13 | ||||
| -rw-r--r-- | test/web/mastodon_api/views/status_view_test.exs | 17 | ||||
| -rw-r--r-- | test/web/streamer/streamer_test.exs | 12 | 
8 files changed, 130 insertions, 0 deletions
| diff --git a/test/fixtures/users_mock/localhost.json b/test/fixtures/users_mock/localhost.json new file mode 100644 index 000000000..a49935db1 --- /dev/null +++ b/test/fixtures/users_mock/localhost.json @@ -0,0 +1,41 @@ +{ +  "@context": [ +    "https://www.w3.org/ns/activitystreams", +    "http://localhost:4001/schemas/litepub-0.1.jsonld", +    { +      "@language": "und" +    } +  ], +  "attachment": [], +  "endpoints": { +    "oauthAuthorizationEndpoint": "http://localhost:4001/oauth/authorize", +    "oauthRegistrationEndpoint": "http://localhost:4001/api/v1/apps", +    "oauthTokenEndpoint": "http://localhost:4001/oauth/token", +    "sharedInbox": "http://localhost:4001/inbox" +  }, +  "followers": "http://localhost:4001/users/{{nickname}}/followers", +  "following": "http://localhost:4001/users/{{nickname}}/following", +  "icon": { +    "type": "Image", +    "url": "http://localhost:4001/media/4e914f5b84e4a259a3f6c2d2edc9ab642f2ab05f3e3d9c52c81fc2d984b3d51e.jpg" +  }, +  "id": "http://localhost:4001/users/{{nickname}}", +  "image": { +    "type": "Image", +    "url": "http://localhost:4001/media/f739efddefeee49c6e67e947c4811fdc911785c16ae43da4c3684051fbf8da6a.jpg?name=f739efddefeee49c6e67e947c4811fdc911785c16ae43da4c3684051fbf8da6a.jpg" +  }, +  "inbox": "http://localhost:4001/users/{{nickname}}/inbox", +  "manuallyApprovesFollowers": false, +  "name": "{{nickname}}", +  "outbox": "http://localhost:4001/users/{{nickname}}/outbox", +  "preferredUsername": "{{nickname}}", +  "publicKey": { +    "id": "http://localhost:4001/users/{{nickname}}#main-key", +    "owner": "http://localhost:4001/users/{{nickname}}", +    "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5DLtwGXNZElJyxFGfcVc\nXANhaMadj/iYYQwZjOJTV9QsbtiNBeIK54PJrYuU0/0YIdrvS1iqheX5IwXRhcwa\nhm3ZyLz7XeN9st7FBni4BmZMBtMpxAuYuu5p/jbWy13qAiYOhPreCx0wrWgm/lBD\n9mkgaxIxPooBE0S4ZWEJIDIV1Vft3AWcRUyWW1vIBK0uZzs6GYshbQZB952S0yo4\nFzI1hABGHncH8UvuFauh4EZ8tY7/X5I0pGRnDOcRN1dAht5w5yTA+6r5kebiFQjP\nIzN/eCO/a9Flrj9YGW7HDNtjSOH0A31PLRGlJtJO3yK57dnf5ppyCZGfL4emShQo\ncQIDAQAB\n-----END PUBLIC KEY-----\n\n" +  }, +  "summary": "your friendly neighborhood pleroma developer<br>I like cute things and distributed systems, and really hate delete and redrafts", +  "tag": [], +  "type": "Person", +  "url": "http://localhost:4001/users/{{nickname}}" +}
\ No newline at end of file diff --git a/test/notification_test.exs b/test/notification_test.exs index 56a581810..c71df4e07 100644 --- a/test/notification_test.exs +++ b/test/notification_test.exs @@ -649,12 +649,20 @@ defmodule Pleroma.NotificationTest do          "object" => remote_user.ap_id        } +      remote_user_url = remote_user.ap_id + +      Tesla.Mock.mock(fn +        %{method: :get, url: ^remote_user_url} -> +          %Tesla.Env{status: 404, body: ""} +      end) +        {:ok, _delete_activity} = Transmogrifier.handle_incoming(delete_user_message)        ObanHelpers.perform_all()        assert Enum.empty?(Notification.for_user(local_user))      end +    @tag capture_log: true      test "move activity generates a notification" do        %{ap_id: old_ap_id} = old_user = insert(:user)        %{ap_id: new_ap_id} = new_user = insert(:user, also_known_as: [old_ap_id]) @@ -664,6 +672,18 @@ defmodule Pleroma.NotificationTest do        User.follow(follower, old_user)        User.follow(other_follower, old_user) +      old_user_url = old_user.ap_id + +      body = +        File.read!("test/fixtures/users_mock/localhost.json") +        |> String.replace("{{nickname}}", old_user.nickname) +        |> Jason.encode!() + +      Tesla.Mock.mock(fn +        %{method: :get, url: ^old_user_url} -> +          %Tesla.Env{status: 200, body: body} +      end) +        Pleroma.Web.ActivityPub.ActivityPub.move(old_user, new_user)        ObanHelpers.perform_all() diff --git a/test/web/activity_pub/mrf/anti_link_spam_policy_test.exs b/test/web/activity_pub/mrf/anti_link_spam_policy_test.exs index fc0be6f91..1a13699be 100644 --- a/test/web/activity_pub/mrf/anti_link_spam_policy_test.exs +++ b/test/web/activity_pub/mrf/anti_link_spam_policy_test.exs @@ -110,6 +110,15 @@ defmodule Pleroma.Web.ActivityPub.MRF.AntiLinkSpamPolicyTest do    end    describe "with unknown actors" do +    setup do +      Tesla.Mock.mock(fn +        %{method: :get, url: "http://invalid.actor"} -> +          %Tesla.Env{status: 500, body: ""} +      end) + +      :ok +    end +      test "it rejects posts without links" do        message =          @linkless_message diff --git a/test/web/activity_pub/relay_test.exs b/test/web/activity_pub/relay_test.exs index e3115dcd8..12bf90d90 100644 --- a/test/web/activity_pub/relay_test.exs +++ b/test/web/activity_pub/relay_test.exs @@ -89,6 +89,11 @@ defmodule Pleroma.Web.ActivityPub.RelayTest do            }          ) +      Tesla.Mock.mock(fn +        %{method: :get, url: "http://mastodon.example.org/eee/99541947525187367"} -> +          %Tesla.Env{status: 500, body: ""} +      end) +        assert capture_log(fn ->                 assert Relay.publish(activity) == {:error, nil}               end) =~ "[error] error: nil" diff --git a/test/web/mastodon_api/controllers/notification_controller_test.exs b/test/web/mastodon_api/controllers/notification_controller_test.exs index d452ddbdd..0f0a060d2 100644 --- a/test/web/mastodon_api/controllers/notification_controller_test.exs +++ b/test/web/mastodon_api/controllers/notification_controller_test.exs @@ -407,11 +407,24 @@ defmodule Pleroma.Web.MastodonAPI.NotificationControllerTest do      assert length(json_response(conn, 200)) == 1    end +  @tag capture_log: true    test "see move notifications with `with_move` parameter" do      old_user = insert(:user)      new_user = insert(:user, also_known_as: [old_user.ap_id])      %{user: follower, conn: conn} = oauth_access(["read:notifications"]) +    old_user_url = old_user.ap_id + +    body = +      File.read!("test/fixtures/users_mock/localhost.json") +      |> String.replace("{{nickname}}", old_user.nickname) +      |> Jason.encode!() + +    Tesla.Mock.mock(fn +      %{method: :get, url: ^old_user_url} -> +        %Tesla.Env{status: 200, body: body} +    end) +      User.follow(follower, old_user)      Pleroma.Web.ActivityPub.ActivityPub.move(old_user, new_user)      Pleroma.Tests.ObanHelpers.perform_all() diff --git a/test/web/mastodon_api/views/notification_view_test.exs b/test/web/mastodon_api/views/notification_view_test.exs index 4df9c3c03..57e4c8f1e 100644 --- a/test/web/mastodon_api/views/notification_view_test.exs +++ b/test/web/mastodon_api/views/notification_view_test.exs @@ -108,11 +108,24 @@ defmodule Pleroma.Web.MastodonAPI.NotificationViewTest do               NotificationView.render("index.json", %{notifications: [notification], for: followed})    end +  @tag capture_log: true    test "Move notification" do      old_user = insert(:user)      new_user = insert(:user, also_known_as: [old_user.ap_id])      follower = insert(:user) +    old_user_url = old_user.ap_id + +    body = +      File.read!("test/fixtures/users_mock/localhost.json") +      |> String.replace("{{nickname}}", old_user.nickname) +      |> Jason.encode!() + +    Tesla.Mock.mock(fn +      %{method: :get, url: ^old_user_url} -> +        %Tesla.Env{status: 200, body: body} +    end) +      User.follow(follower, old_user)      Pleroma.Web.ActivityPub.ActivityPub.move(old_user, new_user)      Pleroma.Tests.ObanHelpers.perform_all() diff --git a/test/web/mastodon_api/views/status_view_test.exs b/test/web/mastodon_api/views/status_view_test.exs index 191895c6f..7df72decb 100644 --- a/test/web/mastodon_api/views/status_view_test.exs +++ b/test/web/mastodon_api/views/status_view_test.exs @@ -92,6 +92,23 @@ defmodule Pleroma.Web.MastodonAPI.StatusViewTest do      Repo.delete(user)      Cachex.clear(:user_cache) +    finger_url = +      "https://localhost/.well-known/webfinger?resource=acct:#{user.nickname}@localhost" + +    Tesla.Mock.mock_global(fn +      %{method: :get, url: "http://localhost/.well-known/host-meta"} -> +        %Tesla.Env{status: 404, body: ""} + +      %{method: :get, url: "https://localhost/.well-known/host-meta"} -> +        %Tesla.Env{status: 404, body: ""} + +      %{ +        method: :get, +        url: ^finger_url +      } -> +        %Tesla.Env{status: 404, body: ""} +    end) +      %{account: ms_user} = StatusView.render("show.json", activity: activity)      assert ms_user.acct == "erroruser@example.com" diff --git a/test/web/streamer/streamer_test.exs b/test/web/streamer/streamer_test.exs index 339f99bbf..a04d70f21 100644 --- a/test/web/streamer/streamer_test.exs +++ b/test/web/streamer/streamer_test.exs @@ -122,6 +122,18 @@ defmodule Pleroma.Web.StreamerTest do      test "it sends follow activities to the 'user:notification' stream", %{        user: user      } do +      user_url = user.ap_id + +      body = +        File.read!("test/fixtures/users_mock/localhost.json") +        |> String.replace("{{nickname}}", user.nickname) +        |> Jason.encode!() + +      Tesla.Mock.mock_global(fn +        %{method: :get, url: ^user_url} -> +          %Tesla.Env{status: 200, body: body} +      end) +        user2 = insert(:user)        task = Task.async(fn -> assert_receive {:text, _}, @streamer_timeout end) | 
