Author: centic Date: Tue May 6 06:04:44 2025 New Revision: 1925429 URL: http://svn.apache.org/viewvc?rev=1925429&view=rev Log: Bug 69667: Test more variants of valid and invalid usernames
Modified: poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/streaming/TestSXSSFSheet.java poi/trunk/poi/src/test/java/org/apache/poi/hssf/model/TestWorkbook.java Modified: poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/streaming/TestSXSSFSheet.java URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/streaming/TestSXSSFSheet.java?rev=1925429&r1=1925428&r2=1925429&view=diff ============================================================================== --- poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/streaming/TestSXSSFSheet.java (original) +++ poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/streaming/TestSXSSFSheet.java Tue May 6 06:04:44 2025 @@ -63,6 +63,7 @@ public final class TestSXSSFSheet extend @Override @Test protected void cloneSheet() { + //noinspection Convert2MethodRef RuntimeException ex = assertThrows(RuntimeException.class, () -> super.cloneSheet()); assertEquals("Not Implemented", ex.getMessage()); } @@ -70,6 +71,7 @@ public final class TestSXSSFSheet extend @Override @Test protected void cloneSheetMultipleTimes() { + //noinspection Convert2MethodRef RuntimeException ex = assertThrows(RuntimeException.class, () -> super.cloneSheetMultipleTimes()); assertEquals("Not Implemented", ex.getMessage()); } @@ -80,6 +82,7 @@ public final class TestSXSSFSheet extend @Override @Test protected void shiftMerged() { + //noinspection Convert2MethodRef RuntimeException ex = assertThrows(RuntimeException.class, () -> super.shiftMerged()); assertEquals("Not Implemented", ex.getMessage()); } @@ -92,6 +95,7 @@ public final class TestSXSSFSheet extend @Override @Test protected void bug35084() { + //noinspection Convert2MethodRef RuntimeException ex = assertThrows(RuntimeException.class, () -> super.bug35084()); assertEquals("Not Implemented", ex.getMessage()); } Modified: poi/trunk/poi/src/test/java/org/apache/poi/hssf/model/TestWorkbook.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/hssf/model/TestWorkbook.java?rev=1925429&r1=1925428&r2=1925429&view=diff ============================================================================== --- poi/trunk/poi/src/test/java/org/apache/poi/hssf/model/TestWorkbook.java (original) +++ poi/trunk/poi/src/test/java/org/apache/poi/hssf/model/TestWorkbook.java Tue May 6 06:04:44 2025 @@ -22,6 +22,7 @@ import static org.junit.jupiter.api.Asse import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertSame; +import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; import java.io.IOException; @@ -174,15 +175,51 @@ final class TestWorkbook { @Test void testSetUserName() throws IOException { + // normal username + setAndReadUserName("username", false); + + // 109 characters max if no "multibyte" character + setAndReadUserName("1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789", false); + + // 54 max if there is at least one "multibyte" character + setAndReadUserName("â¬23456789012345678901234567890123456789012345678901234", false); + + // also works for very strange characters + setAndReadUserName("\uD801\uDC37\uD852\uDF62â¬$âµâµ¥êêê¦ï¹ï¼ï¼µï½¶\uD800\uDFB1\uD800\uDFC9\uD834\uDF45\uD834\uDF4B\uD83E\uDF22\uD83E\uDF53\uD83E\uDFB5\uD83E\uDFF6\uD801\uDC37\uD852\uDF62â¬$âµâµ¥êêê¦ï¹ï¼ï¼µï½¶\uD800\uDFB1\uD800\uDFC9\uD834\uDF45\uD834\uDF4B", false); + + // fails with longer strings + setAndReadUserName("12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", + true); + setAndReadUserName("â¬234567890123456789012345678901234567890123456789012345", true); + setAndReadUserName("\uD801\uDC37\uD852\uDF62â¬$âµâµ¥êêê¦ï¹ï¼ï¼µï½¶\uD800\uDFB1\uD800\uDFC9\uD834\uDF45\uD834\uDF4B\uD83E\uDF22\uD83E\uDF53\uD83E\uDFB5\uD83E\uDFF6\uD801\uDC37\uD852\uDF62â¬$âµâµ¥êêê¦ï¹ï¼ï¼µï½¶\uD800\uDFB1\uD800\uDFC9\uD834\uDF45\uD834\uDF4B\uDF4B", + true); + } + + private static void setAndReadUserName(String username, boolean fails) throws IOException { try (HSSFWorkbook wb = new HSSFWorkbook()) { InternalWorkbook iwb = wb.getInternalWorkbook(); - iwb.getWriteAccess().setUsername("username"); - assertEquals("username", iwb.getWriteAccess().getUsername()); + + String prev = iwb.getWriteAccess().getUsername(); + if (fails) { + assertThrows(IllegalArgumentException.class, + () -> iwb.getWriteAccess().setUsername(username), + "Expected to fail with username " + username); + assertEquals(prev, iwb.getWriteAccess().getUsername(), + "Username should not have been changed, but had: " + prev + " and " + + iwb.getWriteAccess().getUsername()); + + // cannot test more if username is too long + return; + } else { + iwb.getWriteAccess().setUsername(username); + } + + assertEquals(username, iwb.getWriteAccess().getUsername()); try (UnsynchronizedByteArrayOutputStream os = UnsynchronizedByteArrayOutputStream.builder().get()) { wb.write(os); try (HSSFWorkbook wb2 = new HSSFWorkbook(os.toInputStream())) { InternalWorkbook iwb2 = wb2.getInternalWorkbook(); - assertEquals("username", iwb2.getWriteAccess().getUsername()); + assertEquals(username, iwb2.getWriteAccess().getUsername()); } } } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@poi.apache.org For additional commands, e-mail: commits-h...@poi.apache.org