Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F21907441
account_view_test.exs
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Size
7 KB
Referenced Files
None
Subscribers
None
account_view_test.exs
View Options
# Pleroma: A lightweight social networking server
# Copyright © 2017-2018 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
defmodule
Pleroma.Web.MastodonAPI.AccountViewTest
do
use
Pleroma.DataCase
import
Pleroma.Factory
alias
Pleroma.User
alias
Pleroma.Web.MastodonAPI.AccountView
test
"Represent a user account"
do
source_data
=
%{
"tag"
=>
[
%{
"type"
=>
"Emoji"
,
"icon"
=>
%{
"url"
=>
"/file.png"
},
"name"
=>
":karjalanpiirakka:"
}
]
}
background_image
=
%{
"url"
=>
[%{
"href"
=>
"https://example.com/images/asuka_hospital.png"
}]
}
user
=
insert
(
:user
,
%{
info
:
%{
note_count
:
5
,
follower_count
:
3
,
source_data
:
source_data
,
background
:
background_image
},
nickname
:
"shp@shitposter.club"
,
name
:
":karjalanpiirakka: shp"
,
bio
:
"<script src=\"invalid-html\"></script><span>valid html</span>"
,
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
:
"<span>valid html</span>"
,
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
:
[
%{
"static_url"
=>
"/file.png"
,
"url"
=>
"/file.png"
,
"shortcode"
=>
"karjalanpiirakka"
,
"visible_in_picker"
=>
false
}
],
fields
:
[],
bot
:
false
,
source
:
%{
note
:
"valid html"
,
sensitive
:
false
,
pleroma
:
%{}
},
pleroma
:
%{
background_image
:
"https://example.com/images/asuka_hospital.png"
,
confirmation_pending
:
false
,
tags
:
[],
is_admin
:
false
,
is_moderator
:
false
,
hide_favorites
:
true
,
hide_followers
:
false
,
hide_follows
:
false
,
relationship
:
%{},
skip_thread_containment
:
false
}
}
assert
expected
==
AccountView
.
render
(
"account.json"
,
%{
user
:
user
})
end
test
"Represent the user account for the account owner"
do
user
=
insert
(
:user
)
notification_settings
=
%{
"followers"
=>
true
,
"follows"
=>
true
,
"non_follows"
=>
true
,
"non_followers"
=>
true
}
privacy
=
user
.
info
.
default_scope
assert
%{
pleroma
:
%{
notification_settings
:
^
notification_settings
},
source
:
%{
privacy
:
^
privacy
}
}
=
AccountView
.
render
(
"account.json"
,
%{
user
:
user
,
for
:
user
})
end
test
"Represent a Service(bot) account"
do
user
=
insert
(
:user
,
%{
info
:
%{
note_count
:
5
,
follower_count
:
3
,
source_data
:
%{
"type"
=>
"Service"
}},
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
,
source
:
%{
note
:
user
.
bio
,
sensitive
:
false
,
pleroma
:
%{}
},
pleroma
:
%{
background_image
:
nil
,
confirmation_pending
:
false
,
tags
:
[],
is_admin
:
false
,
is_moderator
:
false
,
hide_favorites
:
true
,
hide_followers
:
false
,
hide_follows
:
false
,
relationship
:
%{},
skip_thread_containment
:
false
}
}
assert
expected
==
AccountView
.
render
(
"account.json"
,
%{
user
:
user
})
end
test
"Represent a smaller mention"
do
user
=
insert
(
:user
)
expected
=
%{
id
:
to_string
(
user
.
id
),
acct
:
user
.
nickname
,
username
:
user
.
nickname
,
url
:
user
.
ap_id
}
assert
expected
==
AccountView
.
render
(
"mention.json"
,
%{
user
:
user
})
end
test
"represent a relationship"
do
user
=
insert
(
:user
)
other_user
=
insert
(
:user
)
{
:ok
,
user
}
=
User
.
follow
(
user
,
other_user
)
{
:ok
,
user
}
=
User
.
block
(
user
,
other_user
)
expected
=
%{
id
:
to_string
(
other_user
.
id
),
following
:
false
,
followed_by
:
false
,
blocking
:
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
test
"represent an embedded relationship"
do
user
=
insert
(
:user
,
%{
info
:
%{
note_count
:
5
,
follower_count
:
0
,
source_data
:
%{
"type"
=>
"Service"
}},
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
)
{
:ok
,
other_user
}
=
User
.
block
(
other_user
,
user
)
{
:ok
,
_
}
=
User
.
follow
(
insert
(
:user
),
user
)
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
:
1
,
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
:
%{
note
:
user
.
bio
,
sensitive
:
false
,
pleroma
:
%{}
},
pleroma
:
%{
background_image
:
nil
,
confirmation_pending
:
false
,
tags
:
[],
is_admin
:
false
,
is_moderator
:
false
,
hide_favorites
:
true
,
hide_followers
:
false
,
hide_follows
:
false
,
relationship
:
%{
id
:
to_string
(
user
.
id
),
following
:
false
,
followed_by
:
false
,
blocking
:
true
,
subscribing
:
false
,
muting
:
false
,
muting_notifications
:
false
,
requested
:
false
,
domain_blocking
:
false
,
showing_reblogs
:
true
,
endorsed
:
false
},
skip_thread_containment
:
false
}
}
assert
expected
==
AccountView
.
render
(
"account.json"
,
%{
user
:
user
,
for
:
other_user
})
end
test
"returns the settings store if the requesting user is the represented user and it's requested specifically"
do
user
=
insert
(
:user
,
%{
info
:
%
User.Info
{
pleroma_settings_store
:
%{
fe
:
"test"
}}})
result
=
AccountView
.
render
(
"account.json"
,
%{
user
:
user
,
for
:
user
,
with_pleroma_settings
:
true
})
assert
result
.
pleroma
.
settings_store
==
%{
:fe
=>
"test"
}
result
=
AccountView
.
render
(
"account.json"
,
%{
user
:
user
,
with_pleroma_settings
:
true
})
assert
result
.
pleroma
[
:settings_store
]
==
nil
result
=
AccountView
.
render
(
"account.json"
,
%{
user
:
user
,
for
:
user
})
assert
result
.
pleroma
[
:settings_store
]
==
nil
end
test
"sanitizes display names"
do
user
=
insert
(
:user
,
name
:
"<marquee> username </marquee>"
)
result
=
AccountView
.
render
(
"account.json"
,
%{
user
:
user
})
refute
result
.
display_name
==
"<marquee> username </marquee>"
end
end
File Metadata
Details
Attached
Mime Type
text/html
Expires
Sun, Dec 28, 1:41 AM (17 h, 25 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
839886
Default Alt Text
account_view_test.exs (7 KB)
Attached To
Mode
rPUBE pleroma-upstream
Attached
Detach File
Event Timeline
Log In to Comment