1 defmodule Pleroma.Web.ActivityPub.UserViewTest do
6 alias Pleroma.Web.ActivityPub.UserView
8 test "Renders a user, including the public key" do
10 {:ok, user} = User.ensure_keys_present(user)
12 result = UserView.render("user.json", %{user: user})
14 assert result["id"] == user.ap_id
15 assert result["preferredUsername"] == user.nickname
17 assert String.contains?(result["publicKey"]["publicKeyPem"], "BEGIN PUBLIC KEY")
20 test "Does not add an avatar image if the user hasn't set one" do
22 {:ok, user} = User.ensure_keys_present(user)
24 result = UserView.render("user.json", %{user: user})
26 refute result["image"]
30 avatar: %{"url" => [%{"href" => "https://someurl"}]},
32 banner: %{"url" => [%{"href" => "https://somebanner"}]}
36 {:ok, user} = User.ensure_keys_present(user)
38 result = UserView.render("user.json", %{user: user})
39 assert result["icon"]["url"] == "https://someurl"
40 assert result["image"]["url"] == "https://somebanner"
43 describe "endpoints" do
44 test "local users have a usable endpoints structure" do
46 {:ok, user} = User.ensure_keys_present(user)
48 result = UserView.render("user.json", %{user: user})
50 assert result["id"] == user.ap_id
54 "oauthAuthorizationEndpoint" => _,
55 "oauthRegistrationEndpoint" => _,
56 "oauthTokenEndpoint" => _
57 } = result["endpoints"]
60 test "remote users have an empty endpoints structure" do
61 user = insert(:user, local: false)
62 {:ok, user} = User.ensure_keys_present(user)
64 result = UserView.render("user.json", %{user: user})
66 assert result["id"] == user.ap_id
67 assert result["endpoints"] == %{}
70 test "instance users do not expose oAuth endpoints" do
71 user = insert(:user, nickname: nil, local: true)
72 {:ok, user} = User.ensure_keys_present(user)
74 result = UserView.render("user.json", %{user: user})
76 refute result["endpoints"]["oauthAuthorizationEndpoint"]
77 refute result["endpoints"]["oauthRegistrationEndpoint"]
78 refute result["endpoints"]["oauthTokenEndpoint"]