From c7b3e34c22008dbff5e79883b60c361c2b491013 Mon Sep 17 00:00:00 2001 From: Moon Date: Fri, 11 Aug 2023 19:49:46 -0400 Subject: [PATCH] think I got all the URLs --- benchmarks/load_testing/users.ex | 2 +- lib/pleroma/gopher/server.ex | 4 +- lib/pleroma/user.ex | 2 +- lib/pleroma/web/api_spec/schemas/status.ex | 2 +- lib/pleroma/web/router.ex | 82 +++++++++---------- .../controllers/remote_follow_controller.ex | 6 +- lib/pleroma/web/views/email_view.ex | 2 +- ...338_insert_skeletons_for_deleted_users.exs | 2 +- test/fixtures/webfinger/pleroma-user.json | 16 ++-- .../fixtures/webfinger/pleroma-webfinger.json | 8 +- test/pleroma/user_test.exs | 64 +++++++-------- .../activity_pub/mrf/simple_policy_test.exs | 18 ++-- .../add_remove_handling_test.exs | 20 ++--- .../pleroma/web/feed/user_controller_test.exs | 18 ++-- test/support/factory.ex | 2 +- test/support/http_request_mock.ex | 8 +- 16 files changed, 128 insertions(+), 128 deletions(-) diff --git a/benchmarks/load_testing/users.ex b/benchmarks/load_testing/users.ex index 0a33cbfdb..788c6afa4 100644 --- a/benchmarks/load_testing/users.ex +++ b/benchmarks/load_testing/users.ex @@ -76,7 +76,7 @@ defp user_urls(%{local: true} = user) do defp user_urls(%{local: false} = user) do base_domain = Enum.random(["domain1.com", "domain2.com", "domain3.com"]) - ap_id = "https://#{base_domain}/users/#{user.nickname}" + ap_id = "https://#{base_domain}/u/#{user.nickname}" urls = %{ ap_id: ap_id, diff --git a/lib/pleroma/gopher/server.ex b/lib/pleroma/gopher/server.ex index 0fde0adcf..346e190c6 100644 --- a/lib/pleroma/gopher/server.ex +++ b/lib/pleroma/gopher/server.ex @@ -122,14 +122,14 @@ def response("/notices/" <> id) do user = User.get_cached_by_ap_id(activity.data["actor"]) info("Post #{activity.id} by #{user.nickname}") <> - link("More posts by #{user.nickname}", "/users/#{user.nickname}") <> activities <> ".\r\n" + link("More posts by #{user.nickname}", "/u/#{user.nickname}") <> activities <> ".\r\n" else _e -> info("Not public") <> ".\r\n" end end - def response("/users/" <> nickname) do + def response("/u/" <> nickname) do with %User{} = user <- User.get_cached_by_nickname(nickname) do params = %{ type: ["Create"], diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index ce125d608..fa134d5b1 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -417,7 +417,7 @@ def banner_url(user, options \\ []) do # Should probably be renamed or removed @spec ap_id(User.t()) :: String.t() - def ap_id(%User{nickname: nickname}), do: "#{Endpoint.url()}/users/#{nickname}" + def ap_id(%User{nickname: nickname}), do: "#{Endpoint.url()}/u/#{nickname}" @spec ap_followers(User.t()) :: String.t() def ap_followers(%User{follower_address: fa}) when is_binary(fa), do: fa diff --git a/lib/pleroma/web/api_spec/schemas/status.ex b/lib/pleroma/web/api_spec/schemas/status.ex index bc29cf4a6..7ecfc7872 100644 --- a/lib/pleroma/web/api_spec/schemas/status.ex +++ b/lib/pleroma/web/api_spec/schemas/status.ex @@ -318,7 +318,7 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Status do "sensitive" => false }, "statuses_count" => 1, - "url" => "http://localhost:4001/users/nick6", + "url" => "http://localhost:4001/u/nick6", "username" => "nick6" }, "application" => nil, diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index 6b9e158a3..dbe9eaf42 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -233,31 +233,31 @@ defmodule Pleroma.Web.Router do scope "/api/v1/pleroma/admin", Pleroma.Web.AdminAPI do pipe_through([:admin_api, :require_admin]) - get("/users/:nickname/permission_group", AdminAPIController, :right_get) - get("/users/:nickname/permission_group/:permission_group", AdminAPIController, :right_get) + get("/u/:nickname/permission_group", AdminAPIController, :right_get) + get("/u/:nickname/permission_group/:permission_group", AdminAPIController, :right_get) - post("/users/:nickname/permission_group/:permission_group", AdminAPIController, :right_add) + post("/u/:nickname/permission_group/:permission_group", AdminAPIController, :right_add) delete( - "/users/:nickname/permission_group/:permission_group", + "/u/:nickname/permission_group/:permission_group", AdminAPIController, :right_delete ) - post("/users/permission_group/:permission_group", AdminAPIController, :right_add_multiple) + post("/u/permission_group/:permission_group", AdminAPIController, :right_add_multiple) delete( - "/users/permission_group/:permission_group", + "/u/permission_group/:permission_group", AdminAPIController, :right_delete_multiple ) - post("/users/follow", UserController, :follow) - post("/users/unfollow", UserController, :unfollow) + post("/u/follow", UserController, :follow) + post("/u/unfollow", UserController, :unfollow) post("/users", UserController, :create) - patch("/users/suggest", UserController, :suggest) - patch("/users/unsuggest", UserController, :unsuggest) + patch("/u/suggest", UserController, :suggest) + patch("/u/unsuggest", UserController, :unsuggest) get("/relay", RelayController, :index) post("/relay", RelayController, :follow) @@ -310,21 +310,21 @@ defmodule Pleroma.Web.Router do scope "/api/v1/pleroma/admin", Pleroma.Web.AdminAPI do pipe_through(:require_privileged_role_users_manage_credentials) - get("/users/:nickname/password_reset", AdminAPIController, :get_password_reset) - get("/users/:nickname/credentials", AdminAPIController, :show_user_credentials) - patch("/users/:nickname/credentials", AdminAPIController, :update_user_credentials) - put("/users/disable_mfa", AdminAPIController, :disable_mfa) - patch("/users/force_password_reset", AdminAPIController, :force_password_reset) - patch("/users/confirm_email", AdminAPIController, :confirm_email) - patch("/users/resend_confirmation_email", AdminAPIController, :resend_confirmation_email) + get("/u/:nickname/password_reset", AdminAPIController, :get_password_reset) + get("/u/:nickname/credentials", AdminAPIController, :show_user_credentials) + patch("/u/:nickname/credentials", AdminAPIController, :update_user_credentials) + put("/u/disable_mfa", AdminAPIController, :disable_mfa) + patch("/u/force_password_reset", AdminAPIController, :force_password_reset) + patch("/u/confirm_email", AdminAPIController, :confirm_email) + patch("/u/resend_confirmation_email", AdminAPIController, :resend_confirmation_email) end # AdminAPI: admins and mods (staff) can perform these actions (if privileged by role) scope "/api/v1/pleroma/admin", Pleroma.Web.AdminAPI do pipe_through(:require_privileged_role_messages_read) - get("/users/:nickname/statuses", AdminAPIController, :list_user_statuses) - get("/users/:nickname/chats", AdminAPIController, :list_user_chats) + get("/u/:nickname/statuses", AdminAPIController, :list_user_statuses) + get("/u/:nickname/chats", AdminAPIController, :list_user_chats) get("/statuses", StatusController, :index) @@ -340,28 +340,28 @@ defmodule Pleroma.Web.Router do scope "/api/v1/pleroma/admin", Pleroma.Web.AdminAPI do pipe_through(:require_privileged_role_users_manage_tags) - put("/users/tag", AdminAPIController, :tag_users) - delete("/users/tag", AdminAPIController, :untag_users) + put("/u/tag", AdminAPIController, :tag_users) + delete("/u/tag", AdminAPIController, :untag_users) end # AdminAPI: admins and mods (staff) can perform these actions (if privileged by role) scope "/api/v1/pleroma/admin", Pleroma.Web.AdminAPI do pipe_through(:require_privileged_role_users_manage_activation_state) - patch("/users/:nickname/toggle_activation", UserController, :toggle_activation) - patch("/users/activate", UserController, :activate) - patch("/users/deactivate", UserController, :deactivate) + patch("/u/:nickname/toggle_activation", UserController, :toggle_activation) + patch("/u/activate", UserController, :activate) + patch("/u/deactivate", UserController, :deactivate) end # AdminAPI: admins and mods (staff) can perform these actions (if privileged by role) scope "/api/v1/pleroma/admin", Pleroma.Web.AdminAPI do pipe_through(:require_privileged_role_users_manage_invites) - patch("/users/approve", UserController, :approve) - post("/users/invite_token", InviteController, :create) - get("/users/invites", InviteController, :index) - post("/users/revoke_invite", InviteController, :revoke) - post("/users/email_invite", InviteController, :email) + patch("/u/approve", UserController, :approve) + post("/u/invite_token", InviteController, :create) + get("/u/invites", InviteController, :index) + post("/u/revoke_invite", InviteController, :revoke) + post("/u/email_invite", InviteController, :email) end # AdminAPI: admins and mods (staff) can perform these actions (if privileged by role) @@ -380,7 +380,7 @@ defmodule Pleroma.Web.Router do pipe_through(:require_privileged_role_users_read) get("/users", UserController, :index) - get("/users/:nickname", UserController, :show) + get("/u/:nickname", UserController, :show) end # AdminAPI: admins and mods (staff) can perform these actions (if privileged by role) @@ -821,8 +821,8 @@ defmodule Pleroma.Web.Router do get("/notice/:id", OStatus.OStatusController, :notice) # Mastodon compatibility routes - get("/users/:nickname/statuses/:id", OStatus.OStatusController, :object) - get("/users/:nickname/statuses/:id/activity", OStatus.OStatusController, :activity) + get("/u/:nickname/statuses/:id", OStatus.OStatusController, :object) + get("/u/:nickname/statuses/:id/activity", OStatus.OStatusController, :activity) end scope "/", Pleroma.Web do @@ -831,13 +831,13 @@ defmodule Pleroma.Web.Router do pipe_through([:accepts_html_xml_json, :http_signature, :static_fe]) # Note: returns user _profile_ for json requests, redirects to user _feed_ for non-json ones - get("/users/:nickname", Feed.UserController, :feed_redirect, as: :user_feed) + get("/u/:nickname", Feed.UserController, :feed_redirect, as: :user_feed) end scope "/", Pleroma.Web do pipe_through([:accepts_html_xml]) - get("/users/:nickname/feed", Feed.UserController, :feed, as: :user_feed) + get("/u/:nickname/feed", Feed.UserController, :feed, as: :user_feed) end scope "/", Pleroma.Web do @@ -877,22 +877,22 @@ defmodule Pleroma.Web.Router do pipe_through([:activitypub_client]) get("/api/ap/whoami", ActivityPubController, :whoami) - get("/users/:nickname/inbox", ActivityPubController, :read_inbox) + get("/u/:nickname/inbox", ActivityPubController, :read_inbox) - get("/users/:nickname/outbox", ActivityPubController, :outbox) - post("/users/:nickname/outbox", ActivityPubController, :update_outbox) + get("/u/:nickname/outbox", ActivityPubController, :outbox) + post("/u/:nickname/outbox", ActivityPubController, :update_outbox) post("/api/ap/upload_media", ActivityPubController, :upload_media) # The following two are S2S as well, see `ActivityPub.fetch_follow_information_for_user/1`: - get("/users/:nickname/followers", ActivityPubController, :followers) - get("/users/:nickname/following", ActivityPubController, :following) - get("/users/:nickname/collections/featured", ActivityPubController, :pinned) + get("/u/:nickname/followers", ActivityPubController, :followers) + get("/u/:nickname/following", ActivityPubController, :following) + get("/u/:nickname/collections/featured", ActivityPubController, :pinned) end scope "/", Pleroma.Web.ActivityPub do pipe_through(:activitypub) post("/inbox", ActivityPubController, :inbox) - post("/users/:nickname/inbox", ActivityPubController, :inbox) + post("/u/:nickname/inbox", ActivityPubController, :inbox) end scope "/relay", Pleroma.Web.ActivityPub do diff --git a/lib/pleroma/web/twitter_api/controllers/remote_follow_controller.ex b/lib/pleroma/web/twitter_api/controllers/remote_follow_controller.ex index 6229d5d05..8d28f11ae 100644 --- a/lib/pleroma/web/twitter_api/controllers/remote_follow_controller.ex +++ b/lib/pleroma/web/twitter_api/controllers/remote_follow_controller.ex @@ -74,7 +74,7 @@ defp is_status?(acct) do def do_follow(%{assigns: %{user: %User{} = user}} = conn, %{"user" => %{"id" => id}}) do with {:fetch_user, %User{} = followee} <- {:fetch_user, User.get_cached_by_id(id)}, {:ok, _, _, _} <- CommonAPI.follow(user, followee) do - redirect(conn, to: "/users/#{followee.id}") + redirect(conn, to: "/u/#{followee.id}") else error -> handle_follow_error(conn, error) @@ -91,7 +91,7 @@ def do_follow(conn, %{"authorization" => %{"name" => _, "password" => _, "id" => {_, {:ok, user}, _} <- {:auth, WrapperAuthenticator.get_user(conn), followee}, {_, _, _, false} <- {:mfa_required, followee, user, MFA.require?(user)}, {:ok, _, _, _} <- CommonAPI.follow(user, followee) do - redirect(conn, to: "/users/#{followee.id}") + redirect(conn, to: "/u/#{followee.id}") else error -> handle_follow_error(conn, error) @@ -109,7 +109,7 @@ def do_follow(conn, %{"mfa" => %{"code" => code, "token" => token, "id" => id}}) {_, _, _, {:ok, _}} <- {:verify_mfa_code, followee, token, TOTPAuthenticator.verify(code, user)}, {:ok, _, _, _} <- CommonAPI.follow(user, followee) do - redirect(conn, to: "/users/#{followee.id}") + redirect(conn, to: "/u/#{followee.id}") else error -> handle_follow_error(conn, error) diff --git a/lib/pleroma/web/views/email_view.ex b/lib/pleroma/web/views/email_view.ex index 9ab708212..3fddb366d 100644 --- a/lib/pleroma/web/views/email_view.ex +++ b/lib/pleroma/web/views/email_view.ex @@ -19,6 +19,6 @@ def format_date(date) when is_binary(date) do end def admin_user_url(%{id: id}) do - Pleroma.Web.Endpoint.url() <> "/pleroma/admin/#/users/" <> id + Pleroma.Web.Endpoint.url() <> "/pleroma/admin/#/u/" <> id end end diff --git a/priv/repo/migrations/20200428221338_insert_skeletons_for_deleted_users.exs b/priv/repo/migrations/20200428221338_insert_skeletons_for_deleted_users.exs index 6e5c9489c..773959d0b 100644 --- a/priv/repo/migrations/20200428221338_insert_skeletons_for_deleted_users.exs +++ b/priv/repo/migrations/20200428221338_insert_skeletons_for_deleted_users.exs @@ -32,7 +32,7 @@ def change do {:ok, %{rows: ap_ids}} = Ecto.Adapters.SQL.query( Repo, - "select distinct unnest(nonexistent_locals.recipients) from activities, lateral (select array_agg(recipient) as recipients from unnest(activities.recipients) as recipient where recipient similar to '#{instance_uri}/users/[A-Za-z0-9]*' and not(recipient in (select ap_id from users))) nonexistent_locals;", + "select distinct unnest(nonexistent_locals.recipients) from activities, lateral (select array_agg(recipient) as recipients from unnest(activities.recipients) as recipient where recipient similar to '#{instance_uri}/u/[A-Za-z0-9]*' and not(recipient in (select ap_id from users))) nonexistent_locals;", [], timeout: :infinity ) diff --git a/test/fixtures/webfinger/pleroma-user.json b/test/fixtures/webfinger/pleroma-user.json index b822db46c..3783992cf 100644 --- a/test/fixtures/webfinger/pleroma-user.json +++ b/test/fixtures/webfinger/pleroma-user.json @@ -19,25 +19,25 @@ "sharedInbox": "https://{{domain}}/inbox", "uploadMedia": "https://{{domain}}/api/ap/upload_media" }, - "followers": "https://{{domain}}/users/{{nickname}}/followers", - "following": "https://{{domain}}/users/{{nickname}}/following", + "followers": "https://{{domain}}/u/{{nickname}}/followers", + "following": "https://{{domain}}/u/{{nickname}}/following", "icon": { "type": "Image", "url": "https://{{domain}}/media/a932a27f158b63c3a97e3a57d5384f714a82249274c6fc66c9eca581b4fd8af2.jpg" }, - "id": "https://{{domain}}/users/{{nickname}}", + "id": "https://{{domain}}/u/{{nickname}}", "image": { "type": "Image", "url": "https://{{domain}}/media/db15f476d0ad14488db4762b7800479e6ef67b1824f8b9ea5c1fa05b7525c5b7.jpg" }, - "inbox": "https://{{domain}}/users/{{nickname}}/inbox", + "inbox": "https://{{domain}}/u/{{nickname}}/inbox", "manuallyApprovesFollowers": false, "name": "{{nickname}} :verified:", - "outbox": "https://{{domain}}/users/{{nickname}}/outbox", + "outbox": "https://{{domain}}/u/{{nickname}}/outbox", "preferredUsername": "{{nickname}}", "publicKey": { - "id": "https://{{domain}}/users/{{nickname}}#main-key", - "owner": "https://{{domain}}/users/{{nickname}}", + "id": "https://{{domain}}/u/{{nickname}}#main-key", + "owner": "https://{{domain}}/u/{{nickname}}", "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAu4XOAopC4nRIxNlHlt60\n//nCicuedu5wvLGIoQ+KUM2u7/PhLrrTDEqr1A7yQL95S0X8ryYtALgFLI5A54ww\nqjMIbIGAs44lEmDLMEd+XI+XxREE8wdsFpb4QQzWug0DTyqlMouTU25k0tfKh1rF\n4PMJ3uBSjDTAGgFvLNyFWTiVVgChbTNgGOmrEBucRl4NmKzQ69/FIUwENV88oQSU\n3bWvQTEH9rWH1rCLpkmQwdRiWfnhFX/4EUqXukfgoskvenKR8ff3nYhElDqFoE0e\nqUnIW1OZceyl8JewVLcL6m0/wdKeosTsfrcWc8DKfnRYQcBGNoBEq9GrOHDU0q2v\nyQIDAQAB\n-----END PUBLIC KEY-----\n\n" }, "summary": "Pleroma BE dev", @@ -54,5 +54,5 @@ } ], "type": "Person", - "url": "https://{{domain}}/users/{{nickname}}" + "url": "https://{{domain}}/u/{{nickname}}" } diff --git a/test/fixtures/webfinger/pleroma-webfinger.json b/test/fixtures/webfinger/pleroma-webfinger.json index 8f075eaaf..2cfc8113b 100644 --- a/test/fixtures/webfinger/pleroma-webfinger.json +++ b/test/fixtures/webfinger/pleroma-webfinger.json @@ -1,20 +1,20 @@ { "aliases": [ - "https://{{subdomain}}/users/{{nickname}}" + "https://{{subdomain}}/u/{{nickname}}" ], "links": [ { - "href": "https://{{subdomain}}/users/{{nickname}}", + "href": "https://{{subdomain}}/u/{{nickname}}", "rel": "http://webfinger.net/rel/profile-page", "type": "text/html" }, { - "href": "https://{{subdomain}}/users/{{nickname}}", + "href": "https://{{subdomain}}/u/{{nickname}}", "rel": "self", "type": "application/activity+json" }, { - "href": "https://{{subdomain}}/users/{{nickname}}", + "href": "https://{{subdomain}}/u/{{nickname}}", "rel": "self", "type": "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"" }, diff --git a/test/pleroma/user_test.exs b/test/pleroma/user_test.exs index 7f60b959a..b628bd323 100644 --- a/test/pleroma/user_test.exs +++ b/test/pleroma/user_test.exs @@ -151,7 +151,7 @@ test "untagging a user" do test "ap_id returns the activity pub id for the user" do user = UserBuilder.build() - expected_ap_id = "#{Pleroma.Web.Endpoint.url()}/users/#{user.nickname}" + expected_ap_id = "#{Pleroma.Web.Endpoint.url()}/u/#{user.nickname}" assert expected_ap_id == User.ap_id(user) end @@ -316,18 +316,18 @@ test "unfollow with synchronizes external user" do followed = insert(:user, nickname: "fuser1", - follower_address: "http://localhost:4001/users/fuser1/followers", - following_address: "http://localhost:4001/users/fuser1/following", - ap_id: "http://localhost:4001/users/fuser1" + follower_address: "http://localhost:4001/u/fuser1/followers", + following_address: "http://localhost:4001/u/fuser1/following", + ap_id: "http://localhost:4001/u/fuser1" ) user = insert(:user, %{ local: false, nickname: "fuser2", - ap_id: "http://localhost:4001/users/fuser2", - follower_address: "http://localhost:4001/users/fuser2/followers", - following_address: "http://localhost:4001/users/fuser2/following" + ap_id: "http://localhost:4001/u/fuser2", + follower_address: "http://localhost:4001/u/fuser2/followers", + following_address: "http://localhost:4001/u/fuser2/following" }) {:ok, user, followed} = User.follow(user, followed, :follow_accept) @@ -845,7 +845,7 @@ test "gets an existing user by nickname" do end test "gets an existing user by ap_id" do - ap_id = "http://mastodon.example.org/users/admin" + ap_id = "http://mastodon.example.org/u/admin" user = insert( @@ -900,7 +900,7 @@ test "for mastodon" do headers: [{"content-type", "application/jrd+json"}] } - %{url: "https://sub.example.com/users/a"} -> + %{url: "https://sub.example.com/u/a"} -> %Tesla.Env{ status: 200, body: @@ -911,7 +911,7 @@ test "for mastodon" do headers: [{"content-type", "application/activity+json"}] } - %{url: "https://sub.example.com/users/a/collections/featured"} -> + %{url: "https://sub.example.com/u/a/collections/featured"} -> %Tesla.Env{ status: 200, body: @@ -925,7 +925,7 @@ test "for mastodon" do ap_id = "a@example.com" {:ok, fetched_user} = User.get_or_fetch(ap_id) - assert fetched_user.ap_id == "https://sub.example.com/users/a" + assert fetched_user.ap_id == "https://sub.example.com/u/a" assert fetched_user.nickname == "a@example.com" end @@ -958,7 +958,7 @@ test "for pleroma" do headers: [{"content-type", "application/jrd+json"}] } - %{url: "https://sub.example.com/users/a"} -> + %{url: "https://sub.example.com/u/a"} -> %Tesla.Env{ status: 200, body: @@ -973,7 +973,7 @@ test "for pleroma" do ap_id = "a@example.com" {:ok, fetched_user} = User.get_or_fetch(ap_id) - assert fetched_user.ap_id == "https://sub.example.com/users/a" + assert fetched_user.ap_id == "https://sub.example.com/u/a" assert fetched_user.nickname == "a@example.com" end end @@ -1030,13 +1030,13 @@ test "updates an existing user, if stale" do :user, local: false, nickname: "admin@mastodon.example.org", - ap_id: "http://mastodon.example.org/users/admin", + ap_id: "http://mastodon.example.org/u/admin", last_refreshed_at: a_week_ago ) assert orig_user.last_refreshed_at == a_week_ago - {:ok, user} = User.get_or_fetch_by_ap_id("http://mastodon.example.org/users/admin") + {:ok, user} = User.get_or_fetch_by_ap_id("http://mastodon.example.org/u/admin") assert user.inbox @@ -1051,13 +1051,13 @@ test "if nicknames clash, the old user gets a prefix with the old id to the nick :user, local: false, nickname: "admin@mastodon.example.org", - ap_id: "http://mastodon.example.org/users/harinezumigari", + ap_id: "http://mastodon.example.org/u/harinezumigari", last_refreshed_at: a_week_ago ) assert orig_user.last_refreshed_at == a_week_ago - {:ok, user} = User.get_or_fetch_by_ap_id("http://mastodon.example.org/users/admin") + {:ok, user} = User.get_or_fetch_by_ap_id("http://mastodon.example.org/u/admin") assert user.inbox @@ -1077,13 +1077,13 @@ test "it returns the old user if stale, but unfetchable" do :user, local: false, nickname: "admin@mastodon.example.org", - ap_id: "http://mastodon.example.org/users/raymoo", + ap_id: "http://mastodon.example.org/u/raymoo", last_refreshed_at: a_week_ago ) assert orig_user.last_refreshed_at == a_week_ago - {:ok, user} = User.get_or_fetch_by_ap_id("http://mastodon.example.org/users/raymoo") + {:ok, user} = User.get_or_fetch_by_ap_id("http://mastodon.example.org/u/raymoo") assert user.last_refreshed_at == orig_user.last_refreshed_at end @@ -1852,7 +1852,7 @@ test "delete/1 purges a user when they wouldn't be fully deleted" do fields: [%{"gg" => "qq"}], raw_fields: [%{"gg" => "qq"}], is_discoverable: true, - also_known_as: ["https://lol.olo/users/loll"] + also_known_as: ["https://lol.olo/u/loll"] }) {:ok, job} = User.delete(user) @@ -1947,7 +1947,7 @@ test "unsuggests a user" do end test "get_public_key_for_ap_id fetches a user that's not in the db" do - assert {:ok, _key} = User.get_public_key_for_ap_id("http://mastodon.example.org/users/admin") + assert {:ok, _key} = User.get_public_key_for_ap_id("http://mastodon.example.org/u/admin") end describe "per-user rich-text filtering" do @@ -2235,7 +2235,7 @@ test "preserves hosts in user links text" do end test "Adds rel=me on linkbacked urls" do - user = insert(:user, ap_id: "https://social.example.org/users/lain") + user = insert(:user, ap_id: "https://social.example.org/u/lain") bio = "http://example.com/rel_me/null" expected_text = "#{bio}" @@ -2395,8 +2395,8 @@ test "it returns a list of AP ids in the same order" do describe "sync followers count" do setup do - user1 = insert(:user, local: false, ap_id: "http://localhost:4001/users/masto_closed") - user2 = insert(:user, local: false, ap_id: "http://localhost:4001/users/fuser2") + user1 = insert(:user, local: false, ap_id: "http://localhost:4001/u/masto_closed") + user2 = insert(:user, local: false, ap_id: "http://localhost:4001/u/fuser2") insert(:user, local: true) insert(:user, local: false, is_active: false) {:ok, user1: user1, user2: user2} @@ -2470,8 +2470,8 @@ test "updates the counters normally on following/getting a follow when disabled" other_user = insert(:user, local: false, - follower_address: "http://localhost:4001/users/masto_closed/followers", - following_address: "http://localhost:4001/users/masto_closed/following" + follower_address: "http://localhost:4001/u/masto_closed/followers", + following_address: "http://localhost:4001/u/masto_closed/following" ) assert other_user.following_count == 0 @@ -2491,8 +2491,8 @@ test "synchronizes the counters with the remote instance for the followed when e other_user = insert(:user, local: false, - follower_address: "http://localhost:4001/users/masto_closed/followers", - following_address: "http://localhost:4001/users/masto_closed/following" + follower_address: "http://localhost:4001/u/masto_closed/followers", + following_address: "http://localhost:4001/u/masto_closed/following" ) assert other_user.following_count == 0 @@ -2512,8 +2512,8 @@ test "synchronizes the counters with the remote instance for the follower when e other_user = insert(:user, local: false, - follower_address: "http://localhost:4001/users/masto_closed/followers", - following_address: "http://localhost:4001/users/masto_closed/following" + follower_address: "http://localhost:4001/u/masto_closed/followers", + following_address: "http://localhost:4001/u/masto_closed/following" ) assert other_user.following_count == 0 @@ -2680,7 +2680,7 @@ test "returns nickname without host" do describe "full_nickname/1" do test "returns fully qualified nickname for local and remote users" do local_user = - insert(:user, nickname: "local_user", ap_id: "https://somehost.com/users/local_user") + insert(:user, nickname: "local_user", ap_id: "https://somehost.com/u/local_user") remote_user = insert(:user, nickname: "remote@host.com", local: false) @@ -2712,7 +2712,7 @@ test "avatar fallback" do end test "get_host/1" do - user = insert(:user, ap_id: "https://lain.com/users/lain", nickname: "lain") + user = insert(:user, ap_id: "https://lain.com/u/lain", nickname: "lain") assert User.get_host(user) == "lain.com" end diff --git a/test/pleroma/web/activity_pub/mrf/simple_policy_test.exs b/test/pleroma/web/activity_pub/mrf/simple_policy_test.exs index 57fc00af5..64ae4cbf3 100644 --- a/test/pleroma/web/activity_pub/mrf/simple_policy_test.exs +++ b/test/pleroma/web/activity_pub/mrf/simple_policy_test.exs @@ -112,7 +112,7 @@ test "works with Updates" do defp build_media_message(opts \\ []) do %{ - "actor" => "https://remote.instance/users/bob", + "actor" => "https://remote.instance/u/bob", "type" => opts[:type] || "Create", "object" => %{ "attachment" => [%{}], @@ -153,7 +153,7 @@ test "match with wildcard domain" do defp build_report_message do %{ - "actor" => "https://remote.instance/users/bob", + "actor" => "https://remote.instance/u/bob", "type" => "Flag" } end @@ -283,8 +283,8 @@ test "reject Announce when object would be rejected" do announce = %{ "type" => "Announce", - "actor" => "https://okay.tld/users/alice", - "object" => %{"type" => "Note", "actor" => "https://blocked.tld/users/bob"} + "actor" => "https://okay.tld/u/alice", + "object" => %{"type" => "Note", "actor" => "https://blocked.tld/u/bob"} } assert {:reject, _} = SimplePolicy.filter(announce) @@ -295,7 +295,7 @@ test "reject by URI object" do announce = %{ "type" => "Announce", - "actor" => "https://okay.tld/users/alice", + "actor" => "https://okay.tld/u/alice", "object" => "https://blocked.tld/activities/1" } @@ -545,19 +545,19 @@ test "it rejects the deletion" do defp build_local_message do %{ - "actor" => "#{Pleroma.Web.Endpoint.url()}/users/alice", + "actor" => "#{Pleroma.Web.Endpoint.url()}/u/alice", "to" => [], "cc" => [] } end defp build_remote_message do - %{"actor" => "https://remote.instance/users/bob"} + %{"actor" => "https://remote.instance/u/bob"} end defp build_remote_user do %{ - "id" => "https://remote.instance/users/bob", + "id" => "https://remote.instance/u/bob", "icon" => %{ "url" => "http://example.com/image.jpg", "type" => "Image" @@ -573,7 +573,7 @@ defp build_remote_user do defp build_remote_deletion_message do %{ "type" => "Delete", - "actor" => "https://remote.instance/users/bob" + "actor" => "https://remote.instance/u/bob" } end end diff --git a/test/pleroma/web/activity_pub/transmogrifier/add_remove_handling_test.exs b/test/pleroma/web/activity_pub/transmogrifier/add_remove_handling_test.exs index a8a7edca5..6958e2660 100644 --- a/test/pleroma/web/activity_pub/transmogrifier/add_remove_handling_test.exs +++ b/test/pleroma/web/activity_pub/transmogrifier/add_remove_handling_test.exs @@ -29,7 +29,7 @@ test "it accepts Add/Remove activities" do object_url = "https://example.com/objects/#{object_id}" - actor = "https://example.com/users/lain" + actor = "https://example.com/u/lain" Tesla.Mock.mock(fn %{ @@ -52,7 +52,7 @@ test "it accepts Add/Remove activities" do headers: [{"content-type", "application/activity+json"}] } - %{method: :get, url: "https://example.com/users/lain/collections/featured"} -> + %{method: :get, url: "https://example.com/u/lain/collections/featured"} -> %Tesla.Env{ status: 200, body: @@ -68,10 +68,10 @@ test "it accepts Add/Remove activities" do "id" => "https://example.com/objects/d61d6733-e256-4fe1-ab13-1e369789423f", "actor" => actor, "object" => object_url, - "target" => "https://example.com/users/lain/collections/featured", + "target" => "https://example.com/u/lain/collections/featured", "type" => "Add", "to" => [Pleroma.Constants.as_public()], - "cc" => ["https://example.com/users/lain/followers"], + "cc" => ["https://example.com/u/lain/followers"], "bcc" => [], "bto" => [] } @@ -85,10 +85,10 @@ test "it accepts Add/Remove activities" do "id" => "http://localhost:400/objects/d61d6733-e256-4fe1-ab13-1e369789423d", "actor" => actor, "object" => object_url, - "target" => "https://example.com/users/lain/collections/featured", + "target" => "https://example.com/u/lain/collections/featured", "type" => "Remove", "to" => [Pleroma.Constants.as_public()], - "cc" => ["https://example.com/users/lain/followers"], + "cc" => ["https://example.com/u/lain/followers"], "bcc" => [], "bto" => [] } @@ -125,9 +125,9 @@ test "Add/Remove activities for remote users without featured address" do object_url = "https://#{host}/objects/#{object_id}" - actor = "https://#{host}/users/#{user.nickname}" + actor = "https://#{host}/u/#{user.nickname}" - featured = "https://#{host}/users/#{user.nickname}/collections/featured" + featured = "https://#{host}/u/#{user.nickname}/collections/featured" Tesla.Mock.mock(fn %{ @@ -166,10 +166,10 @@ test "Add/Remove activities for remote users without featured address" do "id" => "https://#{host}/objects/d61d6733-e256-4fe1-ab13-1e369789423f", "actor" => actor, "object" => object_url, - "target" => "https://#{host}/users/#{user.nickname}/collections/featured", + "target" => "https://#{host}/u/#{user.nickname}/collections/featured", "type" => "Add", "to" => [Pleroma.Constants.as_public()], - "cc" => ["https://#{host}/users/#{user.nickname}/followers"], + "cc" => ["https://#{host}/u/#{user.nickname}/followers"], "bcc" => [], "bto" => [] } diff --git a/test/pleroma/web/feed/user_controller_test.exs b/test/pleroma/web/feed/user_controller_test.exs index d3c4108de..c1a832c53 100644 --- a/test/pleroma/web/feed/user_controller_test.exs +++ b/test/pleroma/web/feed/user_controller_test.exs @@ -96,7 +96,7 @@ test "gets an atom feed", %{conn: conn, user: user, object: object, max_id: max_ resp = conn |> put_req_header("accept", "application/atom+xml") - |> get("/users/#{user.nickname}/feed", %{"max_id" => max_id}) + |> get("/u/#{user.nickname}/feed", %{"max_id" => max_id}) |> response(200) activity_titles = @@ -111,7 +111,7 @@ test "gets a rss feed", %{conn: conn, user: user, object: object, max_id: max_id resp = conn |> put_req_header("accept", "application/rss+xml") - |> get("/users/#{user.nickname}/feed.rss") + |> get("/u/#{user.nickname}/feed.rss") |> response(200) activity_titles = @@ -127,7 +127,7 @@ test "gets a rss feed", %{conn: conn, user: user, object: object, max_id: max_id resp = conn |> put_req_header("accept", "application/rss+xml") - |> get("/users/#{user.nickname}/feed.rss", %{"max_id" => max_id}) + |> get("/u/#{user.nickname}/feed.rss", %{"max_id" => max_id}) |> response(200) activity_titles = @@ -187,7 +187,7 @@ test "does not require authentication on non-federating instances", %{conn: conn conn |> put_req_header("accept", "application/rss+xml") - |> get("/users/#{user.nickname}/feed.rss") + |> get("/u/#{user.nickname}/feed.rss") |> response(200) end @@ -224,7 +224,7 @@ test "with html format, it redirects to user feed", %{conn: conn} do response = conn - |> get("/users/#{user.nickname}") + |> get("/u/#{user.nickname}") |> response(200) assert response == @@ -241,7 +241,7 @@ test "with html format, it falls back to frontend when user is remote", %{conn: response = conn - |> get("/users/#{user.nickname}") + |> get("/u/#{user.nickname}") |> response(200) assert response =~ "" @@ -250,7 +250,7 @@ test "with html format, it falls back to frontend when user is remote", %{conn: test "with html format, it falls back to frontend when user is not found", %{conn: conn} do response = conn - |> get("/users/jimm") + |> get("/u/jimm") |> response(200) assert response =~ "" @@ -265,12 +265,12 @@ test "with non-html / non-json format, it redirects to user feed in atom format" conn = conn |> put_req_header("accept", "application/xml") - |> get("/users/#{user.nickname}") + |> get("/u/#{user.nickname}") assert conn.status == 302 assert redirected_to(conn) == - "#{Pleroma.Web.Endpoint.url()}/users/#{user.nickname}/feed.atom" + "#{Pleroma.Web.Endpoint.url()}/u/#{user.nickname}/feed.atom" end test "with non-html / non-json format, it returns error when user is not found", %{conn: conn} do diff --git a/test/support/factory.ex b/test/support/factory.ex index d94544717..1baaa78b9 100644 --- a/test/support/factory.ex +++ b/test/support/factory.ex @@ -57,7 +57,7 @@ def user_factory(attrs \\ %{}) do if attrs[:local] == false do base_domain = attrs[:domain] || Enum.random(["domain1.com", "domain2.com", "domain3.com"]) - ap_id = "https://#{base_domain}/users/#{user.nickname}" + ap_id = "https://#{base_domain}/u/#{user.nickname}" %{ ap_id: ap_id, diff --git a/test/support/http_request_mock.ex b/test/support/http_request_mock.ex index b0cf613ac..b37e77d5f 100644 --- a/test/support/http_request_mock.ex +++ b/test/support/http_request_mock.ex @@ -1009,7 +1009,7 @@ def get("http://localhost:8080/following/fuser3", _, _, _) do }} end - def get("http://localhost:4001/users/fuser2/followers", _, _, _) do + def get("http://localhost:4001/u/fuser2/followers", _, _, _) do {:ok, %Tesla.Env{ status: 200, @@ -1018,7 +1018,7 @@ def get("http://localhost:4001/users/fuser2/followers", _, _, _) do }} end - def get("http://localhost:4001/users/fuser2/following", _, _, _) do + def get("http://localhost:4001/u/fuser2/following", _, _, _) do {:ok, %Tesla.Env{ status: 200, @@ -1027,7 +1027,7 @@ def get("http://localhost:4001/users/fuser2/following", _, _, _) do }} end - def get("http://domain-with-errors:4001/users/fuser1/followers", _, _, _) do + def get("http://domain-with-errors:4001/u/fuser1/followers", _, _, _) do {:ok, %Tesla.Env{ status: 504, @@ -1035,7 +1035,7 @@ def get("http://domain-with-errors:4001/users/fuser1/followers", _, _, _) do }} end - def get("http://domain-with-errors:4001/users/fuser1/following", _, _, _) do + def get("http://domain-with-errors:4001/u/fuser1/following", _, _, _) do {:ok, %Tesla.Env{ status: 504,