Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F33095902
emoji_reaction_controller_test.exs
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Size
11 KB
Referenced Files
None
Subscribers
None
emoji_reaction_controller_test.exs
View Options
# Pleroma: A lightweight social networking server
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
defmodule
Pleroma.Web.PleromaAPI.EmojiReactionControllerTest
do
use
Oban.Testing
,
repo
:
Pleroma.Repo
use
Pleroma.Web.ConnCase
alias
Pleroma.Object
alias
Pleroma.Tests.ObanHelpers
alias
Pleroma.User
alias
Pleroma.Web.CommonAPI
import
Pleroma.Factory
setup
do
Mox
.
stub_with
(
Pleroma.UnstubbedConfigMock
,
Pleroma.Config
)
:ok
end
test
"PUT /api/v1/pleroma/statuses/:id/reactions/:emoji"
,
%{
conn
:
conn
}
do
user
=
insert
(
:user
)
other_user
=
insert
(
:user
)
note
=
insert
(
:note
,
user
:
user
,
data
:
%{
"reactions"
=>
[[
"👍"
,
[
other_user
.
ap_id
],
nil
]]})
activity
=
insert
(
:note_activity
,
note
:
note
,
user
:
user
)
result
=
conn
|>
assign
(
:user
,
other_user
)
|>
assign
(
:token
,
insert
(
:oauth_token
,
user
:
other_user
,
scopes
:
[
"write:statuses"
]))
|>
put
(
"/api/v1/pleroma/statuses/
#{
activity
.
id
}
/reactions/\u26A0"
)
|>
json_response_and_validate_schema
(
200
)
assert
%{
"id"
=>
id
}
=
result
assert
to_string
(
activity
.
id
)
==
id
assert
result
[
"pleroma"
][
"emoji_reactions"
]
==
[
%{
"name"
=>
"👍"
,
"count"
=>
1
,
"me"
=>
true
,
"url"
=>
nil
,
"account_ids"
=>
[
other_user
.
id
]
},
%{
"name"
=>
"\u26A0\uFE0F"
,
"count"
=>
1
,
"me"
=>
true
,
"url"
=>
nil
,
"account_ids"
=>
[
other_user
.
id
]
}
]
{
:ok
,
activity
}
=
CommonAPI
.
post
(
user
,
%{
status
:
"
#
cofe"
})
ObanHelpers
.
perform_all
()
# Reacting with a custom emoji
result
=
conn
|>
assign
(
:user
,
other_user
)
|>
assign
(
:token
,
insert
(
:oauth_token
,
user
:
other_user
,
scopes
:
[
"write:statuses"
]))
|>
put
(
"/api/v1/pleroma/statuses/
#{
activity
.
id
}
/reactions/:dinosaur:"
)
|>
json_response_and_validate_schema
(
200
)
assert
%{
"id"
=>
id
}
=
result
assert
to_string
(
activity
.
id
)
==
id
assert
result
[
"pleroma"
][
"emoji_reactions"
]
==
[
%{
"name"
=>
"dinosaur"
,
"count"
=>
1
,
"me"
=>
true
,
"url"
=>
"http://localhost:4001/emoji/dino walking.gif"
,
"account_ids"
=>
[
other_user
.
id
]
}
]
# Reacting with a remote emoji
note
=
insert
(
:note
,
user
:
user
,
data
:
%{
"reactions"
=>
[
[
"👍"
,
[
other_user
.
ap_id
],
nil
],
[
"wow"
,
[
other_user
.
ap_id
],
"https://remote/emoji/wow"
]
]
}
)
activity
=
insert
(
:note_activity
,
note
:
note
,
user
:
user
)
result
=
conn
|>
assign
(
:user
,
user
)
|>
assign
(
:token
,
insert
(
:oauth_token
,
user
:
user
,
scopes
:
[
"write:statuses"
]))
|>
put
(
"/api/v1/pleroma/statuses/
#{
activity
.
id
}
/reactions/:wow@remote:"
)
|>
json_response
(
200
)
assert
result
[
"pleroma"
][
"emoji_reactions"
]
==
[
%{
"account_ids"
=>
[
other_user
.
id
],
"count"
=>
1
,
"me"
=>
false
,
"name"
=>
"👍"
,
"url"
=>
nil
},
%{
"name"
=>
"wow@remote"
,
"count"
=>
2
,
"me"
=>
true
,
"url"
=>
"https://remote/emoji/wow"
,
"account_ids"
=>
[
user
.
id
,
other_user
.
id
]
}
]
# Reacting with a remote custom emoji that hasn't been reacted with yet
note
=
insert
(
:note
,
user
:
user
)
activity
=
insert
(
:note_activity
,
note
:
note
,
user
:
user
)
assert
conn
|>
assign
(
:user
,
user
)
|>
assign
(
:token
,
insert
(
:oauth_token
,
user
:
user
,
scopes
:
[
"write:statuses"
]))
|>
put
(
"/api/v1/pleroma/statuses/
#{
activity
.
id
}
/reactions/:wow@remote:"
)
|>
json_response
(
400
)
# Reacting with a non-emoji
assert
conn
|>
assign
(
:user
,
other_user
)
|>
assign
(
:token
,
insert
(
:oauth_token
,
user
:
other_user
,
scopes
:
[
"write:statuses"
]))
|>
put
(
"/api/v1/pleroma/statuses/
#{
activity
.
id
}
/reactions/x"
)
|>
json_response_and_validate_schema
(
400
)
end
test
"DELETE /api/v1/pleroma/statuses/:id/reactions/:emoji"
,
%{
conn
:
conn
}
do
user
=
insert
(
:user
)
other_user
=
insert
(
:user
)
note
=
insert
(
:note
,
user
:
user
,
data
:
%{
"reactions"
=>
[[
"wow"
,
[
user
.
ap_id
],
"https://remote/emoji/wow"
]]}
)
activity
=
insert
(
:note_activity
,
note
:
note
,
user
:
user
)
ObanHelpers
.
perform_all
()
{
:ok
,
_reaction_activity
}
=
CommonAPI
.
react_with_emoji
(
activity
.
id
,
other_user
,
"☕"
)
{
:ok
,
_reaction_activity
}
=
CommonAPI
.
react_with_emoji
(
activity
.
id
,
other_user
,
":dinosaur:"
)
{
:ok
,
_reaction_activity
}
=
CommonAPI
.
react_with_emoji
(
activity
.
id
,
other_user
,
":wow@remote:"
)
ObanHelpers
.
perform_all
()
result
=
conn
|>
assign
(
:user
,
other_user
)
|>
assign
(
:token
,
insert
(
:oauth_token
,
user
:
other_user
,
scopes
:
[
"write:statuses"
]))
|>
delete
(
"/api/v1/pleroma/statuses/
#{
activity
.
id
}
/reactions/☕"
)
assert
%{
"id"
=>
id
}
=
json_response_and_validate_schema
(
result
,
200
)
assert
to_string
(
activity
.
id
)
==
id
# Remove custom emoji
result
=
conn
|>
assign
(
:user
,
other_user
)
|>
assign
(
:token
,
insert
(
:oauth_token
,
user
:
other_user
,
scopes
:
[
"write:statuses"
]))
|>
delete
(
"/api/v1/pleroma/statuses/
#{
activity
.
id
}
/reactions/:dinosaur:"
)
assert
%{
"id"
=>
id
}
=
json_response_and_validate_schema
(
result
,
200
)
assert
to_string
(
activity
.
id
)
==
id
ObanHelpers
.
perform_all
()
object
=
Object
.
get_by_ap_id
(
activity
.
data
[
"object"
])
assert
object
.
data
[
"reaction_count"
]
==
2
# Remove custom remote emoji
result
=
conn
|>
assign
(
:user
,
other_user
)
|>
assign
(
:token
,
insert
(
:oauth_token
,
user
:
other_user
,
scopes
:
[
"write:statuses"
]))
|>
delete
(
"/api/v1/pleroma/statuses/
#{
activity
.
id
}
/reactions/:wow@remote:"
)
|>
json_response
(
200
)
assert
result
[
"pleroma"
][
"emoji_reactions"
]
==
[
%{
"name"
=>
"wow@remote"
,
"count"
=>
1
,
"me"
=>
false
,
"url"
=>
"https://remote/emoji/wow"
,
"account_ids"
=>
[
user
.
id
]
}
]
# Remove custom remote emoji that hasn't been reacted with yet
assert
conn
|>
assign
(
:user
,
other_user
)
|>
assign
(
:token
,
insert
(
:oauth_token
,
user
:
other_user
,
scopes
:
[
"write:statuses"
]))
|>
delete
(
"/api/v1/pleroma/statuses/
#{
activity
.
id
}
/reactions/:zoop@remote:"
)
|>
json_response
(
400
)
end
test
"GET /api/v1/pleroma/statuses/:id/reactions"
,
%{
conn
:
conn
}
do
user
=
insert
(
:user
)
other_user
=
insert
(
:user
)
doomed_user
=
insert
(
:user
)
{
:ok
,
activity
}
=
CommonAPI
.
post
(
user
,
%{
status
:
"
#
cofe"
})
result
=
conn
|>
get
(
"/api/v1/pleroma/statuses/
#{
activity
.
id
}
/reactions"
)
|>
json_response_and_validate_schema
(
200
)
assert
result
==
[]
{
:ok
,
_
}
=
CommonAPI
.
react_with_emoji
(
activity
.
id
,
other_user
,
"🎅"
)
{
:ok
,
_
}
=
CommonAPI
.
react_with_emoji
(
activity
.
id
,
doomed_user
,
"🎅"
)
User
.
perform
(
:delete
,
doomed_user
)
result
=
conn
|>
get
(
"/api/v1/pleroma/statuses/
#{
activity
.
id
}
/reactions"
)
|>
json_response_and_validate_schema
(
200
)
[%{
"name"
=>
"🎅"
,
"count"
=>
1
,
"accounts"
=>
[
represented_user
],
"me"
=>
false
}]
=
result
assert
represented_user
[
"id"
]
==
other_user
.
id
result
=
conn
|>
assign
(
:user
,
other_user
)
|>
assign
(
:token
,
insert
(
:oauth_token
,
user
:
other_user
,
scopes
:
[
"read:statuses"
]))
|>
get
(
"/api/v1/pleroma/statuses/
#{
activity
.
id
}
/reactions"
)
|>
json_response_and_validate_schema
(
200
)
assert
[%{
"name"
=>
"🎅"
,
"count"
=>
1
,
"accounts"
=>
[
_represented_user
],
"me"
=>
true
}]
=
result
end
test
"GET /api/v1/pleroma/statuses/:id/reactions with legacy format"
,
%{
conn
:
conn
}
do
user
=
insert
(
:user
)
other_user
=
insert
(
:user
)
note
=
insert
(
:note
,
user
:
user
,
data
:
%{
"reactions"
=>
[[
"😿"
,
[
other_user
.
ap_id
]]]
}
)
activity
=
insert
(
:note_activity
,
user
:
user
,
note
:
note
)
result
=
conn
|>
get
(
"/api/v1/pleroma/statuses/
#{
activity
.
id
}
/reactions"
)
|>
json_response_and_validate_schema
(
200
)
other_user_id
=
other_user
.
id
assert
[
%{
"name"
=>
"😿"
,
"count"
=>
1
,
"me"
=>
false
,
"url"
=>
nil
,
"accounts"
=>
[%{
"id"
=>
^
other_user_id
}]
}
]
=
result
end
test
"GET /api/v1/pleroma/statuses/:id/reactions?with_muted=true"
,
%{
conn
:
conn
}
do
user
=
insert
(
:user
)
user2
=
insert
(
:user
)
user3
=
insert
(
:user
)
token
=
insert
(
:oauth_token
,
user
:
user
,
scopes
:
[
"read:statuses"
])
{
:ok
,
activity
}
=
CommonAPI
.
post
(
user
,
%{
status
:
"
#
cofe"
})
{
:ok
,
_
}
=
CommonAPI
.
react_with_emoji
(
activity
.
id
,
user2
,
"🎅"
)
{
:ok
,
_
}
=
CommonAPI
.
react_with_emoji
(
activity
.
id
,
user3
,
"🎅"
)
result
=
conn
|>
assign
(
:user
,
user
)
|>
assign
(
:token
,
token
)
|>
get
(
"/api/v1/pleroma/statuses/
#{
activity
.
id
}
/reactions"
)
|>
json_response_and_validate_schema
(
200
)
assert
[%{
"name"
=>
"🎅"
,
"count"
=>
2
}]
=
result
User
.
mute
(
user
,
user3
)
result
=
conn
|>
assign
(
:user
,
user
)
|>
assign
(
:token
,
token
)
|>
get
(
"/api/v1/pleroma/statuses/
#{
activity
.
id
}
/reactions"
)
|>
json_response_and_validate_schema
(
200
)
assert
[%{
"name"
=>
"🎅"
,
"count"
=>
1
}]
=
result
result
=
conn
|>
assign
(
:user
,
user
)
|>
assign
(
:token
,
token
)
|>
get
(
"/api/v1/pleroma/statuses/
#{
activity
.
id
}
/reactions?with_muted=true"
)
|>
json_response_and_validate_schema
(
200
)
assert
[%{
"name"
=>
"🎅"
,
"count"
=>
2
}]
=
result
end
test
"GET /api/v1/pleroma/statuses/:id/reactions with :show_reactions disabled"
,
%{
conn
:
conn
}
do
clear_config
([
:instance
,
:show_reactions
],
false
)
user
=
insert
(
:user
)
other_user
=
insert
(
:user
)
{
:ok
,
activity
}
=
CommonAPI
.
post
(
user
,
%{
status
:
"
#
cofe"
})
{
:ok
,
_
}
=
CommonAPI
.
react_with_emoji
(
activity
.
id
,
other_user
,
"🎅"
)
result
=
conn
|>
get
(
"/api/v1/pleroma/statuses/
#{
activity
.
id
}
/reactions"
)
|>
json_response_and_validate_schema
(
200
)
assert
result
==
[]
end
test
"GET /api/v1/pleroma/statuses/:id/reactions/:emoji"
,
%{
conn
:
conn
}
do
user
=
insert
(
:user
)
other_user
=
insert
(
:user
)
{
:ok
,
activity
}
=
CommonAPI
.
post
(
user
,
%{
status
:
"
#
cofe"
})
result
=
conn
|>
get
(
"/api/v1/pleroma/statuses/
#{
activity
.
id
}
/reactions/🎅"
)
|>
json_response_and_validate_schema
(
200
)
assert
result
==
[]
{
:ok
,
_
}
=
CommonAPI
.
react_with_emoji
(
activity
.
id
,
other_user
,
"🎅"
)
{
:ok
,
_
}
=
CommonAPI
.
react_with_emoji
(
activity
.
id
,
other_user
,
"☕"
)
assert
[
%{
"name"
=>
"🎅"
,
"count"
=>
1
,
"accounts"
=>
[
represented_user
],
"me"
=>
false
,
"url"
=>
nil
}
]
=
conn
|>
get
(
"/api/v1/pleroma/statuses/
#{
activity
.
id
}
/reactions/🎅"
)
|>
json_response_and_validate_schema
(
200
)
assert
represented_user
[
"id"
]
==
other_user
.
id
end
end
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Tue, Jan 20, 9:58 AM (1 d, 14 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
972901
Default Alt Text
emoji_reaction_controller_test.exs (11 KB)
Attached To
Mode
rPUBE pleroma-upstream
Attached
Detach File
Event Timeline
Log In to Comment