defmodule Pleroma.Web.ActivityPub.UserViewTest do use Pleroma.DataCase import Pleroma.Factory alias Pleroma.Web.ActivityPub.UserView test "Renders a user, including the public key" do user = insert(:user) {:ok, user} = Pleroma.Web.WebFinger.ensure_keys_present(user) result = UserView.render("user.json", %{user: user}) assert result["id"] == user.ap_id assert result["preferredUsername"] == user.nickname assert String.contains?(result["publicKey"]["publicKeyPem"], "BEGIN PUBLIC KEY") end describe "endpoints" do test "local users have a usable endpoints structure" do user = insert(:user) {:ok, user} = Pleroma.Web.WebFinger.ensure_keys_present(user) result = UserView.render("user.json", %{user: user}) assert result["id"] == user.ap_id %{ "sharedInbox" => _, "oauthAuthorizationEndpoint" => _, "oauthRegistrationEndpoint" => _, "oauthTokenEndpoint" => _ } = result["endpoints"] end test "remote users have an empty endpoints structure" do user = insert(:user, local: false) {:ok, user} = Pleroma.Web.WebFinger.ensure_keys_present(user) result = UserView.render("user.json", %{user: user}) assert result["id"] == user.ap_id assert result["endpoints"] == %{} end test "instance users do not expose oAuth endpoints" do user = insert(:user, nickname: nil, local: true) {:ok, user} = Pleroma.Web.WebFinger.ensure_keys_present(user) result = UserView.render("user.json", %{user: user}) refute result["endpoints"]["oauthAuthorizationEndpoint"] refute result["endpoints"]["oauthRegistrationEndpoint"] refute result["endpoints"]["oauthTokenEndpoint"] end end end