package com.asolutions.scmsshd.commands.factories; import static org.junit.Assert.assertEquals; import java.util.Properties; import org.jmock.Expectations; import org.junit.Test; import com.asolutions.MockTestCase; import com.asolutions.scmsshd.commands.FilteredCommand; import com.asolutions.scmsshd.commands.NoOpCommand; import com.asolutions.scmsshd.commands.filters.BadCommandException; import com.asolutions.scmsshd.commands.filters.IBadCommandFilter; import com.asolutions.scmsshd.converters.path.IPathToProjectNameConverter; import com.asolutions.scmsshd.sshd.IProjectAuthorizer; public class CommandFactoryBaseTest extends MockTestCase { private static final String ARGUMENT = "argument"; private static final String COMMAND = "command"; @Test public void testBadCommandReturnsNoOp() throws Exception { final IBadCommandFilter mockBadCommandFilter = context.mock(IBadCommandFilter.class); checking(new Expectations(){{ one(mockBadCommandFilter).filterOrThrow(COMMAND); will(throwException(new BadCommandException())); }}); CommandFactoryBase factory = new CommandFactoryBase(); factory.setBadCommandFilter(mockBadCommandFilter); assertEquals(NoOpCommand.class, factory.createCommand(COMMAND).getClass()); } @Test public void testChecksBadCommandFirst() throws Exception { final IBadCommandFilter mockBadCommandFilter = context.mock(IBadCommandFilter.class); final FilteredCommand filteredCommand = new FilteredCommand(COMMAND, ARGUMENT); final ISCMCommandFactory mockScmCommandFactory = context.mock(ISCMCommandFactory.class); final IProjectAuthorizer mockProjAuth = context.mock(IProjectAuthorizer.class); final IPathToProjectNameConverter mockPathConverter = context.mock(IPathToProjectNameConverter.class); final Properties mockConfig = context.mock(Properties.class); checking(new Expectations(){{ one(mockBadCommandFilter).filterOrThrow(COMMAND); will(returnValue(filteredCommand)); one(mockScmCommandFactory).create(filteredCommand, mockProjAuth, mockPathConverter, mockConfig); }}); CommandFactoryBase factory = new CommandFactoryBase(); factory.setBadCommandFilter(mockBadCommandFilter); factory.setScmCommandFactory(mockScmCommandFactory); factory.setProjectAuthorizor(mockProjAuth); factory.setPathToProjectNameConverter(mockPathConverter); factory.setConfiguration(mockConfig); factory.createCommand(COMMAND); } }