Merge remote-tracking branch 'upstream/develop' into admin-create-users
[akkoma] / test / web / activity_pub / views / user_view_test.exs
1 defmodule Pleroma.Web.ActivityPub.UserViewTest do
2 use Pleroma.DataCase
3 import Pleroma.Factory
4
5 alias Pleroma.User
6 alias Pleroma.Web.ActivityPub.UserView
7
8 test "Renders a user, including the public key" do
9 user = insert(:user)
10 {:ok, user} = User.ensure_keys_present(user)
11
12 result = UserView.render("user.json", %{user: user})
13
14 assert result["id"] == user.ap_id
15 assert result["preferredUsername"] == user.nickname
16
17 assert String.contains?(result["publicKey"]["publicKeyPem"], "BEGIN PUBLIC KEY")
18 end
19
20 test "Does not add an avatar image if the user hasn't set one" do
21 user = insert(:user)
22 {:ok, user} = User.ensure_keys_present(user)
23
24 result = UserView.render("user.json", %{user: user})
25 refute result["icon"]
26 refute result["image"]
27
28 user =
29 insert(:user,
30 avatar: %{"url" => [%{"href" => "https://someurl"}]},
31 info: %{
32 banner: %{"url" => [%{"href" => "https://somebanner"}]}
33 }
34 )
35
36 {:ok, user} = User.ensure_keys_present(user)
37
38 result = UserView.render("user.json", %{user: user})
39 assert result["icon"]["url"] == "https://someurl"
40 assert result["image"]["url"] == "https://somebanner"
41 end
42
43 describe "endpoints" do
44 test "local users have a usable endpoints structure" do
45 user = insert(:user)
46 {:ok, user} = User.ensure_keys_present(user)
47
48 result = UserView.render("user.json", %{user: user})
49
50 assert result["id"] == user.ap_id
51
52 %{
53 "sharedInbox" => _,
54 "oauthAuthorizationEndpoint" => _,
55 "oauthRegistrationEndpoint" => _,
56 "oauthTokenEndpoint" => _
57 } = result["endpoints"]
58 end
59
60 test "remote users have an empty endpoints structure" do
61 user = insert(:user, local: false)
62 {:ok, user} = User.ensure_keys_present(user)
63
64 result = UserView.render("user.json", %{user: user})
65
66 assert result["id"] == user.ap_id
67 assert result["endpoints"] == %{}
68 end
69
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)
73
74 result = UserView.render("user.json", %{user: user})
75
76 refute result["endpoints"]["oauthAuthorizationEndpoint"]
77 refute result["endpoints"]["oauthRegistrationEndpoint"]
78 refute result["endpoints"]["oauthTokenEndpoint"]
79 end
80 end
81 end