Merge branch 'feature/jobs' into 'develop'
[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.Web.ActivityPub.UserView
6
7 test "Renders a user, including the public key" do
8 user = insert(:user)
9 {:ok, user} = Pleroma.Web.WebFinger.ensure_keys_present(user)
10
11 result = UserView.render("user.json", %{user: user})
12
13 assert result["id"] == user.ap_id
14 assert result["preferredUsername"] == user.nickname
15
16 assert String.contains?(result["publicKey"]["publicKeyPem"], "BEGIN PUBLIC KEY")
17 end
18
19 describe "endpoints" do
20 test "local users have a usable endpoints structure" do
21 user = insert(:user)
22 {:ok, user} = Pleroma.Web.WebFinger.ensure_keys_present(user)
23
24 result = UserView.render("user.json", %{user: user})
25
26 assert result["id"] == user.ap_id
27
28 %{
29 "sharedInbox" => _,
30 "oauthAuthorizationEndpoint" => _,
31 "oauthRegistrationEndpoint" => _,
32 "oauthTokenEndpoint" => _
33 } = result["endpoints"]
34 end
35
36 test "remote users have an empty endpoints structure" do
37 user = insert(:user, local: false)
38 {:ok, user} = Pleroma.Web.WebFinger.ensure_keys_present(user)
39
40 result = UserView.render("user.json", %{user: user})
41
42 assert result["id"] == user.ap_id
43 assert result["endpoints"] == %{}
44 end
45
46 test "instance users do not expose oAuth endpoints" do
47 user = insert(:user, nickname: nil, local: true)
48 {:ok, user} = Pleroma.Web.WebFinger.ensure_keys_present(user)
49
50 result = UserView.render("user.json", %{user: user})
51
52 refute result["endpoints"]["oauthAuthorizationEndpoint"]
53 refute result["endpoints"]["oauthRegistrationEndpoint"]
54 refute result["endpoints"]["oauthTokenEndpoint"]
55 end
56 end
57 end