/* | |
* Copyright 2007 the original author or authors. | |
* | |
* Licensed 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.mockftpserver.stub; | |
import org.mockftpserver.core.command.Command; | |
import org.mockftpserver.core.command.CommandHandler; | |
import org.mockftpserver.core.command.InvocationRecord; | |
import org.mockftpserver.core.server.*; | |
import org.mockftpserver.core.server.AbstractFtpServerTestCase; | |
import org.mockftpserver.core.session.Session; | |
import org.mockftpserver.stub.command.AbstractStubCommandHandler; | |
import org.mockftpserver.stub.command.CwdCommandHandler; | |
import java.util.ResourceBundle; | |
/** | |
* Unit tests for StubFtpServer. Also see {@link StubFtpServer_StartTest} | |
* and {@link StubFtpServerIntegrationTest}. | |
* | |
* @author Chris Mair | |
* @version $Revision$ - $Date$ | |
*/ | |
public final class StubFtpServerTest extends AbstractFtpServerTestCase { | |
private StubFtpServer stubFtpServer; | |
private AbstractStubCommandHandler commandHandler; | |
private CommandHandler commandHandler_NoReplyTextBundle; | |
//------------------------------------------------------------------------- | |
// Extra tests (Standard tests defined in superclass) | |
//------------------------------------------------------------------------- | |
/** | |
* Test the setCommandHandler() method, for a CommandHandler that does not implement ResourceBundleAware | |
*/ | |
public void testSetCommandHandler_NotReplyTextBundleAware() { | |
stubFtpServer.setCommandHandler("ZZZ", commandHandler_NoReplyTextBundle); | |
assertSame("commandHandler", commandHandler_NoReplyTextBundle, stubFtpServer.getCommandHandler("ZZZ")); | |
} | |
/** | |
* Test the setCommandHandler() method, for a CommandHandler that implements ReplyTextBundleAware, | |
* and whose replyTextBundle attribute is null. | |
*/ | |
public void testSetCommandHandler_NullReplyTextBundle() { | |
stubFtpServer.setCommandHandler("ZZZ", commandHandler); | |
assertSame("commandHandler", commandHandler, stubFtpServer.getCommandHandler("ZZZ")); | |
assertSame("replyTextBundle", stubFtpServer.getReplyTextBundle(), commandHandler.getReplyTextBundle()); | |
} | |
/** | |
* Test setReplyTextBaseName() method | |
*/ | |
public void testSetReplyTextBaseName() { | |
stubFtpServer.setReplyTextBaseName("SampleReplyText"); | |
CwdCommandHandler commandHandler = new CwdCommandHandler(); | |
// The resource bundle is passed along to new CommandHandlers (if they don't already have one) | |
stubFtpServer.setCommandHandler("CWD", commandHandler); | |
ResourceBundle resourceBundle = commandHandler.getReplyTextBundle(); | |
assertEquals("110", "Testing123", resourceBundle.getString("110")); | |
} | |
//------------------------------------------------------------------------- | |
// Test setup | |
//------------------------------------------------------------------------- | |
/** | |
* @see org.mockftpserver.test.AbstractTestCase#setUp() | |
*/ | |
protected void setUp() throws Exception { | |
super.setUp(); | |
stubFtpServer = (StubFtpServer) ftpServer; | |
// Create a CommandHandler instance that also implements ResourceBundleAware | |
commandHandler = new AbstractStubCommandHandler() { | |
protected void handleCommand(Command command, Session session, InvocationRecord invocationRecord) throws Exception { | |
} | |
}; | |
// Create a CommandHandler instance that does NOT implement ResourceBundleAware | |
commandHandler_NoReplyTextBundle = new CommandHandler() { | |
public void handleCommand(Command command, Session session) throws Exception { | |
} | |
}; | |
} | |
//------------------------------------------------------------------------- | |
// Abstract method implementations | |
//------------------------------------------------------------------------- | |
protected AbstractFtpServer createFtpServer() { | |
return new StubFtpServer(); | |
} | |
protected CommandHandler createCommandHandler() { | |
return new AbstractStubCommandHandler() { | |
protected void handleCommand(Command command, Session session, InvocationRecord invocationRecord) throws Exception { | |
} | |
}; | |
} | |
protected void verifyCommandHandlerInitialized(CommandHandler commandHandler) { | |
AbstractStubCommandHandler stubCommandHandler = (AbstractStubCommandHandler) commandHandler; | |
assertSame("replyTextBundle", stubFtpServer.getReplyTextBundle(), stubCommandHandler.getReplyTextBundle()); | |
} | |
} |