@Test void onCommandShouldNotThrowOnMessageDecNumberOverflow() { POP3Session session = mock(POP3Session.class); when(session.getHandlerState()).thenReturn(POP3Session.TRANSACTION); Request request = mock(Request.class); String overflowedNumber = Long.toString(Long.MAX_VALUE); when(request.getArgument()).thenReturn(overflowedNumber); assertThat(new RetrCmdHandler().onCommand(session, request)) .isEqualTo(RetrCmdHandler.SYNTAX_ERROR); } }
protected List<ProtocolHandler> initDefaultHandlers(AbstractPassCmdHandler... authHandlers) { List<ProtocolHandler> handlers = new ArrayList<>(); // add all pass handlers Collections.addAll(handlers, authHandlers); handlers.add(new CapaCmdHandler()); handlers.add(new UserCmdHandler()); handlers.add(new ListCmdHandler()); handlers.add(new UidlCmdHandler()); handlers.add(new RsetCmdHandler()); handlers.add(new DeleCmdHandler()); handlers.add(new NoopCmdHandler()); handlers.add(new RetrCmdHandler()); handlers.add(new TopCmdHandler()); handlers.add(new StatCmdHandler()); handlers.add(new QuitCmdHandler()); handlers.add(new WelcomeMessageHandler()); handlers.add(new UnknownCmdHandler()); handlers.add(new StlsCmdHandler()); handlers.add(new CommandDispatcher<POP3Session>()); handlers.add(new CommandHandlerResultLogger()); return handlers; } }
@ParameterizedTest @ValueSource(ints = {8, 16, 32, 64, 128, 256}) void onCommandShouldNotThrowOnMessageHexNumberOverflow(int pad) { POP3Session session = mock(POP3Session.class); when(session.getHandlerState()).thenReturn(POP3Session.TRANSACTION); Request request = mock(Request.class); String overflowedNumber = Collections.nCopies(pad, "\\xff").stream().collect(Collectors.joining()); when(request.getArgument()).thenReturn(overflowedNumber); assertThat(new RetrCmdHandler().onCommand(session, request)) .isEqualTo(RetrCmdHandler.SYNTAX_ERROR); }