fix(stealth): suppress concealed disconnect messages
This commit is contained in:
@@ -10,9 +10,50 @@ import java.util.Map;
|
||||
import java.util.UUID;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
class StealthSessionListenerTest {
|
||||
@Test
|
||||
void concealedDisconnectSuppressesPublicAnnouncementBeforeCleanup() {
|
||||
UUID playerId = UUID.randomUUID();
|
||||
try (StealthStateManager manager = manager()) {
|
||||
manager.update(state -> state.withPlayer(unlocked(playerId).withSession(false, true))).join();
|
||||
QualifyingInvisibilityService progression = new QualifyingInvisibilityService(
|
||||
manager, Duration.ofHours(8), System::nanoTime, ignored -> { });
|
||||
StealthSessionService sessions = new StealthSessionService(manager, progression);
|
||||
StealthSessionListener listener = new StealthSessionListener(
|
||||
sessions, mock(IdentityPresentation.class), "Stealth active");
|
||||
PlayerQuitEvent event = mock(PlayerQuitEvent.class);
|
||||
Player player = player(playerId);
|
||||
when(event.getPlayer()).thenReturn(player);
|
||||
|
||||
listener.onQuit(event);
|
||||
|
||||
verify(event).setQuitMessage(null);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void ordinaryDisconnectRetainsPublicAnnouncement() {
|
||||
UUID playerId = UUID.randomUUID();
|
||||
try (StealthStateManager manager = manager()) {
|
||||
QualifyingInvisibilityService progression = new QualifyingInvisibilityService(
|
||||
manager, Duration.ofHours(8), System::nanoTime, ignored -> { });
|
||||
StealthSessionListener listener = new StealthSessionListener(
|
||||
new StealthSessionService(manager, progression),
|
||||
mock(IdentityPresentation.class),
|
||||
"Stealth active");
|
||||
PlayerQuitEvent event = mock(PlayerQuitEvent.class);
|
||||
Player player = player(playerId);
|
||||
when(event.getPlayer()).thenReturn(player);
|
||||
|
||||
listener.onQuit(event);
|
||||
|
||||
verify(event, never()).setQuitMessage(null);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void preparedLoginSuppressesAnnouncementAndConcealsIdentityForSession() {
|
||||
UUID playerId = UUID.randomUUID();
|
||||
|
||||
Reference in New Issue
Block a user