You've already forked Arcturus-Morningstar-Extended
mirror of
https://github.com/duckietm/Arcturus-Morningstar-Extended.git
synced 2026-06-20 07:26:18 +00:00
fix(housekeeping): cap sanction durations safely
This commit is contained in:
+40
@@ -0,0 +1,40 @@
|
||||
package com.eu.habbo.messages.incoming.housekeeping;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
class HousekeepingSanctionDurationContractTest {
|
||||
private static final Path BAN_SOURCE = Path.of(
|
||||
"src/main/java/com/eu/habbo/messages/incoming/housekeeping/HousekeepingBanUserEvent.java");
|
||||
private static final Path MUTE_SOURCE = Path.of(
|
||||
"src/main/java/com/eu/habbo/messages/incoming/housekeeping/HousekeepingMuteUserEvent.java");
|
||||
private static final Path TRADE_LOCK_SOURCE = Path.of(
|
||||
"src/main/java/com/eu/habbo/messages/incoming/housekeeping/HousekeepingTradeLockUserEvent.java");
|
||||
|
||||
@Test
|
||||
void sanctionsUseSharedOverflowSafeDurationHelpers() throws IOException {
|
||||
String ban = Files.readString(BAN_SOURCE);
|
||||
String mute = Files.readString(MUTE_SOURCE);
|
||||
String tradeLock = Files.readString(TRADE_LOCK_SOURCE);
|
||||
|
||||
assertTrue(ban.contains("HousekeepingSanctionDuration.secondsFromHours(hours)"));
|
||||
assertTrue(mute.contains("HousekeepingSanctionDuration.secondsFromMinutes(minutes)"));
|
||||
assertTrue(tradeLock.contains("HousekeepingSanctionDuration.secondsFromHours(hours)"));
|
||||
assertTrue(tradeLock.contains("HousekeepingSanctionDuration.unixUntil("));
|
||||
}
|
||||
|
||||
@Test
|
||||
void sanctionsDoNotUseOverflowProneIntDurationConstants() throws IOException {
|
||||
String ban = Files.readString(BAN_SOURCE);
|
||||
String tradeLock = Files.readString(TRADE_LOCK_SOURCE);
|
||||
|
||||
assertFalse(ban.contains("100 * 365 * 24 * 3600"));
|
||||
assertFalse(tradeLock.contains("100 * 365 * 24 * 3600"));
|
||||
}
|
||||
}
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
package com.eu.habbo.messages.incoming.housekeeping;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
class HousekeepingSanctionDurationTest {
|
||||
@Test
|
||||
void convertsHoursAndMinutesWithoutIntegerOverflow() {
|
||||
assertEquals(3600, HousekeepingSanctionDuration.secondsFromHours(1));
|
||||
assertEquals(60, HousekeepingSanctionDuration.secondsFromMinutes(1));
|
||||
assertEquals(Integer.MAX_VALUE, HousekeepingSanctionDuration.secondsFromHours(Integer.MAX_VALUE));
|
||||
assertEquals(Integer.MAX_VALUE, HousekeepingSanctionDuration.secondsFromMinutes(Integer.MAX_VALUE));
|
||||
}
|
||||
|
||||
@Test
|
||||
void capsUnixTimestampInsteadOfWrapping() {
|
||||
assertEquals(1_000_060, HousekeepingSanctionDuration.unixUntil(1_000_000, 60));
|
||||
assertEquals(Integer.MAX_VALUE, HousekeepingSanctionDuration.unixUntil(Integer.MAX_VALUE - 10, 60));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user