diff --git a/src/test/java/stirling/software/SPDF/utils/CustomHtmlSanitizerTest.java b/src/test/java/stirling/software/SPDF/utils/CustomHtmlSanitizerTest.java index 348ad1029..ad403331a 100644 --- a/src/test/java/stirling/software/SPDF/utils/CustomHtmlSanitizerTest.java +++ b/src/test/java/stirling/software/SPDF/utils/CustomHtmlSanitizerTest.java @@ -8,62 +8,39 @@ import org.junit.jupiter.api.Test; class CustomHtmlSanitizerTest { - @Test - void testSanitizeAllowsValidHtml() { - // Arrange - String validHtml = "

This is valid HTML with formatting.

"; - + @ParameterizedTest + @MethodSource("provideHtmlTestCases") + void testSanitizeHtml(String inputHtml, String[] expectedContainedTags) { // Act - String sanitizedHtml = CustomHtmlSanitizer.sanitize(validHtml); + String sanitizedHtml = CustomHtmlSanitizer.sanitize(inputHtml); // Assert - assertEquals(validHtml, sanitizedHtml); + for (String tag : expectedContainedTags) { + assertTrue(sanitizedHtml.contains(tag), tag + " should be preserved"); + } } - @Test - void testSanitizeAllowsFormattingElements() { - // Arrange - Testing Sanitizers.FORMATTING - String htmlWithFormatting = + private static Stream provideHtmlTestCases() { + return Stream.of( + Arguments.of( + "

This is valid HTML with formatting.

", + new String[] {"

", "", ""} + ), + Arguments.of( "

Text with bold, italic, underline, " + "emphasis, strong, strikethrough, " + "strike, subscript, superscript, " - + "teletype, code, big, small.

"; - - // Act - String sanitizedHtml = CustomHtmlSanitizer.sanitize(htmlWithFormatting); - - // Assert - assertTrue(sanitizedHtml.contains("bold"), "Bold tags should be preserved"); - assertTrue(sanitizedHtml.contains("italic"), "Italic tags should be preserved"); - assertTrue( - sanitizedHtml.contains("emphasis"), "Emphasis tags should be preserved"); - assertTrue( - sanitizedHtml.contains("strong"), - "Strong tags should be preserved"); - // Note: Some formatting tags might be removed or transformed by the sanitizer, - // so we're checking the most common ones guaranteed to be preserved - } - - @Test - void testSanitizeAllowsBlockElements() { - // Arrange - Testing Sanitizers.BLOCKS - String htmlWithBlocks = + + "teletype, code, big, small.

", + new String[] {"bold", "italic", "emphasis", "strong"} + ), + Arguments.of( "
Division

Heading 1

Heading 2

Heading 3

" + "

Heading 4

Heading 5
Heading 6
" + "
Blockquote
  • List item
" - + "
  1. Ordered item
"; - - // Act - String sanitizedHtml = CustomHtmlSanitizer.sanitize(htmlWithBlocks); - - // Assert - assertTrue(sanitizedHtml.contains("
"), "Div tags should be preserved"); - assertTrue(sanitizedHtml.contains("

"), "H1 tags should be preserved"); - assertTrue(sanitizedHtml.contains("

"), "H6 tags should be preserved"); - assertTrue(sanitizedHtml.contains("
"), "Blockquote tags should be preserved"); - assertTrue(sanitizedHtml.contains("
    "), "UL tags should be preserved"); - assertTrue(sanitizedHtml.contains("
      "), "OL tags should be preserved"); - assertTrue(sanitizedHtml.contains("
    1. "), "LI tags should be preserved"); + + "
      1. Ordered item
      ", + new String[] {"
      ", "

      ", "

      ", "
      ", "
        ", "
          ", "
        1. "} + ) + ); } @Test