@Test public void shouldRejectNonPlayerSender() { // given CommandSender sender = mock(BlockCommandSender.class); ChangePasswordCommand command = new ChangePasswordCommand(); // when command.executeCommand(sender, new ArrayList<String>(), commandService); // then assertThat(wrapperMock.wasMockCalled(Server.class), equalTo(false)); }
@Test public void shouldRejectPasswordEqualToNick() { // given CommandSender sender = initPlayerWithName("tester", true); ChangePasswordCommand command = new ChangePasswordCommand(); // when command.executeCommand(sender, Arrays.asList("old_", "Tester"), commandService); // then verify(commandService).send(sender, MessageKey.PASSWORD_IS_USERNAME_ERROR); assertThat(wrapperMock.wasMockCalled(Server.class), equalTo(false)); }
@Test public void shouldDenyInvalidPassword() { // given CommandSender sender = initPlayerWithName("name", true); ChangePasswordCommand command = new ChangePasswordCommand(); // when command.executeCommand(sender, Arrays.asList("old123", "!pass"), commandService); // then verify(commandService).send(sender, MessageKey.PASSWORD_MATCH_ERROR); assertThat(wrapperMock.wasMockCalled(Server.class), equalTo(false)); }
@Test public void shouldRejectNotLoggedInPlayer() { // given CommandSender sender = initPlayerWithName("name", false); ChangePasswordCommand command = new ChangePasswordCommand(); // when command.executeCommand(sender, Arrays.asList("pass", "pass"), commandService); // then verify(commandService).send(sender, MessageKey.NOT_LOGGED_IN); assertThat(wrapperMock.wasMockCalled(Server.class), equalTo(false)); }
@Test public void shouldRejectTooShortPassword() { // given CommandSender sender = initPlayerWithName("abc12", true); ChangePasswordCommand command = new ChangePasswordCommand(); given(commandService.getProperty(SecuritySettings.MIN_PASSWORD_LENGTH)).willReturn(7); // when command.executeCommand(sender, Arrays.asList("oldverylongpassword", "tester"), commandService); // then verify(commandService).send(sender, MessageKey.INVALID_PASSWORD_LENGTH); assertThat(wrapperMock.wasMockCalled(Server.class), equalTo(false)); }
@Test public void shouldRejectUnsafeCustomPassword() { // given CommandSender sender = initPlayerWithName("player", true); ChangePasswordCommand command = new ChangePasswordCommand(); given(commandService.getProperty(SecuritySettings.UNSAFE_PASSWORDS)) .willReturn(Arrays.asList("test", "abc123")); // when command.executeCommand(sender, Arrays.asList("oldpw", "abc123"), commandService); // then verify(commandService).send(sender, MessageKey.PASSWORD_UNSAFE_ERROR); assertThat(wrapperMock.wasMockCalled(Server.class), equalTo(false)); }
@Test public void shouldForwardTheDataForValidPassword() { // given CommandSender sender = initPlayerWithName("parker", true); ChangePasswordCommand command = new ChangePasswordCommand(); // when command.executeCommand(sender, Arrays.asList("abc123", "abc123"), commandService); // then verify(commandService, never()).send(eq(sender), any(MessageKey.class)); ArgumentCaptor<ChangePasswordTask> taskCaptor = ArgumentCaptor.forClass(ChangePasswordTask.class); verify(commandService).runTaskAsynchronously(taskCaptor.capture()); ChangePasswordTask task = taskCaptor.getValue(); assertThat( (String) ReflectionTestUtils.getFieldValue(ChangePasswordTask.class, task, "newPassword"), equalTo("abc123")); }