package com.asolutions.scmsshd.commands.git; import java.io.InputStream; import java.io.OutputStream; import java.util.Properties; import org.apache.sshd.server.CommandFactory.ExitCallback; import org.jmock.Expectations; import org.junit.Test; import com.asolutions.MockTestCase; import com.asolutions.scmsshd.authorizors.AuthorizationLevel; import com.asolutions.scmsshd.commands.FilteredCommand; import com.asolutions.scmsshd.commands.handlers.ISCMCommandHandler; public class GitSCMCommandHandlerTest extends MockTestCase { @Test public void testExecuteWithUploadPack() throws Exception { final FilteredCommand filteredCommand = new FilteredCommand("git-upload-pack", "proj-2/git.git"); final InputStream mockInputStream = context.mock(InputStream.class); final OutputStream mockOutputStream = context.mock(OutputStream.class, "mockOutputStream"); final OutputStream mockErrorStream = context.mock(OutputStream.class, "mockErrorStream"); final ExitCallback mockExitCallback = context.mock(ExitCallback.class); final ISCMCommandHandler mockUploadPackHandler = context.mock(ISCMCommandHandler.class, "mockUploadPackHandler"); final ISCMCommandHandler mockFetchPackHandler = context.mock(ISCMCommandHandler.class, "mockFetchPackHandler"); final Properties mockProperties = context.mock(Properties.class); checking(new Expectations(){{ one(mockUploadPackHandler).execute(filteredCommand, mockInputStream, mockOutputStream, mockErrorStream, mockExitCallback, mockProperties, AuthorizationLevel.AUTH_LEVEL_READ_WRITE); }}); GitSCMCommandHandler handler = new GitSCMCommandHandler(mockUploadPackHandler, mockFetchPackHandler); handler.execute(filteredCommand, mockInputStream, mockOutputStream, mockErrorStream, mockExitCallback, mockProperties, AuthorizationLevel.AUTH_LEVEL_READ_WRITE); } @Test public void testWithUploadPackReadOnlyAccessLevelWorks() throws Exception { final FilteredCommand filteredCommand = new FilteredCommand("git-upload-pack", "proj-2/git.git"); final InputStream mockInputStream = context.mock(InputStream.class); final OutputStream mockOutputStream = context.mock(OutputStream.class, "mockOutputStream"); final OutputStream mockErrorStream = context.mock(OutputStream.class, "mockErrorStream"); final ExitCallback mockExitCallback = context.mock(ExitCallback.class); final ISCMCommandHandler mockUploadPackHandler = context.mock(ISCMCommandHandler.class, "mockUploadPackHandler"); final ISCMCommandHandler mockFetchPackHandler = context.mock(ISCMCommandHandler.class, "mockFetchPackHandler"); final Properties mockProperties = context.mock(Properties.class); checking(new Expectations(){{ one(mockUploadPackHandler).execute(filteredCommand, mockInputStream, mockOutputStream, mockErrorStream, mockExitCallback, mockProperties, AuthorizationLevel.AUTH_LEVEL_READ_ONLY); }}); GitSCMCommandHandler handler = new GitSCMCommandHandler(mockUploadPackHandler, mockFetchPackHandler); handler.execute(filteredCommand, mockInputStream, mockOutputStream, mockErrorStream, mockExitCallback, mockProperties, AuthorizationLevel.AUTH_LEVEL_READ_ONLY); } @Test public void testExecuteWithReceivePack() throws Exception { final FilteredCommand filteredCommand = new FilteredCommand("git-receive-pack", "proj-2/git.git"); final InputStream mockInputStream = context.mock(InputStream.class); final OutputStream mockOutputStream = context.mock(OutputStream.class, "mockOutputStream"); final OutputStream mockErrorStream = context.mock(OutputStream.class, "mockErrorStream"); final ExitCallback mockExitCallback = context.mock(ExitCallback.class); final ISCMCommandHandler mockUploadPackHandler = context.mock(ISCMCommandHandler.class, "mockUploadPackHandler"); final ISCMCommandHandler mockReceivePackHandler = context.mock(ISCMCommandHandler.class, "mockReceivePackHandler"); final Properties mockProperties = context.mock(Properties.class); checking(new Expectations(){{ one(mockReceivePackHandler).execute(filteredCommand, mockInputStream, mockOutputStream, mockErrorStream, mockExitCallback, mockProperties, AuthorizationLevel.AUTH_LEVEL_READ_WRITE); }}); GitSCMCommandHandler handler = new GitSCMCommandHandler(mockUploadPackHandler, mockReceivePackHandler); handler.execute(filteredCommand, mockInputStream, mockOutputStream, mockErrorStream, mockExitCallback, mockProperties, AuthorizationLevel.AUTH_LEVEL_READ_WRITE); } }