package com.evsuite.abrp; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import org.junit.Test; import java.util.Arrays; import java.util.Collections; public class LogOutboxTest { @Test public void whatTheServerSaysDecidesTheFile() { assertEquals(LogOutbox.Outcome.SENT, LogOutbox.outcome(204)); assertEquals(LogOutbox.Outcome.SENT, LogOutbox.outcome(200)); // Worth another try: no answer, not paired yet, a server without logs yet, busy, broken. for (int status : new int[] {0, 401, 404, 408, 429, 500, 502, 503}) { assertEquals(String.valueOf(status), LogOutbox.Outcome.KEEP, LogOutbox.outcome(status)); } // Refused for good: it would never pass. for (int status : new int[] {400, 403, 413, 415}) { assertEquals(String.valueOf(status), LogOutbox.Outcome.DROP, LogOutbox.outcome(status)); } } @Test public void namesAreTheServersKind() { assertTrue(LogOutbox.validName("signal-recording-20261027-085240.txt")); assertFalse(LogOutbox.validName("signal-recording-20261027-085240.txt.tmp")); assertFalse(LogOutbox.validName("../escape.txt")); assertFalse(LogOutbox.validName("Upper.txt")); assertFalse(LogOutbox.validName(null)); } @Test public void theOldestGoBeyondTheLimit() { assertEquals(Arrays.asList("signal-recording-20261027-084921.txt"), LogOutbox.surplus(Arrays.asList("signal-recording-20261027-085240.txt", "signal-recording-20261027-084921.txt", "signal-recording-20261027-090000.txt"), 2)); assertEquals(Collections.emptyList(), LogOutbox.surplus(Collections.singletonList("signal-recording-20261027-085240.txt"), 2)); } }