- Add default method to ExecutableCommand interface that allows to define the message key to show if a command's arguments are invalid. If not defined the behavior is as before: show the output of /<command> help - Use translatable "no permission" message instead of hardcoded one
This commit is contained in:
@@ -6,6 +6,8 @@ import fr.xephi.authme.command.TestCommandsUtil.TestLoginCommand;
|
||||
import fr.xephi.authme.command.TestCommandsUtil.TestRegisterCommand;
|
||||
import fr.xephi.authme.command.TestCommandsUtil.TestUnregisterCommand;
|
||||
import fr.xephi.authme.command.help.HelpProvider;
|
||||
import fr.xephi.authme.message.MessageKey;
|
||||
import fr.xephi.authme.message.Messages;
|
||||
import fr.xephi.authme.permission.PermissionsManager;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.junit.Before;
|
||||
@@ -60,6 +62,8 @@ public class CommandHandlerTest {
|
||||
@Mock
|
||||
private PermissionsManager permissionsManager;
|
||||
@Mock
|
||||
private Messages messages;
|
||||
@Mock
|
||||
private HelpProvider helpProvider;
|
||||
|
||||
private Map<Class<? extends ExecutableCommand>, ExecutableCommand> mockedCommands = new HashMap<>();
|
||||
@@ -71,7 +75,7 @@ public class CommandHandlerTest {
|
||||
ExecutableCommand.class, TestLoginCommand.class, TestRegisterCommand.class, TestUnregisterCommand.class));
|
||||
setInjectorToMockExecutableCommandClasses();
|
||||
|
||||
handler = new CommandHandler(injector, commandMapper, permissionsManager, helpProvider);
|
||||
handler = new CommandHandler(injector, commandMapper, permissionsManager, messages, helpProvider);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -138,7 +142,7 @@ public class CommandHandlerTest {
|
||||
// then
|
||||
verify(commandMapper).mapPartsToCommand(sender, asList("unreg", "testPlayer"));
|
||||
verify(command, never()).getExecutableCommand();
|
||||
verify(sender).sendMessage(argThat(containsString("don't have permission")));
|
||||
verify(messages).send(sender, MessageKey.NO_PERMISSION);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -148,6 +152,7 @@ public class CommandHandlerTest {
|
||||
String[] bukkitArgs = {"testPlayer"};
|
||||
CommandSender sender = mock(CommandSender.class);
|
||||
CommandDescription command = mock(CommandDescription.class);
|
||||
given(command.getExecutableCommand()).willReturn((Class) TestUnregisterCommand.class);
|
||||
given(commandMapper.mapPartsToCommand(any(CommandSender.class), anyList())).willReturn(
|
||||
new FoundCommandResult(command, asList("unreg"), asList("testPlayer"), 0.0, INCORRECT_ARGUMENTS));
|
||||
given(permissionsManager.hasPermission(sender, command.getPermission())).willReturn(true);
|
||||
@@ -157,10 +162,30 @@ public class CommandHandlerTest {
|
||||
|
||||
// then
|
||||
verify(commandMapper).mapPartsToCommand(sender, asList("unreg", "testPlayer"));
|
||||
verify(command, never()).getExecutableCommand();
|
||||
ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class);
|
||||
verify(sender, atLeastOnce()).sendMessage(captor.capture());
|
||||
assertThat(captor.getAllValues().get(0), containsString("Incorrect command arguments"));
|
||||
verify(sender, atLeastOnce()).sendMessage(argThat(containsString("Incorrect command arguments")));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldUseCustomMessageUponArgumentMismatch() {
|
||||
// given
|
||||
String bukkitLabel = "unreg";
|
||||
String[] bukkitArgs = {"testPlayer"};
|
||||
CommandSender sender = mock(CommandSender.class);
|
||||
CommandDescription command = mock(CommandDescription.class);
|
||||
given(command.getExecutableCommand()).willReturn((Class) TestUnregisterCommand.class);
|
||||
given(mockedCommands.get(TestUnregisterCommand.class).getArgumentsMismatchMessage())
|
||||
.willReturn(MessageKey.USAGE_RECOVER_EMAIL);
|
||||
given(commandMapper.mapPartsToCommand(any(CommandSender.class), anyList())).willReturn(
|
||||
new FoundCommandResult(command, asList("unreg"), asList("testPlayer"), 0.0, INCORRECT_ARGUMENTS));
|
||||
given(permissionsManager.hasPermission(sender, command.getPermission())).willReturn(true);
|
||||
|
||||
// when
|
||||
handler.processCommand(sender, bukkitLabel, bukkitArgs);
|
||||
|
||||
// then
|
||||
verify(commandMapper).mapPartsToCommand(sender, asList("unreg", "testPlayer"));
|
||||
verify(messages).send(sender, MessageKey.USAGE_RECOVER_EMAIL);
|
||||
verify(sender, never()).sendMessage(anyString());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -180,9 +205,7 @@ public class CommandHandlerTest {
|
||||
// then
|
||||
verify(commandMapper).mapPartsToCommand(sender, asList("unreg", "testPlayer"));
|
||||
verify(command, never()).getExecutableCommand();
|
||||
ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class);
|
||||
verify(sender).sendMessage(captor.capture());
|
||||
assertThat(captor.getValue(), containsString("You don't have permission"));
|
||||
verify(messages).send(sender, MessageKey.NO_PERMISSION);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
+1
-1
@@ -58,7 +58,7 @@ public class ChangePasswordCommandTest {
|
||||
command.executeCommand(sender, Collections.emptyList());
|
||||
|
||||
// then
|
||||
verify(sender).sendMessage(argThat(containsString("only for players")));
|
||||
verify(sender).sendMessage(argThat(containsString("use /authme password <playername> <password> instead")));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -10,7 +10,6 @@ import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.MockitoJUnitRunner;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
|
||||
import static org.hamcrest.Matchers.containsString;
|
||||
@@ -39,11 +38,11 @@ public class LoginCommandTest {
|
||||
CommandSender sender = mock(BlockCommandSender.class);
|
||||
|
||||
// when
|
||||
command.executeCommand(sender, new ArrayList<String>());
|
||||
command.executeCommand(sender, Collections.emptyList());
|
||||
|
||||
// then
|
||||
verifyZeroInteractions(management);
|
||||
verify(sender).sendMessage(argThat(containsString("only for players")));
|
||||
verify(sender).sendMessage(argThat(containsString("/authme forcelogin <player>")));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user