@@ -210,4 +210,39 @@ void entityLinkWithScriptInjectionIsStillSafe() {
210210 assertTrue (result .contains ("<#E::table::clean.fqn>" ));
211211 assertFalse (result .contains ("<script" ));
212212 }
213+
214+ @ Test
215+ void entityMentionAttributesOnAnchorArePreserved () {
216+ String input =
217+ "<p><a data-type=\" hashtag\" data-id=\" abc123\" data-label=\" Article\" "
218+ + " href=\" https://open-metadata.example.org/tags/KnowledgeCenter\" "
219+ + " data-entitytype=\" tag\" data-fqn=\" KnowledgeCenter.Article\" >"
220+ + "<#E::tag::KnowledgeCenter.Article|[#Article](https://open-metadata.example.org/tags/KnowledgeCenter)>"
221+ + "</a></p>" ;
222+ String result = DescriptionSanitizer .sanitize (input );
223+
224+ assertTrue (result .contains ("data-type=\" hashtag\" " ));
225+ assertTrue (result .contains ("data-label=\" Article\" " ));
226+ assertTrue (result .contains ("data-fqn=\" KnowledgeCenter.Article\" " ));
227+ assertTrue (result .contains ("data-entitytype=\" tag\" " ));
228+ assertTrue (
229+ result .contains (
230+ "<#E::tag::KnowledgeCenter.Article|[#Article](https://open-metadata.example.org/tags/KnowledgeCenter)>" ));
231+ }
232+
233+ @ Test
234+ void entityMentionAttributesOnAnchorArePreservedForMention () {
235+ String input =
236+ "<a data-type=\" mention\" data-id=\" u1\" data-label=\" admin\" "
237+ + " href=\" https://open-metadata.example.org/users/admin\" "
238+ + " data-entitytype=\" user\" data-fqn=\" admin\" >"
239+ + "<#E::user::admin|[@admin](https://open-metadata.example.org/users/admin)>"
240+ + "</a>" ;
241+ String result = DescriptionSanitizer .sanitize (input );
242+
243+ assertTrue (result .contains ("data-type=\" mention\" " ));
244+ assertTrue (result .contains ("data-label=\" admin\" " ));
245+ assertTrue (result .contains ("data-fqn=\" admin\" " ));
246+ assertTrue (result .contains ("data-entitytype=\" user\" " ));
247+ }
213248}
0 commit comments