From dda7bd5cb5f4c0e27f8aa3078aeb0d18b1b8524a Mon Sep 17 00:00:00 2001 From: ljacqu Date: Sat, 19 Nov 2016 17:36:05 +0100 Subject: [PATCH] #1008 Check that OfflinePlayer's name is not null - Add check - Create test --- .../fr/xephi/authme/task/purge/PurgeTask.java | 2 +- .../authme/task/purge/PurgeTaskTest.java | 21 +++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/main/java/fr/xephi/authme/task/purge/PurgeTask.java b/src/main/java/fr/xephi/authme/task/purge/PurgeTask.java index 712f81a3..92391af9 100644 --- a/src/main/java/fr/xephi/authme/task/purge/PurgeTask.java +++ b/src/main/java/fr/xephi/authme/task/purge/PurgeTask.java @@ -72,7 +72,7 @@ class PurgeTask extends BukkitRunnable { } OfflinePlayer offlinePlayer = offlinePlayers[nextPosition]; - if (toPurge.remove(offlinePlayer.getName().toLowerCase())) { + if (offlinePlayer.getName() != null && toPurge.remove(offlinePlayer.getName().toLowerCase())) { if (!permissionsManager.hasPermissionOffline(offlinePlayer, PlayerStatePermission.BYPASS_PURGE)) { playerPortion.add(offlinePlayer); namePortion.add(offlinePlayer.getName()); diff --git a/src/test/java/fr/xephi/authme/task/purge/PurgeTaskTest.java b/src/test/java/fr/xephi/authme/task/purge/PurgeTaskTest.java index 728669f7..286e0124 100644 --- a/src/test/java/fr/xephi/authme/task/purge/PurgeTaskTest.java +++ b/src/test/java/fr/xephi/authme/task/purge/PurgeTaskTest.java @@ -124,6 +124,27 @@ public class PurgeTaskTest { assertRanPurgeWithNames("foxtrot"); } + /** + * #1008: OfflinePlayer#getName may return null. + */ + @Test + public void shouldHandleOfflinePlayerWithNullName() { + // given + Set names = newHashSet("name1", "name2"); + OfflinePlayer[] players = asArray( + mockOfflinePlayer(null, false), mockOfflinePlayer("charlie", false), mockOfflinePlayer("name1", false)); + reset(purgeService, permissionsManager); + setPermissionsBehavior(); + + PurgeTask task = new PurgeTask(purgeService, permissionsManager, null, names, players); + + // when + task.run(); + + // then + assertRanPurgeWithPlayers(players[2]); + } + @Test public void shouldStopTaskAndInformSenderUponCompletion() { // given