diff options
| -rw-r--r-- | lib/pleroma/web/mastodon_api/controllers/account_controller.ex | 23 | ||||
| -rw-r--r-- | test/web/mastodon_api/controllers/account_controller/update_credentials_test.exs | 38 | 
2 files changed, 43 insertions, 18 deletions
diff --git a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex index 47649d41d..97295a52f 100644 --- a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex @@ -139,9 +139,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do    end    @doc "PATCH /api/v1/accounts/update_credentials" -  def update_credentials(%{assigns: %{user: original_user}, body_params: params} = conn, _params) do -    user = original_user - +  def update_credentials(%{assigns: %{user: user}, body_params: params} = conn, _params) do      params =        params        |> Enum.filter(fn {_, value} -> not is_nil(value) end) @@ -183,12 +181,31 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do      changeset = User.update_changeset(user, user_params)      with {:ok, user} <- User.update_and_set_cache(changeset) do +      user +      |> build_update_activity_params() +      |> ActivityPub.update() +        render(conn, "show.json", user: user, for: user, with_pleroma_settings: true)      else        _e -> render_error(conn, :forbidden, "Invalid request")      end    end +  # Hotfix, handling will be redone with the pipeline +  defp build_update_activity_params(user) do +    object = +      Pleroma.Web.ActivityPub.UserView.render("user.json", user: user) +      |> Map.delete("@context") + +    %{ +      local: true, +      to: [user.follower_address], +      cc: [], +      object: object, +      actor: user.ap_id +    } +  end +    defp add_if_present(map, params, params_field, map_field, value_function \\ &{:ok, &1}) do      with true <- is_map(params),           true <- Map.has_key?(params, params_field), diff --git a/test/web/mastodon_api/controllers/account_controller/update_credentials_test.exs b/test/web/mastodon_api/controllers/account_controller/update_credentials_test.exs index 696228203..7c420985d 100644 --- a/test/web/mastodon_api/controllers/account_controller/update_credentials_test.exs +++ b/test/web/mastodon_api/controllers/account_controller/update_credentials_test.exs @@ -8,6 +8,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController.UpdateCredentialsTest do    use Pleroma.Web.ConnCase +  import Mock    import Pleroma.Factory    setup do: clear_config([:instance, :max_account_fields]) @@ -52,24 +53,31 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController.UpdateCredentialsTest do        user = Repo.get(User, user_data["id"]) -      res_conn = -        conn -        |> assign(:user, user) -        |> patch("/api/v1/accounts/update_credentials", %{ -          "pleroma_settings_store" => %{ -            masto_fe: %{ -              theme: "blub" +      clear_config([:instance, :federating], true) + +      with_mock Pleroma.Web.Federator, +        publish: fn _activity -> :ok end do +        res_conn = +          conn +          |> assign(:user, user) +          |> patch("/api/v1/accounts/update_credentials", %{ +            "pleroma_settings_store" => %{ +              masto_fe: %{ +                theme: "blub" +              }              } -          } -        }) +          }) -      assert user_data = json_response_and_validate_schema(res_conn, 200) +        assert user_data = json_response_and_validate_schema(res_conn, 200) -      assert user_data["pleroma"]["settings_store"] == -               %{ -                 "pleroma_fe" => %{"theme" => "bla"}, -                 "masto_fe" => %{"theme" => "blub"} -               } +        assert user_data["pleroma"]["settings_store"] == +                 %{ +                   "pleroma_fe" => %{"theme" => "bla"}, +                   "masto_fe" => %{"theme" => "blub"} +                 } + +        assert_called(Pleroma.Web.Federator.publish(:_)) +      end      end      test "updates the user's bio", %{conn: conn} do  | 
