From 9e83d64723e775008b7ba64a285d6cfb2400f3e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20David=20Mart=C3=ADnez=20Cubillos?= Date: Wed, 19 Jul 2023 14:09:26 -0500 Subject: [PATCH] DEV: Add Custom emoji sanitization (#22697) * DEV: Add Custom emoji sanitization * added tests for implemented changes --- lib/plugin/instance.rb | 1 + spec/lib/plugin/instance_spec.rb | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/lib/plugin/instance.rb b/lib/plugin/instance.rb index 21ddd51c167..b5823f050b4 100644 --- a/lib/plugin/instance.rb +++ b/lib/plugin/instance.rb @@ -684,6 +684,7 @@ class Plugin::Instance end def register_emoji(name, url, group = Emoji::DEFAULT_GROUP) + name = name.gsub(/[^a-z0-9]+/i, "_").gsub(/_{2,}/, "_").downcase Plugin::CustomEmoji.register(name, url, group) Emoji.clear_cache end diff --git a/spec/lib/plugin/instance_spec.rb b/spec/lib/plugin/instance_spec.rb index e08b5f67f09..cc07ac964ab 100644 --- a/spec/lib/plugin/instance_spec.rb +++ b/spec/lib/plugin/instance_spec.rb @@ -589,6 +589,14 @@ RSpec.describe Plugin::Instance do expect(custom_emoji.url).to eq("/baz/bar.png") expect(custom_emoji.group).to eq("baz") end + + it "sanitizes emojis' names" do + Plugin::Instance.new.register_emoji("?", "/baz/bar.png", "baz") + Plugin::Instance.new.register_emoji("?test?!!", "/foo/bar.png", "baz") + + expect(Emoji.custom.first.name).to eq("_") + expect(Emoji.custom.second.name).to eq("_test_") + end end describe "#replace_flags" do