package hudson.plugins.tfs.commands; import com.microsoft.tfs.core.TFSTeamProjectCollection; import com.microsoft.tfs.core.clients.versioncontrol.WorkspaceLocation; import com.microsoft.tfs.core.clients.versioncontrol.WorkspaceOptions; import com.microsoft.tfs.core.clients.versioncontrol.soapextensions.WorkingFolder; import hudson.plugins.tfs.model.Server; import hudson.remoting.Callable; import org.junit.Test; import static org.mockito.AdditionalMatchers.aryEq; import static org.mockito.Matchers.isA; import static org.mockito.Mockito.when; import java.util.Collections; import java.util.List; public class NewWorkspaceCommandTest extends AbstractCallableCommandTest { private static final List<String> EMPTY_CLOAKED_PATHS = Collections.emptyList(); @Test public void assertLogging() throws Exception { when(server.getUserName()).thenReturn("snd\\user_cp"); when(vcc.createWorkspace(aryEq((WorkingFolder[]) null), isA(String.class), isA(String.class), isA(String.class), isA(String.class), isA(WorkspaceLocation.class), isA(WorkspaceOptions.class))).thenReturn(null); final NewWorkspaceCommand command = new NewWorkspaceCommand(server, "TheWorkspaceName", null, EMPTY_CLOAKED_PATHS, null) { @Override public Server createServer() { return server; } @Override protected void updateCache(final TFSTeamProjectCollection connection) { // no-op for tests } }; final Callable<Void, Exception> callable = command.getCallable(); callable.call(); assertLog( "Creating workspace 'TheWorkspaceName' owned by 'snd\\user_cp'...", "Created workspace 'TheWorkspaceName'." ); } @Test public void assertLoggingWhenAlsoMapping() throws Exception { final List<String> cloakedPaths = Collections.singletonList("$/Stuff/Hide"); when(server.getUserName()).thenReturn("snd\\user_cp"); when(vcc.createWorkspace(aryEq((WorkingFolder[]) null), isA(String.class), isA(String.class), isA(String.class), isA(String.class), isA(WorkspaceLocation.class), isA(WorkspaceOptions.class))).thenReturn(null); final NewWorkspaceCommand command = new NewWorkspaceCommand(server, "TheWorkspaceName", "$/Stuff", cloakedPaths, "/home/jenkins/jobs/stuff/workspace") { @Override public Server createServer() { return server; } @Override protected void updateCache(final TFSTeamProjectCollection connection) { // no-op for tests } }; final Callable<Void, Exception> callable = command.getCallable(); callable.call(); assertLog( "Creating workspace 'TheWorkspaceName' owned by 'snd\\user_cp'...", "Mapping '$/Stuff' to local folder '/home/jenkins/jobs/stuff/workspace' in workspace 'TheWorkspaceName'...", "Cloaking '$/Stuff/Hide' in workspace 'TheWorkspaceName'...", "Created workspace 'TheWorkspaceName'." ); } @Override protected AbstractCallableCommand createCommand(final ServerConfigurationProvider serverConfig) { return new NewWorkspaceCommand(serverConfig, "workspaceName", "$/serverPath", EMPTY_CLOAKED_PATHS, "local/path"); } }