using PrivaPub.Federation.Objects; namespace PrivaPub.Tests.Federation { public class ContentSanitizerTests { [Theory] [InlineData("
hi
", "hi
")] [InlineData("hi
", "hi
")] [InlineData("x
", "x
")] [InlineData("", "")] [InlineData("x
", "x
")] [InlineData("ok", "ok")] [InlineData("ab
", "ab
")] [InlineData("kept
kept
")] [InlineData("Title
")] [InlineData("x", "x")] public void Removes_what_is_not_allowed(string input, string expected) => Assert.Equal(expected, ContentSanitizer.Html(input)); [Fact] public void Keeps_mastodon_mention_and_hashtag_markup() { var html = "@alice " + "#fedi " + "https://example.org/a-long
"; var sanitized = ContentSanitizer.Html(html); Assert.Contains("class=\"h-card\"", sanitized); Assert.Contains("class=\"u-url mention\"", sanitized); Assert.Contains("class=\"mention hashtag\"", sanitized); Assert.Contains("class=\"invisible\"", sanitized); Assert.Contains("class=\"ellipsis\"", sanitized); Assert.Contains("href=\"https://m.example/@alice\"", sanitized); Assert.DoesNotContain("rel=\"tag\"", sanitized); } [Theory] [InlineData("")] [InlineData(" ")] [InlineData(null)] public void Empty_input_is_empty(string input) => Assert.Equal(string.Empty, ContentSanitizer.Html(input)); } }