You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by rd...@apache.org on 2007/02/04 14:46:24 UTC
svn commit: r503406 [3/3] - in /james/server/sandbox/seda-imap/src:
java/org/apache/james/imapserver/ java/org/apache/james/imapserver/commands/
java/org/apache/james/imapserver/encode/
java/org/apache/james/smtpserver/core/filter/fastfail/ test/org/ap...
Added: james/server/sandbox/seda-imap/src/test/org/apache/james/imapserver/MockImapResponseWriter.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap/src/test/org/apache/james/imapserver/MockImapResponseWriter.java?view=auto&rev=503406
==============================================================================
--- james/server/sandbox/seda-imap/src/test/org/apache/james/imapserver/MockImapResponseWriter.java (added)
+++ james/server/sandbox/seda-imap/src/test/org/apache/james/imapserver/MockImapResponseWriter.java Sun Feb 4 05:46:22 2007
@@ -0,0 +1,233 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+
+package org.apache.james.imapserver;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class MockImapResponseWriter implements ImapResponseWriter {
+
+ public final List operations = new ArrayList();
+
+ public void commandName(String commandName) {
+ operations.add(new CommandNameOperation(commandName));
+
+ }
+
+ public void end() {
+ operations.add(new EndOperation());
+ }
+
+ public void message(String message) {
+ operations.add(new TextMessageOperation(message));
+ }
+
+ public void message(int number) {
+ operations.add(new NumericMessageOperation(number));
+ }
+
+ public void responseCode(String responseCode) {
+ operations.add(new ResponseCodeOperation(responseCode));
+ }
+
+ public void tag(String tag) {
+ operations.add(new TagOperation(tag));
+ }
+
+ public void untagged() {
+ operations.add(new UntaggedOperation());
+ }
+
+ public static class EndOperation {
+ public boolean equals(Object obj) {
+ return obj instanceof EndOperation;
+ }
+
+ public int hashCode() {
+ return 3;
+ }
+
+ }
+
+ public static class TextMessageOperation {
+ public final String text;
+ public TextMessageOperation(String text) {
+ this.text = text;
+ }
+ public int hashCode() {
+ final int PRIME = 31;
+ int result = 1;
+ result = PRIME * result + ((text == null) ? 0 : text.hashCode());
+ return result;
+ }
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ final TextMessageOperation other = (TextMessageOperation) obj;
+ if (text == null) {
+ if (other.text != null)
+ return false;
+ } else if (!text.equals(other.text))
+ return false;
+ return true;
+ }
+
+ }
+
+ public static class NumericMessageOperation {
+ public final int number;
+ public NumericMessageOperation(int number) {
+ this.number = number;
+ }
+ public int hashCode() {
+ final int PRIME = 31;
+ int result = 1;
+ result = PRIME * result + number;
+ return result;
+ }
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ final NumericMessageOperation other = (NumericMessageOperation) obj;
+ if (number != other.number)
+ return false;
+ return true;
+ }
+
+ }
+
+
+ public static class ResponseCodeOperation {
+ public final String responseCode;
+
+ public ResponseCodeOperation(final String responseCode) {
+ super();
+ this.responseCode = responseCode;
+ }
+
+ public int hashCode() {
+ final int PRIME = 31;
+ int result = 1;
+ result = PRIME * result + ((responseCode == null) ? 0 : responseCode.hashCode());
+ return result;
+ }
+
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ final ResponseCodeOperation other = (ResponseCodeOperation) obj;
+ if (responseCode == null) {
+ if (other.responseCode != null)
+ return false;
+ } else if (!responseCode.equals(other.responseCode))
+ return false;
+ return true;
+ }
+
+ }
+
+ public static class CommandNameOperation {
+ public final String commandName;
+
+ public CommandNameOperation(final String commandName) {
+ super();
+ this.commandName = commandName;
+ }
+
+ public int hashCode() {
+ final int PRIME = 31;
+ int result = 1;
+ result = PRIME * result + ((commandName == null) ? 0 : commandName.hashCode());
+ return result;
+ }
+
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ final CommandNameOperation other = (CommandNameOperation) obj;
+ if (commandName == null) {
+ if (other.commandName != null)
+ return false;
+ } else if (!commandName.equals(other.commandName))
+ return false;
+ return true;
+ }
+
+ }
+
+ public static class UntaggedOperation {
+ public boolean equals(Object obj) {
+ return obj instanceof UntaggedOperation;
+ }
+
+ public int hashCode() {
+ return 2;
+ }
+
+ }
+
+ public static class TagOperation {
+
+ private final String tag;
+ public TagOperation(String tag) {
+ this.tag = tag;
+ }
+ public int hashCode() {
+ final int PRIME = 31;
+ int result = 1;
+ result = PRIME * result + ((tag == null) ? 0 : tag.hashCode());
+ return result;
+ }
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ final TagOperation other = (TagOperation) obj;
+ if (tag == null) {
+ if (other.tag != null)
+ return false;
+ } else if (!tag.equals(other.tag))
+ return false;
+ return true;
+ }
+
+ }
+
+
+}
Added: james/server/sandbox/seda-imap/src/test/org/apache/james/imapserver/MockImapSession.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap/src/test/org/apache/james/imapserver/MockImapSession.java?view=auto&rev=503406
==============================================================================
--- james/server/sandbox/seda-imap/src/test/org/apache/james/imapserver/MockImapSession.java (added)
+++ james/server/sandbox/seda-imap/src/test/org/apache/james/imapserver/MockImapSession.java Sun Feb 4 05:46:22 2007
@@ -0,0 +1,80 @@
+package org.apache.james.imapserver;
+
+import org.apache.james.imapserver.store.MailboxException;
+import org.apache.james.mailboxmanager.MailboxManagerException;
+import org.apache.james.mailboxmanager.mailbox.ImapMailboxSession;
+import org.apache.james.mailboxmanager.manager.MailboxManager;
+import org.apache.james.services.User;
+import org.apache.james.services.UsersRepository;
+
+public class MockImapSession implements ImapSession {
+
+ public String clientHostName = "localhost";
+ public String clientIP = "127.0.0.1";
+
+ public String buildFullName(String mailboxName)
+ throws MailboxManagerException {
+ return mailboxName;
+ }
+
+ public void closeConnection() {
+ }
+
+ public void closeConnection(String byeMessage) {
+ }
+
+ public void closeMailbox() throws MailboxManagerException {
+ }
+
+ public void deselect() {
+ }
+
+ public String getClientHostname() {
+ return clientHostName;
+ }
+
+ public String getClientIP() {
+ return clientIP;
+ }
+
+ public MailboxManager getMailboxManager() throws MailboxManagerException {
+// TODO: mock
+ return null;
+ }
+
+ public SelectedMailboxSession getSelected() {
+// TODO: mock
+ return null;
+ }
+
+ public ImapSessionState getState() {
+// TODO: mock
+ return null;
+ }
+
+ public User getUser() {
+// TODO: mock
+ return null;
+ }
+
+ public UsersRepository getUsers() {
+ // TODO: mock
+ return null;
+ }
+
+ public void setAuthenticated(User user) {
+
+ }
+
+ public void setSelected(ImapMailboxSession mailbox, boolean readOnly)
+ throws MailboxManagerException {
+ }
+
+ public void unsolicitedResponses(ImapResponse response, boolean useUid)
+ throws MailboxException {
+ }
+
+ public void unsolicitedResponses(ImapResponse request,
+ boolean omitExpunged, boolean useUid) throws MailboxException {
+ }
+}
Added: james/server/sandbox/seda-imap/src/test/org/apache/james/imapserver/commands/CommandFailedResponseMessageTest.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap/src/test/org/apache/james/imapserver/commands/CommandFailedResponseMessageTest.java?view=auto&rev=503406
==============================================================================
--- james/server/sandbox/seda-imap/src/test/org/apache/james/imapserver/commands/CommandFailedResponseMessageTest.java (added)
+++ james/server/sandbox/seda-imap/src/test/org/apache/james/imapserver/commands/CommandFailedResponseMessageTest.java Sun Feb 4 05:46:22 2007
@@ -0,0 +1,92 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+
+package org.apache.james.imapserver.commands;
+
+import org.apache.james.imapserver.ImapConstants;
+import org.apache.james.imapserver.ImapResponse;
+import org.apache.james.imapserver.ImapSession;
+import org.apache.james.imapserver.MockImapResponseWriter;
+import org.apache.james.imapserver.MockImapSession;
+
+import junit.framework.TestCase;
+
+public class CommandFailedResponseMessageTest extends TestCase {
+
+ private static final String TAG = "A Tag";
+
+ MockImapResponseWriter writer;
+ ImapResponse response;
+ MockCommand command;
+ ImapSession session;
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ writer = new MockImapResponseWriter();
+ response = new ImapResponse(writer);
+ response.setTag(TAG);
+ command = new MockCommand();
+ session = new MockImapSession();
+ }
+
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ }
+
+ public void testWithResponseCode() throws Exception {
+ String code = "A code";
+ String message = "A message";
+ CommandFailedResponseMessage responseMessage
+ = new CommandFailedResponseMessage(command, code, message);
+ responseMessage.encode(response, session);
+ assertEquals(7, writer.operations.size());
+ assertEquals(new MockImapResponseWriter.TagOperation(TAG), writer.operations.get(0));
+ assertEquals(new MockImapResponseWriter.TextMessageOperation(ImapConstants.NO),
+ writer.operations.get(1));
+ assertEquals(new MockImapResponseWriter.ResponseCodeOperation(code),
+ writer.operations.get(2));
+ assertEquals(new MockImapResponseWriter.CommandNameOperation(MockCommand.NAME),
+ writer.operations.get(3));
+ assertEquals(new MockImapResponseWriter.TextMessageOperation(ImapResponse.FAILED),
+ writer.operations.get(4));
+ assertEquals(new MockImapResponseWriter.TextMessageOperation(message),
+ writer.operations.get(5));
+ assertEquals(new MockImapResponseWriter.EndOperation(),
+ writer.operations.get(6));
+ }
+
+ public void testWithoutResponseCode() throws Exception {
+ String message = "A message";
+ CommandFailedResponseMessage responseMessage
+ = new CommandFailedResponseMessage(command, message);
+ responseMessage.encode(response, session);
+ assertEquals(6, writer.operations.size());
+ assertEquals(new MockImapResponseWriter.TagOperation(TAG), writer.operations.get(0));
+ assertEquals(new MockImapResponseWriter.TextMessageOperation(ImapConstants.NO),
+ writer.operations.get(1));
+ assertEquals(new MockImapResponseWriter.CommandNameOperation(MockCommand.NAME),
+ writer.operations.get(2));
+ assertEquals(new MockImapResponseWriter.TextMessageOperation(ImapResponse.FAILED),
+ writer.operations.get(3));
+ assertEquals(new MockImapResponseWriter.TextMessageOperation(message),
+ writer.operations.get(4));
+ assertEquals(new MockImapResponseWriter.EndOperation(),
+ writer.operations.get(5));
+ }
+}
Added: james/server/sandbox/seda-imap/src/test/org/apache/james/imapserver/commands/ErrorResponseMessageTest.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap/src/test/org/apache/james/imapserver/commands/ErrorResponseMessageTest.java?view=auto&rev=503406
==============================================================================
--- james/server/sandbox/seda-imap/src/test/org/apache/james/imapserver/commands/ErrorResponseMessageTest.java (added)
+++ james/server/sandbox/seda-imap/src/test/org/apache/james/imapserver/commands/ErrorResponseMessageTest.java Sun Feb 4 05:46:22 2007
@@ -0,0 +1,61 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+
+package org.apache.james.imapserver.commands;
+
+import org.apache.james.imapserver.ImapConstants;
+import org.apache.james.imapserver.ImapResponse;
+import org.apache.james.imapserver.MockImapResponseWriter;
+
+import junit.framework.TestCase;
+
+public class ErrorResponseMessageTest extends TestCase {
+
+ private static final String ERROR = "An error message";
+ private static final String TAG = "A Tag";
+
+ ErrorResponseMessage message;
+ MockImapResponseWriter writer;
+ ImapResponse response;
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ writer = new MockImapResponseWriter();
+ response = new ImapResponse(writer);
+ response.setTag(TAG);
+ message = new ErrorResponseMessage(ERROR);
+ }
+
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ }
+
+ public void testWrite() {
+ message.encode(response, null);
+ assertEquals(4, writer.operations.size());
+ assertEquals(new MockImapResponseWriter.TagOperation(TAG), writer.operations.get(0));
+ assertEquals(new MockImapResponseWriter.TextMessageOperation(ImapConstants.BAD),
+ writer.operations.get(1));
+ assertEquals(new MockImapResponseWriter.TextMessageOperation(ERROR),
+ writer.operations.get(2));
+ assertEquals(new MockImapResponseWriter.EndOperation(),
+ writer.operations.get(3));
+ }
+
+}
Added: james/server/sandbox/seda-imap/src/test/org/apache/james/imapserver/commands/MockCommand.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap/src/test/org/apache/james/imapserver/commands/MockCommand.java?view=auto&rev=503406
==============================================================================
--- james/server/sandbox/seda-imap/src/test/org/apache/james/imapserver/commands/MockCommand.java (added)
+++ james/server/sandbox/seda-imap/src/test/org/apache/james/imapserver/commands/MockCommand.java Sun Feb 4 05:46:22 2007
@@ -0,0 +1,24 @@
+package org.apache.james.imapserver.commands;
+
+import org.apache.james.imapserver.ImapRequestLineReader;
+import org.apache.james.imapserver.ProtocolException;
+
+public class MockCommand extends CommandTemplate {
+
+ public static final String NAME = "MOCK";
+
+ protected String getArgSyntax() {
+ return null;
+ }
+
+ public String getName() {
+ return NAME;
+ }
+
+ protected AbstractImapCommandMessage decode(ImapRequestLineReader request) throws ProtocolException {
+ // TODO implementation
+ return null;
+ }
+
+
+}
Added: james/server/sandbox/seda-imap/src/test/org/apache/james/imapserver/encode/RecordingImapResponseWriterTest.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap/src/test/org/apache/james/imapserver/encode/RecordingImapResponseWriterTest.java?view=auto&rev=503406
==============================================================================
--- james/server/sandbox/seda-imap/src/test/org/apache/james/imapserver/encode/RecordingImapResponseWriterTest.java (added)
+++ james/server/sandbox/seda-imap/src/test/org/apache/james/imapserver/encode/RecordingImapResponseWriterTest.java Sun Feb 4 05:46:22 2007
@@ -0,0 +1,109 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+package org.apache.james.imapserver.encode;
+
+import org.apache.james.imapserver.ImapResponse;
+import org.apache.james.imapserver.MockImapResponseWriter;
+import org.apache.james.imapserver.MockImapSession;
+
+import junit.framework.TestCase;
+
+public class RecordingImapResponseWriterTest extends TestCase {
+
+ RecordingImapResponseWriter writer;
+ MockImapResponseWriter out;
+ ImapResponse response;
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ out = new MockImapResponseWriter();
+ response = new ImapResponse(out);
+ writer = new RecordingImapResponseWriter();
+ }
+
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ }
+
+ public void testProcess() {
+ assertEquals("Recorder is a response", writer, writer.process(new MockImapSession()));
+ }
+
+ public void testCommandName() {
+ String name = "A command name";
+ writer.commandName(name);
+ writer.encode(response, null);
+ assertEquals("Reply response", 1, out.operations.size());
+ assertEquals("Reply response", new MockImapResponseWriter.CommandNameOperation(name),
+ out.operations.get(0));
+ }
+
+ public void testEnd() {
+ writer.end();
+ writer.encode(response, null);
+ assertEquals("Reply response", 1, out.operations.size());
+ assertEquals("Reply response", new MockImapResponseWriter.EndOperation(),
+ out.operations.get(0));
+ }
+
+ public void testMessageString() {
+ String message = "A message";
+ writer.message(message);
+ writer.encode(response, null);
+ assertEquals("Reply response", 1, out.operations.size());
+ assertEquals("Reply response", new MockImapResponseWriter.TextMessageOperation(message),
+ out.operations.get(0));
+ }
+
+ public void testMessageInt() {
+ int message = 42;
+ writer.message(message);
+ writer.encode(response, null);
+ assertEquals("Reply response", 1, out.operations.size());
+ assertEquals("Reply response", new MockImapResponseWriter.NumericMessageOperation(message),
+ out.operations.get(0));
+ }
+
+ public void testResponseCode() {
+ String code = "A response code";
+ writer.responseCode(code);
+ writer.encode(response, null);
+ assertEquals("Reply response", 1, out.operations.size());
+ assertEquals("Reply response", new MockImapResponseWriter.ResponseCodeOperation(code),
+ out.operations.get(0));
+ }
+
+ public void testTag() {
+ String tag = "A tag";
+ writer.tag(tag);
+ writer.encode(response, null);
+ assertEquals("Reply response", 1, out.operations.size());
+ assertEquals("Reply response", new MockImapResponseWriter.TagOperation(tag),
+ out.operations.get(0));
+ }
+
+ public void testUntagged() {
+ writer.untagged();
+ writer.encode(response, null);
+ assertEquals("Reply response", 1, out.operations.size());
+ assertEquals("Reply response", new MockImapResponseWriter.UntaggedOperation(),
+ out.operations.get(0));
+ }
+
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org