package com.nirima.jenkins.plugins.docker.ws; import java.io.File; import com.nirima.jenkins.plugins.docker.action.DockerBuildAction; import hudson.FilePath; import hudson.model.Job; import hudson.model.Run; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import static org.apache.commons.lang.RandomStringUtils.randomAlphabetic; import static org.hamcrest.Matchers.both; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.endsWith; import static org.hamcrest.Matchers.nullValue; import static org.hamcrest.Matchers.startsWith; import static org.junit.Assert.assertThat; import static org.mockito.Mockito.when; /** * @author lanwen (Merkushev Kirill) */ @RunWith(MockitoJUnitRunner.class) public class MappedFsWorkspaceBrowserTest { public static final String FS_MAPPING = File.pathSeparator + "mapping"; public static final String JOB_NAME = "job-name"; @Mock private Job job; @Mock private Run run; @Test public void shouldReturnWsMappingOnFieldInAction() throws Exception { MappedFsWorkspaceBrowser mappedFsWorkspaceBrowser = new MappedFsWorkspaceBrowser(); when(job.getLastBuild()).thenReturn(run); when(job.getName()).thenReturn(JOB_NAME); when(run.getAction(DockerBuildAction.class)) .thenReturn(new DockerBuildAction( randomAlphabetic(10), randomAlphabetic(10), randomAlphabetic(10), FS_MAPPING)); FilePath workspace = mappedFsWorkspaceBrowser.getWorkspace(job); assertThat(workspace.getRemote(), both(startsWith(FS_MAPPING)) .and(endsWith(JOB_NAME)) .and(containsString("workspace"))); } @Test public void shouldReturnNullOnNullLastBuild() throws Exception { MappedFsWorkspaceBrowser mappedFsWorkspaceBrowser = new MappedFsWorkspaceBrowser(); assertThat(mappedFsWorkspaceBrowser.getWorkspace(job), nullValue()); } @Test public void shouldReturnNullOnNullAction() throws Exception { MappedFsWorkspaceBrowser mappedFsWorkspaceBrowser = new MappedFsWorkspaceBrowser(); when(job.getLastBuild()).thenReturn(run); assertThat(mappedFsWorkspaceBrowser.getWorkspace(job), nullValue()); } @Test public void shouldReturnNullOnEmptyWsMappingInAction() throws Exception { MappedFsWorkspaceBrowser mappedFsWorkspaceBrowser = new MappedFsWorkspaceBrowser(); when(job.getLastBuild()).thenReturn(run); when(run.getAction(DockerBuildAction.class)) .thenReturn(new DockerBuildAction( randomAlphabetic(10), randomAlphabetic(10), randomAlphabetic(10), "")); assertThat(mappedFsWorkspaceBrowser.getWorkspace(job), nullValue()); } }