2018-12-23 12:11:29 -08:00
|
|
|
# Pleroma: A lightweight social networking server
|
2020-03-01 21:08:45 -08:00
|
|
|
# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
|
2018-12-23 12:11:29 -08:00
|
|
|
# SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
|
2017-09-09 03:09:53 -07:00
|
|
|
defmodule Pleroma.Web.MastodonAPI.AccountViewTest do
|
|
|
|
use Pleroma.DataCase
|
|
|
|
import Pleroma.Factory
|
2017-09-13 06:55:10 -07:00
|
|
|
alias Pleroma.User
|
2019-07-16 04:04:11 -07:00
|
|
|
alias Pleroma.Web.CommonAPI
|
2019-03-04 18:52:23 -08:00
|
|
|
alias Pleroma.Web.MastodonAPI.AccountView
|
2017-09-09 03:09:53 -07:00
|
|
|
|
|
|
|
test "Represent a user account" do
|
2018-08-07 23:24:50 -07:00
|
|
|
source_data = %{
|
|
|
|
"tag" => [
|
|
|
|
%{
|
|
|
|
"type" => "Emoji",
|
|
|
|
"icon" => %{"url" => "/file.png"},
|
|
|
|
"name" => ":karjalanpiirakka:"
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
|
|
|
|
2019-06-13 10:08:05 -07:00
|
|
|
background_image = %{
|
|
|
|
"url" => [%{"href" => "https://example.com/images/asuka_hospital.png"}]
|
|
|
|
}
|
|
|
|
|
2018-03-30 06:01:53 -07:00
|
|
|
user =
|
|
|
|
insert(:user, %{
|
2019-10-16 11:59:21 -07:00
|
|
|
follower_count: 3,
|
|
|
|
note_count: 5,
|
|
|
|
source_data: source_data,
|
|
|
|
background: background_image,
|
2018-03-30 06:01:53 -07:00
|
|
|
nickname: "shp@shitposter.club",
|
2018-08-07 23:24:50 -07:00
|
|
|
name: ":karjalanpiirakka: shp",
|
2020-03-23 12:32:01 -07:00
|
|
|
bio:
|
|
|
|
"<script src=\"invalid-html\"></script><span>valid html</span>. a<br>b<br/>c<br >d<br />f",
|
2018-03-30 06:01:53 -07:00
|
|
|
inserted_at: ~N[2017-08-15 15:47:06.597036]
|
|
|
|
})
|
2017-09-09 03:09:53 -07:00
|
|
|
|
|
|
|
expected = %{
|
2017-11-10 08:18:19 -08:00
|
|
|
id: to_string(user.id),
|
2017-09-12 00:34:39 -07:00
|
|
|
username: "shp",
|
2017-09-09 03:09:53 -07:00
|
|
|
acct: user.nickname,
|
|
|
|
display_name: user.name,
|
|
|
|
locked: false,
|
2017-09-15 08:50:47 -07:00
|
|
|
created_at: "2017-08-15T15:47:06.000Z",
|
2017-09-09 03:09:53 -07:00
|
|
|
followers_count: 3,
|
|
|
|
following_count: 0,
|
|
|
|
statuses_count: 5,
|
2020-03-23 12:32:01 -07:00
|
|
|
note: "<span>valid html</span>. a<br/>b<br/>c<br/>d<br/>f",
|
2017-09-09 03:09:53 -07:00
|
|
|
url: user.ap_id,
|
2018-02-03 03:43:14 -08:00
|
|
|
avatar: "http://localhost:4001/images/avi.png",
|
|
|
|
avatar_static: "http://localhost:4001/images/avi.png",
|
|
|
|
header: "http://localhost:4001/images/banner.png",
|
|
|
|
header_static: "http://localhost:4001/images/banner.png",
|
2018-08-07 23:24:50 -07:00
|
|
|
emojis: [
|
|
|
|
%{
|
|
|
|
"static_url" => "/file.png",
|
|
|
|
"url" => "/file.png",
|
|
|
|
"shortcode" => "karjalanpiirakka",
|
|
|
|
"visible_in_picker" => false
|
|
|
|
}
|
|
|
|
],
|
2018-06-04 08:44:08 -07:00
|
|
|
fields: [],
|
2018-08-09 16:44:38 -07:00
|
|
|
bot: false,
|
|
|
|
source: %{
|
2020-03-23 12:32:01 -07:00
|
|
|
note: "valid html. a\nb\nc\nd\nf",
|
2019-04-24 23:14:35 -07:00
|
|
|
sensitive: false,
|
2019-09-25 19:57:41 -07:00
|
|
|
pleroma: %{
|
2019-12-10 05:19:26 -08:00
|
|
|
actor_type: "Person",
|
2019-09-25 19:57:41 -07:00
|
|
|
discoverable: false
|
|
|
|
},
|
2019-07-24 05:48:15 -07:00
|
|
|
fields: []
|
2018-12-06 09:38:52 -08:00
|
|
|
},
|
2018-12-18 03:07:05 -08:00
|
|
|
pleroma: %{
|
2019-06-13 10:08:05 -07:00
|
|
|
background_image: "https://example.com/images/asuka_hospital.png",
|
2018-12-18 03:07:05 -08:00
|
|
|
confirmation_pending: false,
|
2019-01-27 01:21:13 -08:00
|
|
|
tags: [],
|
|
|
|
is_admin: false,
|
2019-02-27 05:01:10 -08:00
|
|
|
is_moderator: false,
|
2019-04-24 10:01:42 -07:00
|
|
|
hide_favorites: true,
|
|
|
|
hide_followers: false,
|
|
|
|
hide_follows: false,
|
2019-09-13 07:37:30 -07:00
|
|
|
hide_followers_count: false,
|
|
|
|
hide_follows_count: false,
|
2019-06-03 12:51:14 -07:00
|
|
|
relationship: %{},
|
|
|
|
skip_thread_containment: false
|
2018-12-18 03:07:05 -08:00
|
|
|
}
|
2018-08-09 16:44:38 -07:00
|
|
|
}
|
|
|
|
|
2019-09-30 05:10:54 -07:00
|
|
|
assert expected == AccountView.render("show.json", %{user: user})
|
2018-08-09 16:44:38 -07:00
|
|
|
end
|
|
|
|
|
2019-03-28 04:52:09 -07:00
|
|
|
test "Represent the user account for the account owner" do
|
|
|
|
user = insert(:user)
|
|
|
|
|
2019-10-28 02:47:23 -07:00
|
|
|
notification_settings = %Pleroma.User.NotificationSetting{}
|
2019-10-16 11:59:21 -07:00
|
|
|
privacy = user.default_scope
|
2019-04-24 10:01:42 -07:00
|
|
|
|
|
|
|
assert %{
|
2019-11-12 03:36:50 -08:00
|
|
|
pleroma: %{notification_settings: ^notification_settings, allow_following_move: true},
|
2019-04-24 10:01:42 -07:00
|
|
|
source: %{privacy: ^privacy}
|
2019-09-30 05:10:54 -07:00
|
|
|
} = AccountView.render("show.json", %{user: user, for: user})
|
2019-03-28 04:52:09 -07:00
|
|
|
end
|
|
|
|
|
2018-08-09 16:44:38 -07:00
|
|
|
test "Represent a Service(bot) account" do
|
|
|
|
user =
|
|
|
|
insert(:user, %{
|
2019-10-16 11:59:21 -07:00
|
|
|
follower_count: 3,
|
|
|
|
note_count: 5,
|
2019-12-10 05:19:26 -08:00
|
|
|
source_data: %{},
|
|
|
|
actor_type: "Service",
|
2018-08-09 16:44:38 -07:00
|
|
|
nickname: "shp@shitposter.club",
|
|
|
|
inserted_at: ~N[2017-08-15 15:47:06.597036]
|
|
|
|
})
|
|
|
|
|
|
|
|
expected = %{
|
|
|
|
id: to_string(user.id),
|
|
|
|
username: "shp",
|
|
|
|
acct: user.nickname,
|
|
|
|
display_name: user.name,
|
|
|
|
locked: false,
|
|
|
|
created_at: "2017-08-15T15:47:06.000Z",
|
|
|
|
followers_count: 3,
|
|
|
|
following_count: 0,
|
|
|
|
statuses_count: 5,
|
|
|
|
note: user.bio,
|
|
|
|
url: user.ap_id,
|
|
|
|
avatar: "http://localhost:4001/images/avi.png",
|
|
|
|
avatar_static: "http://localhost:4001/images/avi.png",
|
|
|
|
header: "http://localhost:4001/images/banner.png",
|
|
|
|
header_static: "http://localhost:4001/images/banner.png",
|
|
|
|
emojis: [],
|
|
|
|
fields: [],
|
|
|
|
bot: true,
|
2017-09-16 02:52:33 -07:00
|
|
|
source: %{
|
2019-05-21 22:22:19 -07:00
|
|
|
note: user.bio,
|
2019-04-24 23:14:35 -07:00
|
|
|
sensitive: false,
|
2019-09-25 19:57:41 -07:00
|
|
|
pleroma: %{
|
2019-12-10 05:19:26 -08:00
|
|
|
actor_type: "Service",
|
2019-09-25 19:57:41 -07:00
|
|
|
discoverable: false
|
|
|
|
},
|
2019-07-24 05:48:15 -07:00
|
|
|
fields: []
|
2018-12-06 09:38:52 -08:00
|
|
|
},
|
2018-12-18 03:07:05 -08:00
|
|
|
pleroma: %{
|
2019-06-13 10:08:05 -07:00
|
|
|
background_image: nil,
|
2018-12-18 03:07:05 -08:00
|
|
|
confirmation_pending: false,
|
2019-01-27 01:21:13 -08:00
|
|
|
tags: [],
|
|
|
|
is_admin: false,
|
2019-02-27 05:01:10 -08:00
|
|
|
is_moderator: false,
|
2019-04-24 10:01:42 -07:00
|
|
|
hide_favorites: true,
|
|
|
|
hide_followers: false,
|
|
|
|
hide_follows: false,
|
2019-09-13 07:37:30 -07:00
|
|
|
hide_followers_count: false,
|
|
|
|
hide_follows_count: false,
|
2019-06-03 12:51:14 -07:00
|
|
|
relationship: %{},
|
|
|
|
skip_thread_containment: false
|
2018-12-18 03:07:05 -08:00
|
|
|
}
|
2017-09-09 03:09:53 -07:00
|
|
|
}
|
|
|
|
|
2019-09-30 05:10:54 -07:00
|
|
|
assert expected == AccountView.render("show.json", %{user: user})
|
2017-09-09 03:09:53 -07:00
|
|
|
end
|
|
|
|
|
2019-07-16 04:14:46 -07:00
|
|
|
test "Represent a deactivated user for an admin" do
|
2019-10-16 11:59:21 -07:00
|
|
|
admin = insert(:user, is_admin: true)
|
|
|
|
deactivated_user = insert(:user, deactivated: true)
|
2019-09-30 05:10:54 -07:00
|
|
|
represented = AccountView.render("show.json", %{user: deactivated_user, for: admin})
|
2019-07-16 04:14:46 -07:00
|
|
|
assert represented[:pleroma][:deactivated] == true
|
|
|
|
end
|
|
|
|
|
2017-09-09 03:09:53 -07:00
|
|
|
test "Represent a smaller mention" do
|
|
|
|
user = insert(:user)
|
|
|
|
|
|
|
|
expected = %{
|
2017-11-10 08:18:19 -08:00
|
|
|
id: to_string(user.id),
|
2017-09-09 03:09:53 -07:00
|
|
|
acct: user.nickname,
|
|
|
|
username: user.nickname,
|
|
|
|
url: user.ap_id
|
|
|
|
}
|
|
|
|
|
|
|
|
assert expected == AccountView.render("mention.json", %{user: user})
|
|
|
|
end
|
2017-09-13 06:55:10 -07:00
|
|
|
|
2019-07-16 04:04:11 -07:00
|
|
|
describe "relationship" do
|
|
|
|
test "represent a relationship for the following and followed user" do
|
|
|
|
user = insert(:user)
|
|
|
|
other_user = insert(:user)
|
2017-09-13 06:55:10 -07:00
|
|
|
|
2019-07-16 04:04:11 -07:00
|
|
|
{:ok, user} = User.follow(user, other_user)
|
|
|
|
{:ok, other_user} = User.follow(other_user, user)
|
2019-11-20 04:46:11 -08:00
|
|
|
{:ok, _subscription} = User.subscribe(user, other_user)
|
2019-11-19 12:22:10 -08:00
|
|
|
{:ok, _user_relationships} = User.mute(user, other_user, true)
|
|
|
|
{:ok, _reblog_mute} = CommonAPI.hide_reblogs(user, other_user)
|
2017-09-13 06:55:10 -07:00
|
|
|
|
2019-07-16 04:04:11 -07:00
|
|
|
expected = %{
|
|
|
|
id: to_string(other_user.id),
|
|
|
|
following: true,
|
|
|
|
followed_by: true,
|
|
|
|
blocking: false,
|
|
|
|
blocked_by: false,
|
|
|
|
muting: true,
|
|
|
|
muting_notifications: true,
|
|
|
|
subscribing: true,
|
|
|
|
requested: false,
|
|
|
|
domain_blocking: false,
|
|
|
|
showing_reblogs: false,
|
|
|
|
endorsed: false
|
|
|
|
}
|
|
|
|
|
|
|
|
assert expected ==
|
|
|
|
AccountView.render("relationship.json", %{user: user, target: other_user})
|
|
|
|
end
|
|
|
|
|
|
|
|
test "represent a relationship for the blocking and blocked user" do
|
|
|
|
user = insert(:user)
|
|
|
|
other_user = insert(:user)
|
|
|
|
|
|
|
|
{:ok, user} = User.follow(user, other_user)
|
2019-11-20 04:46:11 -08:00
|
|
|
{:ok, _subscription} = User.subscribe(user, other_user)
|
2019-11-19 12:22:10 -08:00
|
|
|
{:ok, _user_relationship} = User.block(user, other_user)
|
|
|
|
{:ok, _user_relationship} = User.block(other_user, user)
|
2019-07-16 04:04:11 -07:00
|
|
|
|
|
|
|
expected = %{
|
|
|
|
id: to_string(other_user.id),
|
|
|
|
following: false,
|
|
|
|
followed_by: false,
|
|
|
|
blocking: true,
|
|
|
|
blocked_by: true,
|
|
|
|
muting: false,
|
|
|
|
muting_notifications: false,
|
|
|
|
subscribing: false,
|
|
|
|
requested: false,
|
|
|
|
domain_blocking: false,
|
|
|
|
showing_reblogs: true,
|
|
|
|
endorsed: false
|
|
|
|
}
|
|
|
|
|
|
|
|
assert expected ==
|
|
|
|
AccountView.render("relationship.json", %{user: user, target: other_user})
|
|
|
|
end
|
|
|
|
|
2019-07-24 08:12:27 -07:00
|
|
|
test "represent a relationship for the user blocking a domain" do
|
|
|
|
user = insert(:user)
|
|
|
|
other_user = insert(:user, ap_id: "https://bad.site/users/other_user")
|
|
|
|
|
|
|
|
{:ok, user} = User.block_domain(user, "bad.site")
|
|
|
|
|
|
|
|
assert %{domain_blocking: true, blocking: false} =
|
|
|
|
AccountView.render("relationship.json", %{user: user, target: other_user})
|
|
|
|
end
|
|
|
|
|
2019-07-16 04:04:11 -07:00
|
|
|
test "represent a relationship for the user with a pending follow request" do
|
|
|
|
user = insert(:user)
|
2019-10-16 11:59:21 -07:00
|
|
|
other_user = insert(:user, locked: true)
|
2019-07-16 04:04:11 -07:00
|
|
|
|
|
|
|
{:ok, user, other_user, _} = CommonAPI.follow(user, other_user)
|
|
|
|
user = User.get_cached_by_id(user.id)
|
|
|
|
other_user = User.get_cached_by_id(other_user.id)
|
|
|
|
|
|
|
|
expected = %{
|
|
|
|
id: to_string(other_user.id),
|
|
|
|
following: false,
|
|
|
|
followed_by: false,
|
|
|
|
blocking: false,
|
|
|
|
blocked_by: false,
|
|
|
|
muting: false,
|
|
|
|
muting_notifications: false,
|
|
|
|
subscribing: false,
|
|
|
|
requested: true,
|
|
|
|
domain_blocking: false,
|
|
|
|
showing_reblogs: true,
|
|
|
|
endorsed: false
|
|
|
|
}
|
2017-09-13 06:55:10 -07:00
|
|
|
|
2019-07-16 04:04:11 -07:00
|
|
|
assert expected ==
|
|
|
|
AccountView.render("relationship.json", %{user: user, target: other_user})
|
|
|
|
end
|
2017-09-13 06:55:10 -07:00
|
|
|
end
|
2019-02-27 05:01:10 -08:00
|
|
|
|
|
|
|
test "represent an embedded relationship" do
|
|
|
|
user =
|
|
|
|
insert(:user, %{
|
2019-10-16 11:59:21 -07:00
|
|
|
follower_count: 0,
|
|
|
|
note_count: 5,
|
2019-12-10 05:19:26 -08:00
|
|
|
source_data: %{},
|
|
|
|
actor_type: "Service",
|
2019-02-27 05:01:10 -08:00
|
|
|
nickname: "shp@shitposter.club",
|
|
|
|
inserted_at: ~N[2017-08-15 15:47:06.597036]
|
|
|
|
})
|
|
|
|
|
|
|
|
other_user = insert(:user)
|
|
|
|
{:ok, other_user} = User.follow(other_user, user)
|
2019-11-19 12:22:10 -08:00
|
|
|
{:ok, _user_relationship} = User.block(other_user, user)
|
2019-04-22 00:20:43 -07:00
|
|
|
{:ok, _} = User.follow(insert(:user), user)
|
2019-02-27 05:01:10 -08:00
|
|
|
|
|
|
|
expected = %{
|
|
|
|
id: to_string(user.id),
|
|
|
|
username: "shp",
|
|
|
|
acct: user.nickname,
|
|
|
|
display_name: user.name,
|
|
|
|
locked: false,
|
|
|
|
created_at: "2017-08-15T15:47:06.000Z",
|
2019-04-22 00:20:43 -07:00
|
|
|
followers_count: 1,
|
2019-02-27 05:01:10 -08:00
|
|
|
following_count: 0,
|
|
|
|
statuses_count: 5,
|
|
|
|
note: user.bio,
|
|
|
|
url: user.ap_id,
|
|
|
|
avatar: "http://localhost:4001/images/avi.png",
|
|
|
|
avatar_static: "http://localhost:4001/images/avi.png",
|
|
|
|
header: "http://localhost:4001/images/banner.png",
|
|
|
|
header_static: "http://localhost:4001/images/banner.png",
|
|
|
|
emojis: [],
|
|
|
|
fields: [],
|
|
|
|
bot: true,
|
|
|
|
source: %{
|
2019-05-21 22:22:19 -07:00
|
|
|
note: user.bio,
|
2019-04-24 23:14:35 -07:00
|
|
|
sensitive: false,
|
2019-09-25 19:57:41 -07:00
|
|
|
pleroma: %{
|
2019-12-10 05:19:26 -08:00
|
|
|
actor_type: "Service",
|
2019-09-25 19:57:41 -07:00
|
|
|
discoverable: false
|
|
|
|
},
|
2019-07-24 05:48:15 -07:00
|
|
|
fields: []
|
2019-02-27 05:01:10 -08:00
|
|
|
},
|
|
|
|
pleroma: %{
|
2019-06-13 10:08:05 -07:00
|
|
|
background_image: nil,
|
2019-02-27 05:01:10 -08:00
|
|
|
confirmation_pending: false,
|
|
|
|
tags: [],
|
|
|
|
is_admin: false,
|
|
|
|
is_moderator: false,
|
2019-04-24 10:01:42 -07:00
|
|
|
hide_favorites: true,
|
|
|
|
hide_followers: false,
|
|
|
|
hide_follows: false,
|
2019-09-13 07:37:30 -07:00
|
|
|
hide_followers_count: false,
|
|
|
|
hide_follows_count: false,
|
2019-02-27 05:01:10 -08:00
|
|
|
relationship: %{
|
|
|
|
id: to_string(user.id),
|
|
|
|
following: false,
|
|
|
|
followed_by: false,
|
|
|
|
blocking: true,
|
2019-07-16 04:04:11 -07:00
|
|
|
blocked_by: false,
|
2019-04-05 08:51:45 -07:00
|
|
|
subscribing: false,
|
2019-02-27 05:01:10 -08:00
|
|
|
muting: false,
|
|
|
|
muting_notifications: false,
|
|
|
|
requested: false,
|
|
|
|
domain_blocking: false,
|
2019-03-09 05:22:55 -08:00
|
|
|
showing_reblogs: true,
|
2019-02-27 05:01:10 -08:00
|
|
|
endorsed: false
|
2019-06-03 12:51:14 -07:00
|
|
|
},
|
|
|
|
skip_thread_containment: false
|
2019-02-27 05:01:10 -08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-11-27 04:43:47 -08:00
|
|
|
assert expected ==
|
|
|
|
AccountView.render("show.json", %{user: refresh_record(user), for: other_user})
|
2019-02-27 05:01:10 -08:00
|
|
|
end
|
2019-05-31 05:27:15 -07:00
|
|
|
|
|
|
|
test "returns the settings store if the requesting user is the represented user and it's requested specifically" do
|
2019-10-16 11:59:21 -07:00
|
|
|
user = insert(:user, pleroma_settings_store: %{fe: "test"})
|
2019-05-31 05:27:15 -07:00
|
|
|
|
|
|
|
result =
|
2019-09-30 05:10:54 -07:00
|
|
|
AccountView.render("show.json", %{user: user, for: user, with_pleroma_settings: true})
|
2019-05-31 05:27:15 -07:00
|
|
|
|
2019-05-31 05:49:46 -07:00
|
|
|
assert result.pleroma.settings_store == %{:fe => "test"}
|
2019-05-31 05:27:15 -07:00
|
|
|
|
2019-09-30 05:10:54 -07:00
|
|
|
result = AccountView.render("show.json", %{user: user, with_pleroma_settings: true})
|
2019-05-31 05:49:46 -07:00
|
|
|
assert result.pleroma[:settings_store] == nil
|
2019-05-31 05:27:15 -07:00
|
|
|
|
2019-09-30 05:10:54 -07:00
|
|
|
result = AccountView.render("show.json", %{user: user, for: user})
|
2019-05-31 05:49:46 -07:00
|
|
|
assert result.pleroma[:settings_store] == nil
|
2019-05-31 05:27:15 -07:00
|
|
|
end
|
2019-06-18 04:09:15 -07:00
|
|
|
|
2020-01-30 08:47:57 -08:00
|
|
|
test "doesn't sanitize display names" do
|
2019-06-18 04:09:15 -07:00
|
|
|
user = insert(:user, name: "<marquee> username </marquee>")
|
2019-09-30 05:10:54 -07:00
|
|
|
result = AccountView.render("show.json", %{user: user})
|
2020-01-30 08:47:57 -08:00
|
|
|
assert result.display_name == "<marquee> username </marquee>"
|
2019-06-18 04:09:15 -07:00
|
|
|
end
|
2019-08-09 06:49:09 -07:00
|
|
|
|
2019-11-27 05:48:28 -08:00
|
|
|
test "never display nil user follow counts" do
|
|
|
|
user = insert(:user, following_count: 0, follower_count: 0)
|
|
|
|
result = AccountView.render("show.json", %{user: user})
|
|
|
|
|
|
|
|
assert result.following_count == 0
|
|
|
|
assert result.followers_count == 0
|
|
|
|
end
|
|
|
|
|
2019-08-09 06:49:09 -07:00
|
|
|
describe "hiding follows/following" do
|
2019-09-13 07:37:30 -07:00
|
|
|
test "shows when follows/followers stats are hidden and sets follow/follower count to 0" do
|
2019-10-16 11:59:21 -07:00
|
|
|
user =
|
|
|
|
insert(:user, %{
|
|
|
|
hide_followers: true,
|
|
|
|
hide_followers_count: true,
|
|
|
|
hide_follows: true,
|
|
|
|
hide_follows_count: true
|
|
|
|
})
|
2019-09-13 07:37:30 -07:00
|
|
|
|
2019-08-09 06:49:09 -07:00
|
|
|
other_user = insert(:user)
|
|
|
|
{:ok, user, other_user, _activity} = CommonAPI.follow(user, other_user)
|
|
|
|
{:ok, _other_user, user, _activity} = CommonAPI.follow(other_user, user)
|
|
|
|
|
|
|
|
assert %{
|
|
|
|
followers_count: 0,
|
|
|
|
following_count: 0,
|
2019-09-13 07:37:30 -07:00
|
|
|
pleroma: %{hide_follows_count: true, hide_followers_count: true}
|
2019-09-30 05:10:54 -07:00
|
|
|
} = AccountView.render("show.json", %{user: user})
|
2019-09-13 07:37:30 -07:00
|
|
|
end
|
|
|
|
|
|
|
|
test "shows when follows/followers are hidden" do
|
2019-10-16 11:59:21 -07:00
|
|
|
user = insert(:user, hide_followers: true, hide_follows: true)
|
2019-09-13 07:37:30 -07:00
|
|
|
other_user = insert(:user)
|
|
|
|
{:ok, user, other_user, _activity} = CommonAPI.follow(user, other_user)
|
|
|
|
{:ok, _other_user, user, _activity} = CommonAPI.follow(other_user, user)
|
|
|
|
|
|
|
|
assert %{
|
|
|
|
followers_count: 1,
|
|
|
|
following_count: 1,
|
2019-08-09 06:49:09 -07:00
|
|
|
pleroma: %{hide_follows: true, hide_followers: true}
|
2019-09-30 05:10:54 -07:00
|
|
|
} = AccountView.render("show.json", %{user: user})
|
2019-08-09 06:49:09 -07:00
|
|
|
end
|
|
|
|
|
|
|
|
test "shows actual follower/following count to the account owner" do
|
2019-10-16 11:59:21 -07:00
|
|
|
user = insert(:user, hide_followers: true, hide_follows: true)
|
2019-08-09 06:49:09 -07:00
|
|
|
other_user = insert(:user)
|
|
|
|
{:ok, user, other_user, _activity} = CommonAPI.follow(user, other_user)
|
|
|
|
{:ok, _other_user, user, _activity} = CommonAPI.follow(other_user, user)
|
|
|
|
|
|
|
|
assert %{
|
|
|
|
followers_count: 1,
|
|
|
|
following_count: 1
|
2019-09-30 05:10:54 -07:00
|
|
|
} = AccountView.render("show.json", %{user: user, for: user})
|
2019-08-09 06:49:09 -07:00
|
|
|
end
|
2019-10-01 14:37:08 -07:00
|
|
|
|
|
|
|
test "shows unread_conversation_count only to the account owner" do
|
|
|
|
user = insert(:user)
|
|
|
|
other_user = insert(:user)
|
|
|
|
|
|
|
|
{:ok, _activity} =
|
2019-10-17 05:25:15 -07:00
|
|
|
CommonAPI.post(other_user, %{
|
|
|
|
"status" => "Hey @#{user.nickname}.",
|
2019-10-01 14:37:08 -07:00
|
|
|
"visibility" => "direct"
|
|
|
|
})
|
|
|
|
|
|
|
|
user = User.get_cached_by_ap_id(user.ap_id)
|
|
|
|
|
|
|
|
assert AccountView.render("show.json", %{user: user, for: other_user})[:pleroma][
|
|
|
|
:unread_conversation_count
|
|
|
|
] == nil
|
|
|
|
|
|
|
|
assert AccountView.render("show.json", %{user: user, for: user})[:pleroma][
|
|
|
|
:unread_conversation_count
|
|
|
|
] == 1
|
|
|
|
end
|
2019-08-09 06:49:09 -07:00
|
|
|
end
|
2019-09-26 21:22:40 -07:00
|
|
|
|
|
|
|
describe "follow requests counter" do
|
|
|
|
test "shows zero when no follow requests are pending" do
|
|
|
|
user = insert(:user)
|
|
|
|
|
|
|
|
assert %{follow_requests_count: 0} =
|
2019-09-30 05:10:54 -07:00
|
|
|
AccountView.render("show.json", %{user: user, for: user})
|
2019-09-26 21:22:40 -07:00
|
|
|
|
|
|
|
other_user = insert(:user)
|
|
|
|
{:ok, _other_user, user, _activity} = CommonAPI.follow(other_user, user)
|
|
|
|
|
|
|
|
assert %{follow_requests_count: 0} =
|
2019-09-30 05:10:54 -07:00
|
|
|
AccountView.render("show.json", %{user: user, for: user})
|
2019-09-26 21:22:40 -07:00
|
|
|
end
|
|
|
|
|
|
|
|
test "shows non-zero when follow requests are pending" do
|
2019-10-16 11:59:21 -07:00
|
|
|
user = insert(:user, locked: true)
|
2019-09-26 21:22:40 -07:00
|
|
|
|
2019-09-30 05:10:54 -07:00
|
|
|
assert %{locked: true} = AccountView.render("show.json", %{user: user, for: user})
|
2019-09-26 21:22:40 -07:00
|
|
|
|
|
|
|
other_user = insert(:user)
|
|
|
|
{:ok, _other_user, user, _activity} = CommonAPI.follow(other_user, user)
|
|
|
|
|
|
|
|
assert %{locked: true, follow_requests_count: 1} =
|
2019-09-30 05:10:54 -07:00
|
|
|
AccountView.render("show.json", %{user: user, for: user})
|
2019-09-26 21:22:40 -07:00
|
|
|
end
|
|
|
|
|
|
|
|
test "decreases when accepting a follow request" do
|
2019-10-16 11:59:21 -07:00
|
|
|
user = insert(:user, locked: true)
|
2019-09-26 21:22:40 -07:00
|
|
|
|
2019-09-30 05:10:54 -07:00
|
|
|
assert %{locked: true} = AccountView.render("show.json", %{user: user, for: user})
|
2019-09-26 21:22:40 -07:00
|
|
|
|
|
|
|
other_user = insert(:user)
|
|
|
|
{:ok, other_user, user, _activity} = CommonAPI.follow(other_user, user)
|
|
|
|
|
|
|
|
assert %{locked: true, follow_requests_count: 1} =
|
2019-09-30 05:10:54 -07:00
|
|
|
AccountView.render("show.json", %{user: user, for: user})
|
2019-09-26 21:22:40 -07:00
|
|
|
|
|
|
|
{:ok, _other_user} = CommonAPI.accept_follow_request(other_user, user)
|
|
|
|
|
|
|
|
assert %{locked: true, follow_requests_count: 0} =
|
2019-09-30 05:10:54 -07:00
|
|
|
AccountView.render("show.json", %{user: user, for: user})
|
2019-09-26 21:22:40 -07:00
|
|
|
end
|
|
|
|
|
|
|
|
test "decreases when rejecting a follow request" do
|
2019-10-16 11:59:21 -07:00
|
|
|
user = insert(:user, locked: true)
|
2019-09-26 21:22:40 -07:00
|
|
|
|
2019-09-30 05:10:54 -07:00
|
|
|
assert %{locked: true} = AccountView.render("show.json", %{user: user, for: user})
|
2019-09-26 21:22:40 -07:00
|
|
|
|
|
|
|
other_user = insert(:user)
|
|
|
|
{:ok, other_user, user, _activity} = CommonAPI.follow(other_user, user)
|
|
|
|
|
|
|
|
assert %{locked: true, follow_requests_count: 1} =
|
2019-09-30 05:10:54 -07:00
|
|
|
AccountView.render("show.json", %{user: user, for: user})
|
2019-09-26 21:22:40 -07:00
|
|
|
|
|
|
|
{:ok, _other_user} = CommonAPI.reject_follow_request(other_user, user)
|
|
|
|
|
|
|
|
assert %{locked: true, follow_requests_count: 0} =
|
2019-09-30 05:10:54 -07:00
|
|
|
AccountView.render("show.json", %{user: user, for: user})
|
2019-09-26 21:22:40 -07:00
|
|
|
end
|
|
|
|
|
|
|
|
test "shows non-zero when historical unapproved requests are present" do
|
2019-10-16 11:59:21 -07:00
|
|
|
user = insert(:user, locked: true)
|
2019-09-26 21:22:40 -07:00
|
|
|
|
2019-09-30 05:10:54 -07:00
|
|
|
assert %{locked: true} = AccountView.render("show.json", %{user: user, for: user})
|
2019-09-26 21:22:40 -07:00
|
|
|
|
|
|
|
other_user = insert(:user)
|
|
|
|
{:ok, _other_user, user, _activity} = CommonAPI.follow(other_user, user)
|
|
|
|
|
2019-10-16 11:59:21 -07:00
|
|
|
{:ok, user} = User.update_and_set_cache(user, %{locked: false})
|
2019-09-26 21:22:40 -07:00
|
|
|
|
|
|
|
assert %{locked: false, follow_requests_count: 1} =
|
2019-09-30 05:10:54 -07:00
|
|
|
AccountView.render("show.json", %{user: user, for: user})
|
2019-09-26 21:22:40 -07:00
|
|
|
end
|
|
|
|
end
|
2017-09-09 03:09:53 -07:00
|
|
|
end
|