From 4e8deec258560543689bfea7825ea7fa64718468 Mon Sep 17 00:00:00 2001 From: ljacqu Date: Sat, 21 Oct 2017 12:08:23 +0200 Subject: [PATCH] Move #isNpc method to PlayerUtils - After dropping our hook to CombatTagPlus it is not relevant for it to be in PluginHooksService anymore --- src/main/java/fr/xephi/authme/api/NewAPI.java | 8 +++----- .../java/fr/xephi/authme/api/v3/AuthMeApi.java | 11 ++++------- .../initialization/OnShutdownPlayerSaver.java | 6 ++---- .../xephi/authme/listener/ListenerService.java | 12 +++++------- .../xephi/authme/service/PluginHookService.java | 10 ---------- .../java/fr/xephi/authme/util/PlayerUtils.java | 11 +++++++++++ .../java/fr/xephi/authme/api/NewAPITest.java | 6 ++---- .../fr/xephi/authme/api/v3/AuthMeApiTest.java | 6 ++---- .../authme/listener/ListenerServiceTest.java | 11 +++-------- .../authme/service/PluginHookServiceTest.java | 2 -- .../fr/xephi/authme/util/PlayerUtilsTest.java | 17 +++++++++++++++++ 11 files changed, 49 insertions(+), 51 deletions(-) diff --git a/src/main/java/fr/xephi/authme/api/NewAPI.java b/src/main/java/fr/xephi/authme/api/NewAPI.java index 8a7238849..1acfcf2de 100644 --- a/src/main/java/fr/xephi/authme/api/NewAPI.java +++ b/src/main/java/fr/xephi/authme/api/NewAPI.java @@ -9,8 +9,8 @@ import fr.xephi.authme.process.register.executors.ApiPasswordRegisterParams; import fr.xephi.authme.process.register.executors.RegistrationMethod; import fr.xephi.authme.security.PasswordSecurity; import fr.xephi.authme.security.crypts.HashedPassword; -import fr.xephi.authme.service.PluginHookService; import fr.xephi.authme.service.ValidationService; +import fr.xephi.authme.util.PlayerUtils; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.entity.Player; @@ -35,7 +35,6 @@ public class NewAPI { private static NewAPI singleton; private final AuthMe plugin; - private final PluginHookService pluginHookService; private final DataSource dataSource; private final PasswordSecurity passwordSecurity; private final Management management; @@ -46,10 +45,9 @@ public class NewAPI { * Constructor for NewAPI. */ @Inject - NewAPI(AuthMe plugin, PluginHookService pluginHookService, DataSource dataSource, PasswordSecurity passwordSecurity, + NewAPI(AuthMe plugin, DataSource dataSource, PasswordSecurity passwordSecurity, Management management, ValidationService validationService, PlayerCache playerCache) { this.plugin = plugin; - this.pluginHookService = pluginHookService; this.dataSource = dataSource; this.passwordSecurity = passwordSecurity; this.management = management; @@ -108,7 +106,7 @@ public class NewAPI { * @return true if the player is an npc */ public boolean isNPC(Player player) { - return pluginHookService.isNpc(player); + return PlayerUtils.isNpc(player); } /** diff --git a/src/main/java/fr/xephi/authme/api/v3/AuthMeApi.java b/src/main/java/fr/xephi/authme/api/v3/AuthMeApi.java index 98f3fca4e..623ed2c22 100644 --- a/src/main/java/fr/xephi/authme/api/v3/AuthMeApi.java +++ b/src/main/java/fr/xephi/authme/api/v3/AuthMeApi.java @@ -10,8 +10,8 @@ import fr.xephi.authme.process.register.executors.RegistrationMethod; import fr.xephi.authme.security.PasswordSecurity; import fr.xephi.authme.security.crypts.HashedPassword; import fr.xephi.authme.service.GeoIpService; -import fr.xephi.authme.service.PluginHookService; import fr.xephi.authme.service.ValidationService; +import fr.xephi.authme.util.PlayerUtils; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.entity.Player; @@ -33,7 +33,6 @@ public class AuthMeApi { private static AuthMeApi singleton; private final AuthMe plugin; - private final PluginHookService pluginHookService; private final DataSource dataSource; private final PasswordSecurity passwordSecurity; private final Management management; @@ -45,11 +44,9 @@ public class AuthMeApi { * Constructor for AuthMeApi. */ @Inject - AuthMeApi(AuthMe plugin, PluginHookService pluginHookService, DataSource dataSource, PlayerCache playerCache, - PasswordSecurity passwordSecurity, Management management, ValidationService validationService, - GeoIpService geoIpService) { + AuthMeApi(AuthMe plugin, DataSource dataSource, PlayerCache playerCache, PasswordSecurity passwordSecurity, + Management management, ValidationService validationService, GeoIpService geoIpService) { this.plugin = plugin; - this.pluginHookService = pluginHookService; this.dataSource = dataSource; this.passwordSecurity = passwordSecurity; this.management = management; @@ -109,7 +106,7 @@ public class AuthMeApi { * @return true if the player is an npc */ public boolean isNpc(Player player) { - return pluginHookService.isNpc(player); + return PlayerUtils.isNpc(player); } /** diff --git a/src/main/java/fr/xephi/authme/initialization/OnShutdownPlayerSaver.java b/src/main/java/fr/xephi/authme/initialization/OnShutdownPlayerSaver.java index e22eb9c5f..992483bf8 100644 --- a/src/main/java/fr/xephi/authme/initialization/OnShutdownPlayerSaver.java +++ b/src/main/java/fr/xephi/authme/initialization/OnShutdownPlayerSaver.java @@ -5,11 +5,11 @@ import fr.xephi.authme.data.auth.PlayerCache; import fr.xephi.authme.data.limbo.LimboService; import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.service.BukkitService; -import fr.xephi.authme.service.PluginHookService; import fr.xephi.authme.service.ValidationService; import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.SpawnLoader; import fr.xephi.authme.settings.properties.RestrictionSettings; +import fr.xephi.authme.util.PlayerUtils; import org.bukkit.Location; import org.bukkit.entity.Player; @@ -31,8 +31,6 @@ public class OnShutdownPlayerSaver { @Inject private SpawnLoader spawnLoader; @Inject - private PluginHookService pluginHookService; - @Inject private PlayerCache playerCache; @Inject private LimboService limboService; @@ -51,7 +49,7 @@ public class OnShutdownPlayerSaver { private void savePlayer(Player player) { final String name = player.getName().toLowerCase(); - if (pluginHookService.isNpc(player) || validationService.isUnrestricted(name)) { + if (PlayerUtils.isNpc(player) || validationService.isUnrestricted(name)) { return; } if (limboService.hasLimboPlayer(name)) { diff --git a/src/main/java/fr/xephi/authme/listener/ListenerService.java b/src/main/java/fr/xephi/authme/listener/ListenerService.java index 03928bf5d..87562c519 100644 --- a/src/main/java/fr/xephi/authme/listener/ListenerService.java +++ b/src/main/java/fr/xephi/authme/listener/ListenerService.java @@ -2,11 +2,11 @@ package fr.xephi.authme.listener; import fr.xephi.authme.data.auth.PlayerCache; import fr.xephi.authme.datasource.DataSource; -import fr.xephi.authme.service.PluginHookService; import fr.xephi.authme.initialization.SettingsDependent; +import fr.xephi.authme.service.ValidationService; import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.properties.RegistrationSettings; -import fr.xephi.authme.service.ValidationService; +import fr.xephi.authme.util.PlayerUtils; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.event.entity.EntityEvent; @@ -20,17 +20,15 @@ import javax.inject.Inject; class ListenerService implements SettingsDependent { private final DataSource dataSource; - private final PluginHookService pluginHookService; private final PlayerCache playerCache; private final ValidationService validationService; private boolean isRegistrationForced; @Inject - ListenerService(Settings settings, DataSource dataSource, PluginHookService pluginHookService, - PlayerCache playerCache, ValidationService validationService) { + ListenerService(Settings settings, DataSource dataSource, PlayerCache playerCache, + ValidationService validationService) { this.dataSource = dataSource; - this.pluginHookService = pluginHookService; this.playerCache = playerCache; this.validationService = validationService; reload(settings); @@ -79,7 +77,7 @@ class ListenerService implements SettingsDependent { * @return true if the associated event should be canceled, false otherwise */ public boolean shouldCancelEvent(Player player) { - return player != null && !checkAuth(player.getName()) && !pluginHookService.isNpc(player); + return player != null && !checkAuth(player.getName()) && !PlayerUtils.isNpc(player); } @Override diff --git a/src/main/java/fr/xephi/authme/service/PluginHookService.java b/src/main/java/fr/xephi/authme/service/PluginHookService.java index 98e31e13d..af86b8a3a 100644 --- a/src/main/java/fr/xephi/authme/service/PluginHookService.java +++ b/src/main/java/fr/xephi/authme/service/PluginHookService.java @@ -76,16 +76,6 @@ public class PluginHookService { return null; } - /** - * Checks whether the player is an NPC. - * - * @param player The player to process - * @return True if player is NPC, false otherwise - */ - public boolean isNpc(Player player) { - return player.hasMetadata("NPC"); - } - // ------ // "Is plugin available" methods diff --git a/src/main/java/fr/xephi/authme/util/PlayerUtils.java b/src/main/java/fr/xephi/authme/util/PlayerUtils.java index 7eba43d39..c1ea27922 100644 --- a/src/main/java/fr/xephi/authme/util/PlayerUtils.java +++ b/src/main/java/fr/xephi/authme/util/PlayerUtils.java @@ -39,4 +39,15 @@ public final class PlayerUtils { public static String getPlayerIp(Player p) { return p.getAddress().getAddress().getHostAddress(); } + + /** + * Returns if the player is an NPC or not. + * + * @param player The player to check + * + * @return True if the player is an NPC, false otherwise + */ + public static boolean isNpc(Player player) { + return player.hasMetadata("NPC"); + } } diff --git a/src/test/java/fr/xephi/authme/api/NewAPITest.java b/src/test/java/fr/xephi/authme/api/NewAPITest.java index 5cf897425..b5a1f8896 100644 --- a/src/test/java/fr/xephi/authme/api/NewAPITest.java +++ b/src/test/java/fr/xephi/authme/api/NewAPITest.java @@ -7,7 +7,6 @@ import fr.xephi.authme.data.auth.PlayerCache; import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.process.Management; import fr.xephi.authme.security.PasswordSecurity; -import fr.xephi.authme.service.PluginHookService; import fr.xephi.authme.service.ValidationService; import org.bukkit.Bukkit; import org.bukkit.Location; @@ -43,8 +42,6 @@ public class NewAPITest { @InjectMocks private NewAPI api; - @Mock - private PluginHookService pluginHookService; @Mock private ValidationService validationService; @Mock @@ -84,13 +81,14 @@ public class NewAPITest { public void shouldReturnIfPlayerIsNpc() { // given Player player = mock(Player.class); - given(pluginHookService.isNpc(player)).willReturn(true); + given(player.hasMetadata("NPC")).willReturn(true); // when boolean result = api.isNPC(player); // then assertThat(result, equalTo(true)); + verify(player).hasMetadata("NPC"); } @Test diff --git a/src/test/java/fr/xephi/authme/api/v3/AuthMeApiTest.java b/src/test/java/fr/xephi/authme/api/v3/AuthMeApiTest.java index 5f394fee8..2a4977a84 100644 --- a/src/test/java/fr/xephi/authme/api/v3/AuthMeApiTest.java +++ b/src/test/java/fr/xephi/authme/api/v3/AuthMeApiTest.java @@ -6,7 +6,6 @@ import fr.xephi.authme.data.auth.PlayerCache; import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.process.Management; import fr.xephi.authme.security.PasswordSecurity; -import fr.xephi.authme.service.PluginHookService; import fr.xephi.authme.service.ValidationService; import org.bukkit.Bukkit; import org.bukkit.Location; @@ -43,8 +42,6 @@ public class AuthMeApiTest { @InjectMocks private AuthMeApi api; - @Mock - private PluginHookService pluginHookService; @Mock private ValidationService validationService; @Mock @@ -84,13 +81,14 @@ public class AuthMeApiTest { public void shouldReturnIfPlayerIsNpc() { // given Player player = mock(Player.class); - given(pluginHookService.isNpc(player)).willReturn(true); + given(player.hasMetadata("NPC")).willReturn(true); // when boolean result = api.isNpc(player); // then assertThat(result, equalTo(true)); + verify(player).hasMetadata("NPC"); } @Test diff --git a/src/test/java/fr/xephi/authme/listener/ListenerServiceTest.java b/src/test/java/fr/xephi/authme/listener/ListenerServiceTest.java index 15f9e7973..a3ae6d9f5 100644 --- a/src/test/java/fr/xephi/authme/listener/ListenerServiceTest.java +++ b/src/test/java/fr/xephi/authme/listener/ListenerServiceTest.java @@ -5,10 +5,9 @@ import ch.jalu.injector.testing.DelayedInjectionRunner; import ch.jalu.injector.testing.InjectDelayed; import fr.xephi.authme.data.auth.PlayerCache; import fr.xephi.authme.datasource.DataSource; -import fr.xephi.authme.service.PluginHookService; +import fr.xephi.authme.service.ValidationService; import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.properties.RegistrationSettings; -import fr.xephi.authme.service.ValidationService; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.event.HandlerList; @@ -40,9 +39,6 @@ public class ListenerServiceTest { @Mock private DataSource dataSource; - @Mock - private PluginHookService pluginHookService; - @Mock private PlayerCache playerCache; @@ -161,14 +157,14 @@ public class ListenerServiceTest { Player player = mockPlayerWithName(playerName); EntityEvent event = mock(EntityEvent.class); given(event.getEntity()).willReturn(player); - given(pluginHookService.isNpc(player)).willReturn(true); + given(player.hasMetadata("NPC")).willReturn(true); // when boolean result = listenerService.shouldCancelEvent(event); // then assertThat(result, equalTo(false)); - verify(pluginHookService).isNpc(player); + verify(player).hasMetadata("NPC"); } @Test @@ -215,7 +211,6 @@ public class ListenerServiceTest { assertThat(result, equalTo(true)); verify(playerCache).isAuthenticated(playerName); verifyZeroInteractions(dataSource); - verify(pluginHookService).isNpc(player); } private static Player mockPlayerWithName(String name) { diff --git a/src/test/java/fr/xephi/authme/service/PluginHookServiceTest.java b/src/test/java/fr/xephi/authme/service/PluginHookServiceTest.java index 7889f8bab..763e6b312 100644 --- a/src/test/java/fr/xephi/authme/service/PluginHookServiceTest.java +++ b/src/test/java/fr/xephi/authme/service/PluginHookServiceTest.java @@ -58,8 +58,6 @@ public class PluginHookServiceTest { assertThat(pluginHookService.isEssentialsAvailable(), equalTo(true)); } - // Note ljacqu 20160312: Cannot test with CombatTagPlus because its class is declared final - @Test public void shouldHookIntoEssentialsAtInitialization() { // given diff --git a/src/test/java/fr/xephi/authme/util/PlayerUtilsTest.java b/src/test/java/fr/xephi/authme/util/PlayerUtilsTest.java index cfeecdcf4..01720bb0d 100644 --- a/src/test/java/fr/xephi/authme/util/PlayerUtilsTest.java +++ b/src/test/java/fr/xephi/authme/util/PlayerUtilsTest.java @@ -70,4 +70,21 @@ public class PlayerUtilsTest { // given / when / then TestHelper.validateHasOnlyPrivateEmptyConstructor(PlayerUtils.class); } + + @Test + public void shouldCheckIfIsNpc() { + // given + Player player1 = mock(Player.class); + given(player1.hasMetadata("NPC")).willReturn(false); + Player player2 = mock(Player.class); + given(player2.hasMetadata("NPC")).willReturn(true); + + // when + boolean result1 = PlayerUtils.isNpc(player1); + boolean result2 = PlayerUtils.isNpc(player2); + + // then + assertThat(result1, equalTo(false)); + assertThat(result2, equalTo(true)); + } }