@Override public int read(byte[] b) throws IOException { return read(b, 0, b.length); }
private int fillArray(byte[] b, int off, int len) { int a = -1; int i = 0; if (complete) { return -1; } while (i < len) { a = readNext(); if (a == -1) { complete = true; break; } else { b[off + i++] = (byte) a; } } return i; }
public MessageMetaData(String uid, long size) { this.uid = uid; this.size = size; if (!MessageMetaDataUtils.isRFC1939Compatible(uid)) { throw new IllegalArgumentException("UID is not RFC1939 compatible"); } }
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; } }
@Test public void testExtraDotOnDotWithText() throws IOException { String data = "This\r\n.TestText\r\nThis.\r\n"; String expected = "This\r\n..TestText\r\nThis.\r\n"; checkRead(new ExtraDotInputStream(new ByteArrayInputStream(data.getBytes())), expected); checkReadViaArray(new ExtraDotInputStream(new ByteArrayInputStream(data.getBytes())), expected); }
@Test public void testCRPresent() throws IOException { String data = "Subject: test\r\n\r\ndata\r"; String expected = data + "\n"; checkRead(new CRLFTerminatedInputStream(new ByteArrayInputStream(data.getBytes())), expected); checkReadViaArray(new CRLFTerminatedInputStream(new ByteArrayInputStream(data.getBytes())), expected); }
@Override protected final Mailbox auth(POP3Session session, String username, String password) throws Exception { return auth(session, (String)session.getAttachment(POP3Session.APOP_TIMESTAMP, State.Connection), username, password); }
@Override public Response onCommand(POP3Session session, Request request) { POP3Response response = new POP3Response(POP3Response.OK_RESPONSE, "Capability list follows"); for (CapaCapability capabilities : caps) { for (String cap : capabilities.getImplementedCapabilities(session)) { response.appendLine(cap); } } response.appendLine("."); return response; }
@Test public void testNoDotHeaderBody() throws IOException { String data = "Subject: test\r\n\r\nABCD\r\n"; checkRead(new ExtraDotInputStream(new ByteArrayInputStream(data.getBytes())), data); checkReadViaArray(new ExtraDotInputStream(new ByteArrayInputStream(data.getBytes())), data); }
@Test public void testCRLFPresent() throws IOException { String data = "Subject: test\r\n\r\ndata\r\n"; checkRead(new CRLFTerminatedInputStream(new ByteArrayInputStream(data.getBytes())), data); checkReadViaArray(new CRLFTerminatedInputStream(new ByteArrayInputStream(data.getBytes())), data); }
@Test public void testExtraDot() throws IOException { String data = "This\r\n.\r\nThis.\r\n"; String expectedOutput = "This\r\n..\r\nThis.\r\n"; checkRead(new ExtraDotInputStream(new ByteArrayInputStream(data.getBytes())), expectedOutput); checkReadViaArray(new ExtraDotInputStream(new ByteArrayInputStream(data.getBytes())), expectedOutput); }
@Test public void testCRPresent() throws IOException { String data = "Subject: test\r\n\r\ndata\r"; String expected = data + "\n"; checkRead(new CRLFTerminatedInputStream(new ByteArrayInputStream(data.getBytes())), expected); checkReadViaArray(new CRLFTerminatedInputStream(new ByteArrayInputStream(data.getBytes())), expected); }
@Test public void testExtraDotOnDoubleDot() throws IOException { String data = "This\r\n..\r\nThis.\r\n"; String expectedOutput = "This\r\n...\r\nThis.\r\n"; checkRead(new ExtraDotInputStream(new ByteArrayInputStream(data.getBytes())), expectedOutput); checkReadViaArray(new ExtraDotInputStream(new ByteArrayInputStream(data.getBytes())), expectedOutput); }
@Test public void testNonPresent() throws IOException { String data = "Subject: test\r\n\r\ndata"; String expected = data + "\r\n"; checkRead(new CRLFTerminatedInputStream(new ByteArrayInputStream(data.getBytes())), expected); checkReadViaArray(new CRLFTerminatedInputStream(new ByteArrayInputStream(data.getBytes())), expected); }
@Test public void testNoDot() throws IOException { String data = "ABCD"; checkRead(new ExtraDotInputStream(new ByteArrayInputStream(data.getBytes())), data); checkReadViaArray(new ExtraDotInputStream(new ByteArrayInputStream(data.getBytes())), data); }
@Test public void testNoDotHeaderBody() throws IOException { String data = "Subject: test\r\n\r\nABCD\r\n"; checkRead(new ExtraDotInputStream(new ByteArrayInputStream(data.getBytes())), data); checkReadViaArray(new ExtraDotInputStream(new ByteArrayInputStream(data.getBytes())), data); }
@Test public void testExtraDotOnDotWithText() throws IOException { String data = "This\r\n.TestText\r\nThis.\r\n"; String expected = "This\r\n..TestText\r\nThis.\r\n"; checkRead(new ExtraDotInputStream(new ByteArrayInputStream(data.getBytes())), expected); checkReadViaArray(new ExtraDotInputStream(new ByteArrayInputStream(data.getBytes())), expected); }
@Test public void testExtraDotOnDoubleDot() throws IOException { String data = "This\r\n..\r\nThis.\r\n"; String expectedOutput = "This\r\n...\r\nThis.\r\n"; checkRead(new ExtraDotInputStream(new ByteArrayInputStream(data.getBytes())), expectedOutput); checkReadViaArray(new ExtraDotInputStream(new ByteArrayInputStream(data.getBytes())), expectedOutput); }
@Test public void testNoDot() throws IOException { String data = "ABCD"; checkRead(new ExtraDotInputStream(new ByteArrayInputStream(data.getBytes())), data); checkReadViaArray(new ExtraDotInputStream(new ByteArrayInputStream(data.getBytes())), data); }
@Test public void testNoDotCLRF() throws IOException { String data = "ABCD\r\n"; checkRead(new ExtraDotInputStream(new ByteArrayInputStream(data.getBytes())), data); checkReadViaArray(new ExtraDotInputStream(new ByteArrayInputStream(data.getBytes())), data); }