diff --git a/pom.xml b/pom.xml index 9ec2963d79..5e67c117db 100644 --- a/pom.xml +++ b/pom.xml @@ -138,7 +138,8 @@ org.mockito - mockito-all + mockito-core + ${mockito.version} test @@ -305,7 +306,7 @@ org.mockito mockito-all - ${mokito.version} + ${mockito.version} test @@ -383,7 +384,7 @@ org.codehaus.mojo animal-sniffer-maven-plugin - 1.15 + 1.17 org.codehaus.mojo.signature @@ -692,7 +693,7 @@ - 1.10.19 + 2.10.0 1.3 4.12 diff --git a/scm-core/src/main/java/sonia/scm/repository/api/BranchesCommandBuilder.java b/scm-core/src/main/java/sonia/scm/repository/api/BranchesCommandBuilder.java index 3deaf491d8..5a456de936 100644 --- a/scm-core/src/main/java/sonia/scm/repository/api/BranchesCommandBuilder.java +++ b/scm-core/src/main/java/sonia/scm/repository/api/BranchesCommandBuilder.java @@ -29,16 +29,11 @@ * */ - package sonia.scm.repository.api; -//~--- non-JDK imports -------------------------------------------------------- - import com.google.common.base.Objects; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; - import sonia.scm.cache.Cache; import sonia.scm.cache.CacheManager; import sonia.scm.repository.Branch; @@ -49,10 +44,9 @@ import sonia.scm.repository.RepositoryException; import sonia.scm.repository.spi.BlameCommand; import sonia.scm.repository.spi.BranchesCommand; -//~--- JDK imports ------------------------------------------------------------ - import java.io.IOException; + /** * The branches command list all repository branches.
*
@@ -139,10 +133,7 @@ public final class BranchesCommandBuilder branches = getBranchesFromCommand(); - if (branches != null) - { - cache.put(key, branches); - } + cache.put(key, branches); } else if (logger.isDebugEnabled()) { diff --git a/scm-core/src/main/java/sonia/scm/web/VndMediaType.java b/scm-core/src/main/java/sonia/scm/web/VndMediaType.java index 6563918192..1e439a6a16 100644 --- a/scm-core/src/main/java/sonia/scm/web/VndMediaType.java +++ b/scm-core/src/main/java/sonia/scm/web/VndMediaType.java @@ -16,9 +16,11 @@ public class VndMediaType { public static final String USER = PREFIX + "user" + SUFFIX; public static final String GROUP = PREFIX + "group" + SUFFIX; public static final String REPOSITORY = PREFIX + "repository" + SUFFIX; + public static final String BRANCH = PREFIX + "branch" + SUFFIX; public static final String USER_COLLECTION = PREFIX + "userCollection" + SUFFIX; public static final String GROUP_COLLECTION = PREFIX + "groupCollection" + SUFFIX; public static final String REPOSITORY_COLLECTION = PREFIX + "repositoryCollection" + SUFFIX; + public static final String BRANCH_COLLECTION = PREFIX + "branchCollection" + SUFFIX; public static final String CONFIG = PREFIX + "config" + SUFFIX; public static final String REPOSITORY_TYPE_COLLECTION = PREFIX + "repositoryTypeCollection" + SUFFIX; public static final String REPOSITORY_TYPE = PREFIX + "repositoryType" + SUFFIX; diff --git a/scm-core/src/test/java/sonia/scm/net/ahc/AdvancedHttpClientTest.java b/scm-core/src/test/java/sonia/scm/net/ahc/AdvancedHttpClientTest.java index 59549c24dd..f8f0a00df2 100644 --- a/scm-core/src/test/java/sonia/scm/net/ahc/AdvancedHttpClientTest.java +++ b/scm-core/src/test/java/sonia/scm/net/ahc/AdvancedHttpClientTest.java @@ -36,7 +36,7 @@ import static org.junit.Assert.*; import org.junit.runner.RunWith; import org.mockito.Answers; import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; /** * @@ -105,4 +105,4 @@ public class AdvancedHttpClientTest { assertEquals(URL, request.getUrl()); assertEquals("PROPFIND", request.getMethod()); } -} \ No newline at end of file +} diff --git a/scm-core/src/test/java/sonia/scm/net/ahc/AdvancedHttpRequestTest.java b/scm-core/src/test/java/sonia/scm/net/ahc/AdvancedHttpRequestTest.java index 5b2d675e97..08023f3dea 100644 --- a/scm-core/src/test/java/sonia/scm/net/ahc/AdvancedHttpRequestTest.java +++ b/scm-core/src/test/java/sonia/scm/net/ahc/AdvancedHttpRequestTest.java @@ -35,7 +35,7 @@ import org.junit.Test; import static org.junit.Assert.*; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; /** * @@ -54,4 +54,4 @@ public class AdvancedHttpRequestTest { assertEquals(AdvancedHttpRequest.class, ahr.self().getClass()); } -} \ No newline at end of file +} diff --git a/scm-core/src/test/java/sonia/scm/net/ahc/AdvancedHttpRequestWithBodyTest.java b/scm-core/src/test/java/sonia/scm/net/ahc/AdvancedHttpRequestWithBodyTest.java index 5a7c55a46d..b7fa9ae84a 100644 --- a/scm-core/src/test/java/sonia/scm/net/ahc/AdvancedHttpRequestWithBodyTest.java +++ b/scm-core/src/test/java/sonia/scm/net/ahc/AdvancedHttpRequestWithBodyTest.java @@ -46,7 +46,7 @@ import org.junit.Rule; import org.junit.rules.TemporaryFolder; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; /** * @@ -166,4 +166,4 @@ public class AdvancedHttpRequestWithBodyTest { assertEquals(AdvancedHttpRequestWithBody.class, request.self().getClass()); } -} \ No newline at end of file +} diff --git a/scm-core/src/test/java/sonia/scm/net/ahc/AdvancedHttpResponseTest.java b/scm-core/src/test/java/sonia/scm/net/ahc/AdvancedHttpResponseTest.java index 6fc149f36c..0d67d0e931 100644 --- a/scm-core/src/test/java/sonia/scm/net/ahc/AdvancedHttpResponseTest.java +++ b/scm-core/src/test/java/sonia/scm/net/ahc/AdvancedHttpResponseTest.java @@ -44,7 +44,7 @@ import org.junit.runner.RunWith; import org.mockito.Answers; import org.mockito.Mock; import static org.mockito.Mockito.*; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; /** * @@ -211,4 +211,4 @@ public class AdvancedHttpResponseTest { assertFalse(response.isSuccessful()); } -} \ No newline at end of file +} diff --git a/scm-core/src/test/java/sonia/scm/net/ahc/BaseHttpRequestTest.java b/scm-core/src/test/java/sonia/scm/net/ahc/BaseHttpRequestTest.java index 9b3ce995f5..aa735aa2a5 100644 --- a/scm-core/src/test/java/sonia/scm/net/ahc/BaseHttpRequestTest.java +++ b/scm-core/src/test/java/sonia/scm/net/ahc/BaseHttpRequestTest.java @@ -42,7 +42,7 @@ import org.junit.Before; import org.junit.runner.RunWith; import org.mockito.Mock; import static org.mockito.Mockito.*; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; /** * @@ -139,4 +139,4 @@ public class BaseHttpRequestTest { assertThat(request.queryStrings("a", i1), instanceOf(AdvancedHttpRequest.class)); } -} \ No newline at end of file +} diff --git a/scm-core/src/test/java/sonia/scm/net/ahc/ByteSourceContentTest.java b/scm-core/src/test/java/sonia/scm/net/ahc/ByteSourceContentTest.java index 24487f6582..ad0b51b7e6 100644 --- a/scm-core/src/test/java/sonia/scm/net/ahc/ByteSourceContentTest.java +++ b/scm-core/src/test/java/sonia/scm/net/ahc/ByteSourceContentTest.java @@ -40,7 +40,7 @@ import static org.junit.Assert.*; import org.junit.runner.RunWith; import org.mockito.Mock; import static org.mockito.Mockito.*; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; /** * @@ -71,4 +71,4 @@ public class ByteSourceContentTest { assertEquals("abc", baos.toString("UTF-8")); } -} \ No newline at end of file +} diff --git a/scm-core/src/test/java/sonia/scm/net/ahc/FileContentTest.java b/scm-core/src/test/java/sonia/scm/net/ahc/FileContentTest.java index 95b381b880..5bfba029c0 100644 --- a/scm-core/src/test/java/sonia/scm/net/ahc/FileContentTest.java +++ b/scm-core/src/test/java/sonia/scm/net/ahc/FileContentTest.java @@ -44,7 +44,7 @@ import org.junit.rules.TemporaryFolder; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; import static org.junit.Assert.*; diff --git a/scm-core/src/test/java/sonia/scm/net/ahc/FormContentBuilderTest.java b/scm-core/src/test/java/sonia/scm/net/ahc/FormContentBuilderTest.java index 56cc6d7379..8995680a1d 100644 --- a/scm-core/src/test/java/sonia/scm/net/ahc/FormContentBuilderTest.java +++ b/scm-core/src/test/java/sonia/scm/net/ahc/FormContentBuilderTest.java @@ -39,7 +39,7 @@ import org.mockito.ArgumentCaptor; import org.mockito.InjectMocks; import org.mockito.Mock; import static org.mockito.Mockito.*; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; /** * @@ -92,4 +92,4 @@ public class FormContentBuilderTest { assertEquals(content, captor.getValue()); } -} \ No newline at end of file +} diff --git a/scm-core/src/test/java/sonia/scm/net/ahc/RawContentTest.java b/scm-core/src/test/java/sonia/scm/net/ahc/RawContentTest.java index f4ee8b7031..0d679a3440 100644 --- a/scm-core/src/test/java/sonia/scm/net/ahc/RawContentTest.java +++ b/scm-core/src/test/java/sonia/scm/net/ahc/RawContentTest.java @@ -39,7 +39,7 @@ import static org.junit.Assert.*; import org.junit.runner.RunWith; import org.mockito.Mock; import static org.mockito.Mockito.*; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; /** * @@ -69,4 +69,4 @@ public class RawContentTest { assertEquals("abc", baos.toString("UTF-8")); } -} \ No newline at end of file +} diff --git a/scm-core/src/test/java/sonia/scm/repository/RepositoryUtilTest.java b/scm-core/src/test/java/sonia/scm/repository/RepositoryUtilTest.java index 82e85568d0..fabc55b9c9 100644 --- a/scm-core/src/test/java/sonia/scm/repository/RepositoryUtilTest.java +++ b/scm-core/src/test/java/sonia/scm/repository/RepositoryUtilTest.java @@ -6,7 +6,7 @@ import org.junit.Test; import org.junit.rules.TemporaryFolder; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; import java.io.File; import java.io.IOException; diff --git a/scm-core/src/test/java/sonia/scm/repository/api/HookContextTest.java b/scm-core/src/test/java/sonia/scm/repository/api/HookContextTest.java index 2f746ec5ad..939858a52e 100644 --- a/scm-core/src/test/java/sonia/scm/repository/api/HookContextTest.java +++ b/scm-core/src/test/java/sonia/scm/repository/api/HookContextTest.java @@ -33,15 +33,12 @@ package sonia.scm.repository.api; import com.google.common.collect.Lists; import com.google.common.collect.Sets; -import java.util.List; -import org.junit.Test; -import static org.junit.Assert.*; -import static org.mockito.Mockito.*; import org.junit.Before; +import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; import sonia.scm.repository.Changeset; import sonia.scm.repository.Person; import sonia.scm.repository.PreProcessorUtil; @@ -51,6 +48,16 @@ import sonia.scm.repository.spi.HookChangesetRequest; import sonia.scm.repository.spi.HookChangesetResponse; import sonia.scm.repository.spi.HookContextProvider; +import java.util.List; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.any; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + /** * Unit tests for {@link HookContext}. * @@ -64,7 +71,7 @@ public class HookContextTest { @Mock private Repository repository; - + @Mock private PreProcessorUtil preProcessorUtil; @@ -79,7 +86,6 @@ public class HookContextTest { */ @Before public void setUpMocks(){ - when(repository.getName()).thenReturn("test"); when(provider.getChangesetProvider()).thenReturn(changesetProvider); when(provider.getSupportedFeatures()).thenReturn(Sets.newHashSet(HookFeature.CHANGESET_PROVIDER)); @@ -138,4 +144,4 @@ public class HookContextTest { assertFalse(context.isFeatureSupported(HookFeature.BRANCH_PROVIDER)); } -} \ No newline at end of file +} diff --git a/scm-core/src/test/java/sonia/scm/security/DefaultCipherHandlerTest.java b/scm-core/src/test/java/sonia/scm/security/DefaultCipherHandlerTest.java index 1fe78191de..e193c86f20 100644 --- a/scm-core/src/test/java/sonia/scm/security/DefaultCipherHandlerTest.java +++ b/scm-core/src/test/java/sonia/scm/security/DefaultCipherHandlerTest.java @@ -40,7 +40,7 @@ import org.junit.rules.TemporaryFolder; import org.junit.runner.RunWith; import org.mockito.Mock; import static org.mockito.Mockito.*; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; import sonia.scm.SCMContextProvider; /** @@ -107,4 +107,4 @@ public class DefaultCipherHandlerTest { assertEquals("hallo123", cipher.decode(cipher.encode("hallo123"))); } -} \ No newline at end of file +} diff --git a/scm-core/src/test/java/sonia/scm/security/SyncingRealmHelperTest.java b/scm-core/src/test/java/sonia/scm/security/SyncingRealmHelperTest.java index 2f322ecbe3..3679a1870b 100644 --- a/scm-core/src/test/java/sonia/scm/security/SyncingRealmHelperTest.java +++ b/scm-core/src/test/java/sonia/scm/security/SyncingRealmHelperTest.java @@ -45,7 +45,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; import sonia.scm.group.Group; import sonia.scm.group.GroupException; diff --git a/scm-core/src/test/java/sonia/scm/web/UserAgentParserTest.java b/scm-core/src/test/java/sonia/scm/web/UserAgentParserTest.java index d3f917932c..eb1de0f499 100644 --- a/scm-core/src/test/java/sonia/scm/web/UserAgentParserTest.java +++ b/scm-core/src/test/java/sonia/scm/web/UserAgentParserTest.java @@ -43,7 +43,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; import sonia.scm.cache.Cache; import sonia.scm.cache.CacheManager; diff --git a/scm-core/src/test/java/sonia/scm/web/filter/AuthenticationFilterTest.java b/scm-core/src/test/java/sonia/scm/web/filter/AuthenticationFilterTest.java index 052f6e1417..d7d8a5d937 100644 --- a/scm-core/src/test/java/sonia/scm/web/filter/AuthenticationFilterTest.java +++ b/scm-core/src/test/java/sonia/scm/web/filter/AuthenticationFilterTest.java @@ -49,7 +49,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; import sonia.scm.config.ScmConfiguration; import sonia.scm.web.WebTokenGenerator; diff --git a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/GitGcTaskTest.java b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/GitGcTaskTest.java index 57fdd59c2f..d008cb0618 100644 --- a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/GitGcTaskTest.java +++ b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/GitGcTaskTest.java @@ -32,19 +32,23 @@ package sonia.scm.repository; import com.google.common.collect.Lists; +import org.eclipse.jgit.api.GarbageCollectCommand; +import org.eclipse.jgit.api.Git; +import org.eclipse.jgit.api.errors.GitAPIException; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.junit.MockitoJUnitRunner; + import java.io.File; import java.io.IOException; import java.util.List; import java.util.Properties; -import org.eclipse.jgit.api.GarbageCollectCommand; -import org.eclipse.jgit.api.Git; -import org.eclipse.jgit.api.errors.GitAPIException; -import org.junit.Test; -import static org.mockito.Mockito.*; -import org.junit.Before; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; + +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; /** * Unit tests for {@link GitGcTask}. @@ -103,8 +107,7 @@ public class GitGcTaskTest // prepare repositories for task Repository unhealthy = mock(Repository.class); when(unhealthy.getType()).thenReturn("git"); - when(unhealthy.isHealthy()).thenReturn(Boolean.FALSE); - + Repository invalid = mock(Repository.class); when(unhealthy.getType()).thenReturn("git"); when(unhealthy.isValid()).thenReturn(Boolean.FALSE); @@ -125,4 +128,4 @@ public class GitGcTaskTest verify(gcc).call(); } -} \ No newline at end of file +} diff --git a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/GitRepositoryHandlerTest.java b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/GitRepositoryHandlerTest.java index 47ca08b597..a9969f27f8 100644 --- a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/GitRepositoryHandlerTest.java +++ b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/GitRepositoryHandlerTest.java @@ -36,7 +36,7 @@ package sonia.scm.repository; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; import sonia.scm.io.DefaultFileSystem; import sonia.scm.schedule.Scheduler; import sonia.scm.store.ConfigurationStoreFactory; diff --git a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/api/GitHookBranchProviderTest.java b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/api/GitHookBranchProviderTest.java index 9e5e0eef36..7699f43686 100644 --- a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/api/GitHookBranchProviderTest.java +++ b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/api/GitHookBranchProviderTest.java @@ -43,7 +43,7 @@ import static org.hamcrest.Matchers.*; import org.junit.Before; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; /** * Unit tests for {@link GitHookBranchProvider}. @@ -112,4 +112,4 @@ public class GitHookBranchProviderTest { return new GitHookBranchProvider(commands); } -} \ No newline at end of file +} diff --git a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/api/GitHookTagProviderTest.java b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/api/GitHookTagProviderTest.java index 87e277b633..56939b29a7 100644 --- a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/api/GitHookTagProviderTest.java +++ b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/api/GitHookTagProviderTest.java @@ -42,7 +42,7 @@ import static org.hamcrest.Matchers.*; import org.junit.Before; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; import org.mockito.stubbing.OngoingStubbing; import sonia.scm.repository.Tag; @@ -127,4 +127,4 @@ public class GitHookTagProviderTest { return new GitHookTagProvider(commands); } -} \ No newline at end of file +} diff --git a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/web/GitPermissionFilterTest.java b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/web/GitPermissionFilterTest.java index df4827a9fc..fede8842a9 100644 --- a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/web/GitPermissionFilterTest.java +++ b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/web/GitPermissionFilterTest.java @@ -1,24 +1,26 @@ package sonia.scm.web; -import com.google.common.base.Charsets; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import javax.servlet.ServletOutputStream; import org.junit.Test; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import static org.hamcrest.Matchers.*; -import static org.junit.Assert.*; import org.junit.runner.RunWith; import org.mockito.Mock; -import static org.mockito.Mockito.*; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; import sonia.scm.config.ScmConfiguration; import sonia.scm.repository.RepositoryProvider; import sonia.scm.util.HttpUtil; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.ByteArrayOutputStream; +import java.io.IOException; + +import static org.hamcrest.Matchers.containsString; +import static org.hamcrest.Matchers.is; +import static org.junit.Assert.assertThat; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + /** * Unit tests for {@link GitPermissionFilter}. * @@ -69,7 +71,6 @@ public class GitPermissionFilterTest { when(mock.getMethod()).thenReturn(method); when(mock.getRequestURI()).thenReturn(requestURI); - when(mock.getContextPath()).thenReturn("/scm"); return mock; } diff --git a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/web/GitRepositoryResolverTest.java b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/web/GitRepositoryResolverTest.java index d41e0acafc..6eabd4f5b3 100644 --- a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/web/GitRepositoryResolverTest.java +++ b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/web/GitRepositoryResolverTest.java @@ -30,21 +30,24 @@ */ package sonia.scm.web; -import java.io.File; -import java.io.IOException; -import org.junit.Test; -import static org.junit.Assert.*; import org.junit.Before; import org.junit.Rule; +import org.junit.Test; import org.junit.rules.TemporaryFolder; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; -import static org.mockito.Mockito.*; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; import sonia.scm.repository.GitConfig; import sonia.scm.repository.GitRepositoryHandler; +import java.io.File; +import java.io.IOException; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + /** * Unit tests for {@link GitRepositoryResolver}. * @@ -70,8 +73,6 @@ public class GitRepositoryResolverTest { GitConfig config = new GitConfig(); config.setRepositoryDirectory(parentDirectory); - - when(handler.getConfig()).thenReturn(config); } @Test diff --git a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/web/lfs/LfsBlobStoreFactoryTest.java b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/web/lfs/LfsBlobStoreFactoryTest.java index fe48e403c5..991e2655f7 100644 --- a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/web/lfs/LfsBlobStoreFactoryTest.java +++ b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/web/lfs/LfsBlobStoreFactoryTest.java @@ -36,7 +36,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; import sonia.scm.repository.Repository; import sonia.scm.store.BlobStoreFactory; diff --git a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/web/lfs/LfsStoreRemoveListenerTest.java b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/web/lfs/LfsStoreRemoveListenerTest.java index 5a1bfdbf9a..34a1a3f4d5 100644 --- a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/web/lfs/LfsStoreRemoveListenerTest.java +++ b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/web/lfs/LfsStoreRemoveListenerTest.java @@ -39,7 +39,7 @@ import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; import static org.mockito.Mockito.*; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; import sonia.scm.HandlerEventType; import sonia.scm.repository.Repository; import sonia.scm.repository.RepositoryEvent; diff --git a/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/HgRepositoryHandlerTest.java b/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/HgRepositoryHandlerTest.java index bd14a63b56..10df3f5009 100644 --- a/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/HgRepositoryHandlerTest.java +++ b/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/HgRepositoryHandlerTest.java @@ -37,7 +37,7 @@ package sonia.scm.repository; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; import sonia.scm.io.DefaultFileSystem; import sonia.scm.store.ConfigurationStoreFactory; diff --git a/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/api/HgHookTagProviderTest.java b/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/api/HgHookTagProviderTest.java index 6d78d0eb3c..dc943d476a 100644 --- a/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/api/HgHookTagProviderTest.java +++ b/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/api/HgHookTagProviderTest.java @@ -41,7 +41,7 @@ import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Mockito; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; import sonia.scm.repository.Changeset; import sonia.scm.repository.Tag; import sonia.scm.repository.spi.HookChangesetProvider; @@ -101,4 +101,4 @@ public class HgHookTagProviderTest { HookChangesetResponse response = new HookChangesetResponse(list); when(changesetProvider.handleRequest(Mockito.any(HookChangesetRequest.class))).thenReturn(response); } -} \ No newline at end of file +} diff --git a/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/web/HgPermissionFilterTest.java b/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/web/HgPermissionFilterTest.java index 01e01cf302..5608bea6e8 100644 --- a/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/web/HgPermissionFilterTest.java +++ b/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/web/HgPermissionFilterTest.java @@ -39,7 +39,7 @@ import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; import static org.mockito.Mockito.*; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; import sonia.scm.config.ScmConfiguration; import sonia.scm.repository.RepositoryProvider; @@ -85,4 +85,4 @@ public class HgPermissionFilterTest { when(request.getMethod()).thenReturn(method); return filter.isWriteRequest(request); } -} \ No newline at end of file +} diff --git a/scm-plugins/scm-legacy-plugin/src/test/java/sonia/scm/legacy/LegacyRealmTest.java b/scm-plugins/scm-legacy-plugin/src/test/java/sonia/scm/legacy/LegacyRealmTest.java index 327f03a6e5..f163e8c9a0 100644 --- a/scm-plugins/scm-legacy-plugin/src/test/java/sonia/scm/legacy/LegacyRealmTest.java +++ b/scm-plugins/scm-legacy-plugin/src/test/java/sonia/scm/legacy/LegacyRealmTest.java @@ -45,7 +45,7 @@ import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; import sonia.scm.group.GroupDAO; import sonia.scm.security.BearerToken; diff --git a/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/SvnRepositoryHandlerTest.java b/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/SvnRepositoryHandlerTest.java index f2c53e413c..e5e9511872 100644 --- a/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/SvnRepositoryHandlerTest.java +++ b/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/SvnRepositoryHandlerTest.java @@ -35,7 +35,7 @@ package sonia.scm.repository; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; import sonia.scm.io.DefaultFileSystem; import sonia.scm.repository.api.HookContextFactory; import sonia.scm.repository.spi.HookEventFacade; diff --git a/scm-test/pom.xml b/scm-test/pom.xml index 9bc5019a1d..0da030652b 100644 --- a/scm-test/pom.xml +++ b/scm-test/pom.xml @@ -43,8 +43,9 @@ org.mockito - mockito-all + mockito-core compile + ${mockito.version} diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/BranchCollectionResource.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/BranchCollectionResource.java deleted file mode 100644 index d64016b475..0000000000 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/BranchCollectionResource.java +++ /dev/null @@ -1,18 +0,0 @@ -package sonia.scm.api.v2.resources; - -import javax.ws.rs.DefaultValue; -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.QueryParam; -import javax.ws.rs.core.Response; - -public class BranchCollectionResource { - @GET - @Path("") - public Response getAll(@DefaultValue("0") @QueryParam("page") int page, - @DefaultValue("10") @QueryParam("pageSize") int pageSize, - @QueryParam("sortBy") String sortBy, - @DefaultValue("false") @QueryParam("desc") boolean desc) { - throw new UnsupportedOperationException(); - } -} diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/BranchCollectionToDtoMapper.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/BranchCollectionToDtoMapper.java new file mode 100644 index 0000000000..9e574b3a7b --- /dev/null +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/BranchCollectionToDtoMapper.java @@ -0,0 +1,46 @@ +package sonia.scm.api.v2.resources; + +import com.google.inject.Inject; +import de.otto.edison.hal.Embedded; +import de.otto.edison.hal.HalRepresentation; +import de.otto.edison.hal.Links; +import sonia.scm.repository.Branch; +import sonia.scm.repository.NamespaceAndName; + +import java.util.Collection; +import java.util.List; + +import static de.otto.edison.hal.Embedded.embeddedBuilder; +import static de.otto.edison.hal.Links.linkingTo; +import static java.util.stream.Collectors.toList; + +public class BranchCollectionToDtoMapper { + + private final ResourceLinks resourceLinks; + private final BranchToBranchDtoMapper branchToDtoMapper; + + @Inject + public BranchCollectionToDtoMapper(BranchToBranchDtoMapper branchToDtoMapper, ResourceLinks resourceLinks) { + this.resourceLinks = resourceLinks; + this.branchToDtoMapper = branchToDtoMapper; + } + + public HalRepresentation map(String namespace, String name, Collection branches) { + List dtos = branches.stream().map(branch -> branchToDtoMapper.map(branch, new NamespaceAndName(namespace, name))).collect(toList()); + return new HalRepresentation(createLinks(namespace, name), embedDtos(dtos)); + } + + private Links createLinks(String namespace, String name) { + String baseUrl = resourceLinks.branchCollection().self(namespace, name); + + Links.Builder linksBuilder = linkingTo() + .with(Links.linkingTo().self(baseUrl).build()); + return linksBuilder.build(); + } + + private Embedded embedDtos(List dtos) { + return embeddedBuilder() + .with("branches", dtos) + .build(); + } +} diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/BranchDto.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/BranchDto.java new file mode 100644 index 0000000000..f5bdc850ab --- /dev/null +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/BranchDto.java @@ -0,0 +1,19 @@ +package sonia.scm.api.v2.resources; + +import de.otto.edison.hal.HalRepresentation; +import de.otto.edison.hal.Links; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter @Setter @NoArgsConstructor +public class BranchDto extends HalRepresentation { + + private String name; + private String revision; + + @Override + protected HalRepresentation add(Links links) { + return super.add(links); + } +} diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/BranchRootResource.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/BranchRootResource.java index ee50fdcd1e..b06b5b9eba 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/BranchRootResource.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/BranchRootResource.java @@ -1,20 +1,113 @@ package sonia.scm.api.v2.resources; +import com.webcohesion.enunciate.metadata.rs.ResponseCode; +import com.webcohesion.enunciate.metadata.rs.StatusCodes; +import com.webcohesion.enunciate.metadata.rs.TypeHint; +import sonia.scm.repository.Branches; +import sonia.scm.repository.NamespaceAndName; +import sonia.scm.repository.RepositoryException; +import sonia.scm.repository.RepositoryNotFoundException; +import sonia.scm.repository.api.CommandNotSupportedException; +import sonia.scm.repository.api.RepositoryService; +import sonia.scm.repository.api.RepositoryServiceFactory; +import sonia.scm.web.VndMediaType; + import javax.inject.Inject; -import javax.inject.Provider; +import javax.ws.rs.GET; import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.core.Response; +import java.io.IOException; public class BranchRootResource { - private final Provider branchCollectionResource; + private final RepositoryServiceFactory servicefactory; + private final BranchToBranchDtoMapper branchToDtoMapper; + private final BranchCollectionToDtoMapper branchCollectionToDtoMapper; @Inject - public BranchRootResource(Provider branchCollectionResource) { - this.branchCollectionResource = branchCollectionResource; + public BranchRootResource(RepositoryServiceFactory servicefactory, BranchToBranchDtoMapper branchToDtoMapper, BranchCollectionToDtoMapper branchCollectionToDtoMapper) { + this.servicefactory = servicefactory; + this.branchToDtoMapper = branchToDtoMapper; + this.branchCollectionToDtoMapper = branchCollectionToDtoMapper; } + /** + * Returns a branch for a repository. + * + * Note: This method requires "repository" privilege. + * + * @param namespace the namespace of the repository + * @param name the name of the repository + * @param branchName the name of the branch + * + */ + @GET + @Path("{branch}") + @Produces(VndMediaType.BRANCH) + @TypeHint(BranchDto.class) + @StatusCodes({ + @ResponseCode(code = 200, condition = "success"), + @ResponseCode(code = 400, condition = "branches not supported for given repository"), + @ResponseCode(code = 401, condition = "not authenticated / invalid credentials"), + @ResponseCode(code = 403, condition = "not authorized, the current user has no privileges to read the branch"), + @ResponseCode(code = 404, condition = "not found, no branch with the specified name for the repository available or repository not found"), + @ResponseCode(code = 500, condition = "internal server error") + }) + public Response get(@PathParam("namespace") String namespace, @PathParam("name") String name, @PathParam("branch") String branchName) throws IOException, RepositoryException { + try (RepositoryService repositoryService = servicefactory.create(new NamespaceAndName(namespace, name))) { + Branches branches = repositoryService.getBranchesCommand().getBranches(); + return branches.getBranches() + .stream() + .filter(branch -> branchName.equals(branch.getName())) + .findFirst() + .map(branch -> branchToDtoMapper.map(branch, new NamespaceAndName(namespace, name))) + .map(Response::ok) + .orElse(Response.status(Response.Status.NOT_FOUND)) + .build(); + } catch (CommandNotSupportedException ex) { + return Response.status(Response.Status.BAD_REQUEST).build(); + } catch (RepositoryNotFoundException e) { + return Response.status(Response.Status.NOT_FOUND).build(); + } + } + + @Path("{branch}/changesets/") + @GET + public Response history(@PathParam("namespace") String namespace, @PathParam("name") String name, @PathParam("branch") String branchName) { + throw new UnsupportedOperationException(); + } + + /** + * Returns the branches for a repository. + * + * Note: This method requires "repository" privilege. + * + * @param namespace the namespace of the repository + * @param name the name of the repository + * + */ + @GET @Path("") - public BranchCollectionResource getBranchCollectionResource() { - return branchCollectionResource.get(); + @Produces(VndMediaType.BRANCH_COLLECTION) + @TypeHint(CollectionDto.class) + @StatusCodes({ + @ResponseCode(code = 200, condition = "success"), + @ResponseCode(code = 400, condition = "branches not supported for given repository"), + @ResponseCode(code = 401, condition = "not authenticated / invalid credentials"), + @ResponseCode(code = 403, condition = "not authorized, the current user does not have the \"group\" privilege"), + @ResponseCode(code = 404, condition = "not found, no repository found for the given namespace and name"), + @ResponseCode(code = 500, condition = "internal server error") + }) + public Response getAll(@PathParam("namespace") String namespace, @PathParam("name") String name) throws IOException, RepositoryException { + try (RepositoryService repositoryService = servicefactory.create(new NamespaceAndName(namespace, name))) { + Branches branches = repositoryService.getBranchesCommand().getBranches(); + return Response.ok(branchCollectionToDtoMapper.map(namespace, name, branches.getBranches())).build(); + } catch (CommandNotSupportedException ex) { + return Response.status(Response.Status.BAD_REQUEST).build(); + } catch (RepositoryNotFoundException e) { + return Response.status(Response.Status.NOT_FOUND).build(); + } } } diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/BranchToBranchDtoMapper.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/BranchToBranchDtoMapper.java new file mode 100644 index 0000000000..8d616ffb77 --- /dev/null +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/BranchToBranchDtoMapper.java @@ -0,0 +1,35 @@ +package sonia.scm.api.v2.resources; + +import de.otto.edison.hal.Links; +import org.mapstruct.AfterMapping; +import org.mapstruct.Context; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingTarget; +import sonia.scm.repository.Branch; +import sonia.scm.repository.NamespaceAndName; + +import javax.inject.Inject; + +import static de.otto.edison.hal.Link.linkBuilder; +import static de.otto.edison.hal.Links.linkingTo; + +@Mapper +public abstract class BranchToBranchDtoMapper { + + @Inject + private ResourceLinks resourceLinks; + + @Mapping(target = "attributes", ignore = true) // We do not map HAL attributes + public abstract BranchDto map(Branch branch, @Context NamespaceAndName namespaceAndName); + + @AfterMapping + void appendLinks(@MappingTarget BranchDto target, @Context NamespaceAndName namespaceAndName) { + Links.Builder linksBuilder = linkingTo() + .self(resourceLinks.branch().self(namespaceAndName, target.getName())) + .single(linkBuilder("history", resourceLinks.branch().history(namespaceAndName, target.getName())).build()) + .single(linkBuilder("changeset", resourceLinks.changeset().changeset(namespaceAndName.getNamespace(), namespaceAndName.getName(), target.getRevision())).build()) + .single(linkBuilder("source", resourceLinks.source().source(namespaceAndName.getNamespace(), namespaceAndName.getName(), target.getRevision())).build()); + target.add(linksBuilder.build()); + } +} diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/ChangesetCollectionResource.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/ChangesetCollectionResource.java deleted file mode 100644 index d42494a270..0000000000 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/ChangesetCollectionResource.java +++ /dev/null @@ -1,18 +0,0 @@ -package sonia.scm.api.v2.resources; - -import javax.ws.rs.DefaultValue; -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.QueryParam; -import javax.ws.rs.core.Response; - -public class ChangesetCollectionResource { - @GET - @Path("") - public Response getAll(@DefaultValue("0") @QueryParam("page") int page, - @DefaultValue("10") @QueryParam("pageSize") int pageSize, - @QueryParam("sortBy") String sortBy, - @DefaultValue("false") @QueryParam("desc") boolean desc) { - throw new UnsupportedOperationException(); - } -} diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/ChangesetRootResource.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/ChangesetRootResource.java index 1681a27cd4..42ffbdd6c1 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/ChangesetRootResource.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/ChangesetRootResource.java @@ -1,20 +1,25 @@ package sonia.scm.api.v2.resources; -import javax.inject.Inject; -import javax.inject.Provider; +import javax.ws.rs.DefaultValue; +import javax.ws.rs.GET; import javax.ws.rs.Path; +import javax.ws.rs.QueryParam; +import javax.ws.rs.core.Response; public class ChangesetRootResource { - private final Provider changesetCollectionResource; - - @Inject - public ChangesetRootResource(Provider changesetCollectionResource) { - this.changesetCollectionResource = changesetCollectionResource; + @GET + @Path("") + public Response getAll(@DefaultValue("0") @QueryParam("page") int page, + @DefaultValue("10") @QueryParam("pageSize") int pageSize, + @QueryParam("sortBy") String sortBy, + @DefaultValue("false") @QueryParam("desc") boolean desc) { + throw new UnsupportedOperationException(); } - @Path("") - public ChangesetCollectionResource getChangesetCollectionResource() { - return changesetCollectionResource.get(); + @GET + @Path("{revision}") + public Response get() { + throw new UnsupportedOperationException(); } } diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/MapperModule.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/MapperModule.java index 3ee508db89..0ac6929689 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/MapperModule.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/MapperModule.java @@ -24,6 +24,8 @@ public class MapperModule extends AbstractModule { bind(RepositoryTypeToRepositoryTypeDtoMapper.class).to(Mappers.getMapper(RepositoryTypeToRepositoryTypeDtoMapper.class).getClass()); bind(RepositoryTypeCollectionToDtoMapper.class); + bind(BranchToBranchDtoMapper.class).to(Mappers.getMapper(BranchToBranchDtoMapper.class).getClass()); + bind(UriInfoStore.class).in(ServletScopes.REQUEST); } } diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryResource.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryResource.java index 2c227f78f2..43aa6de608 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryResource.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryResource.java @@ -137,7 +137,7 @@ public class RepositoryResource { } @Path("branches/") - public BranchRootResource branches() { + public BranchRootResource branches(@PathParam("namespace") String namespace, @PathParam("name") String name) { return branchRootResource.get(); } diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryToRepositoryDtoMapper.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryToRepositoryDtoMapper.java index cb89f0ea63..ca30a09286 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryToRepositoryDtoMapper.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryToRepositoryDtoMapper.java @@ -35,8 +35,8 @@ public abstract class RepositoryToRepositoryDtoMapper extends BaseMapper sourceCollectionResource; - - @Inject - public SourceRootResource(Provider sourceCollectionResource) { - this.sourceCollectionResource = sourceCollectionResource; + @GET + @Path("") + public Response getAll(@DefaultValue("0") @QueryParam("page") int page, + @DefaultValue("10") @QueryParam("pageSize") int pageSize, + @QueryParam("sortBy") String sortBy, + @DefaultValue("false") @QueryParam("desc") boolean desc) { + throw new UnsupportedOperationException(); } - @Path("") - public SourceCollectionResource getSourceCollectionResource() { - return sourceCollectionResource.get(); + @GET + @Path("{revision}") + public Response get() { + throw new UnsupportedOperationException(); } } diff --git a/scm-webapp/src/test/java/sonia/scm/api/rest/resources/AbstractManagerResourceTest.java b/scm-webapp/src/test/java/sonia/scm/api/rest/resources/AbstractManagerResourceTest.java index b3e931188a..a98d18b390 100644 --- a/scm-webapp/src/test/java/sonia/scm/api/rest/resources/AbstractManagerResourceTest.java +++ b/scm-webapp/src/test/java/sonia/scm/api/rest/resources/AbstractManagerResourceTest.java @@ -6,7 +6,7 @@ import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.Captor; import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; import sonia.scm.Manager; import sonia.scm.ModelObject; diff --git a/scm-webapp/src/test/java/sonia/scm/api/v2/FieldContainerResponseFilterTest.java b/scm-webapp/src/test/java/sonia/scm/api/v2/FieldContainerResponseFilterTest.java index 9eb8192b88..960b995eda 100644 --- a/scm-webapp/src/test/java/sonia/scm/api/v2/FieldContainerResponseFilterTest.java +++ b/scm-webapp/src/test/java/sonia/scm/api/v2/FieldContainerResponseFilterTest.java @@ -7,7 +7,7 @@ import com.google.common.io.Resources; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; import javax.ws.rs.container.ContainerRequestContext; import javax.ws.rs.container.ContainerResponseContext; @@ -100,7 +100,6 @@ public class FieldContainerResponseFilterTest { private JsonNode applyEntity(String name) throws IOException { JsonNode node = readJson(name); - when(responseContext.hasEntity()).thenReturn(Boolean.TRUE); when(responseContext.getEntity()).thenReturn(node); return node; } diff --git a/scm-webapp/src/test/java/sonia/scm/api/v2/JsonMarshallingResponseFilterTest.java b/scm-webapp/src/test/java/sonia/scm/api/v2/JsonMarshallingResponseFilterTest.java index ea71449a28..6d10e023ad 100644 --- a/scm-webapp/src/test/java/sonia/scm/api/v2/JsonMarshallingResponseFilterTest.java +++ b/scm-webapp/src/test/java/sonia/scm/api/v2/JsonMarshallingResponseFilterTest.java @@ -10,7 +10,7 @@ import org.mockito.ArgumentCaptor; import org.mockito.Captor; import org.mockito.Mock; import org.mockito.Mockito; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; import sonia.scm.web.JsonEnricher; import sonia.scm.web.VndMediaType; @@ -114,7 +114,6 @@ public class JsonMarshallingResponseFilterTest { @Test public void testFilterWithNonVndEntity() { when(responseContext.hasEntity()).thenReturn(Boolean.TRUE); - when(responseContext.getEntity()).thenReturn(new JsonMarshallingResponseFilterTest.Sample("one-two-three")); when(responseContext.getMediaType()).thenReturn(MediaType.APPLICATION_JSON_TYPE); filter.filter(requestContext, responseContext); diff --git a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/AuthenticationResourceTest.java b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/AuthenticationResourceTest.java index 67eb935670..9eea189b72 100644 --- a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/AuthenticationResourceTest.java +++ b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/AuthenticationResourceTest.java @@ -14,7 +14,7 @@ import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.InjectMocks; import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; import sonia.scm.config.ScmConfiguration; import sonia.scm.security.AccessToken; import sonia.scm.security.AccessTokenBuilder; diff --git a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/BranchRootResourceTest.java b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/BranchRootResourceTest.java new file mode 100644 index 0000000000..711a5cf196 --- /dev/null +++ b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/BranchRootResourceTest.java @@ -0,0 +1,80 @@ +package sonia.scm.api.v2.resources; + +import org.jboss.resteasy.core.Dispatcher; +import org.jboss.resteasy.mock.MockDispatcherFactory; +import org.jboss.resteasy.mock.MockHttpRequest; +import org.jboss.resteasy.mock.MockHttpResponse; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.MockitoJUnitRunner; +import sonia.scm.repository.Branch; +import sonia.scm.repository.Branches; +import sonia.scm.repository.NamespaceAndName; +import sonia.scm.repository.api.BranchesCommandBuilder; +import sonia.scm.repository.api.RepositoryService; +import sonia.scm.repository.api.RepositoryServiceFactory; + +import java.net.URI; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.when; + +@RunWith(MockitoJUnitRunner.Silent.class) +public class BranchRootResourceTest { + + private final Dispatcher dispatcher = MockDispatcherFactory.createDispatcher(); + + private final URI baseUri = URI.create("/"); + private final ResourceLinks resourceLinks = ResourceLinksMock.createMock(baseUri); + + @Mock + private RepositoryServiceFactory serviceFactory; + @Mock + private RepositoryService service; + @Mock + private BranchesCommandBuilder branchesCommandBuilder; + + @InjectMocks + private BranchToBranchDtoMapperImpl branchToDtoMapper; + + @Before + public void prepareEnvironment() throws Exception { + BranchCollectionToDtoMapper branchCollectionToDtoMapper = new BranchCollectionToDtoMapper(branchToDtoMapper, resourceLinks); + BranchRootResource branchRootResource = new BranchRootResource(serviceFactory, branchToDtoMapper, branchCollectionToDtoMapper); + RepositoryRootResource repositoryRootResource = new RepositoryRootResource(MockProvider.of(new RepositoryResource(null, null, null, null, MockProvider.of(branchRootResource), null, null, null)), null); + dispatcher.getRegistry().addSingletonResource(repositoryRootResource); + + when(serviceFactory.create(new NamespaceAndName("space", "repo"))).thenReturn(service); + when(service.getBranchesCommand()).thenReturn(branchesCommandBuilder); + } + + @Test + public void shouldHandleMissingBranch() throws Exception { + when(branchesCommandBuilder.getBranches()).thenReturn(new Branches()); + + MockHttpRequest request = MockHttpRequest.get("/" + RepositoryRootResource.REPOSITORIES_PATH_V2 + "space/repo/branches/master"); + MockHttpResponse response = new MockHttpResponse(); + + dispatcher.invoke(request, response); + + assertEquals(404, response.getStatus()); + } + + @Test + public void shouldFindExistingBranch() throws Exception { + when(branchesCommandBuilder.getBranches()).thenReturn(new Branches(new Branch("master", "revision"))); + + MockHttpRequest request = MockHttpRequest.get("/" + RepositoryRootResource.REPOSITORIES_PATH_V2 + "space/repo/branches/master"); + MockHttpResponse response = new MockHttpResponse(); + + dispatcher.invoke(request, response); + + assertEquals(200, response.getStatus()); + System.out.println(response.getContentAsString()); + assertTrue(response.getContentAsString().contains("\"revision\":\"revision\"")); + } +} diff --git a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/RepositoryTypeCollectionToDtoMapperTest.java b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/RepositoryTypeCollectionToDtoMapperTest.java index dbd46ec5f9..cfa90c9363 100644 --- a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/RepositoryTypeCollectionToDtoMapperTest.java +++ b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/RepositoryTypeCollectionToDtoMapperTest.java @@ -9,7 +9,7 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; import sonia.scm.repository.RepositoryType; import java.net.URI; @@ -18,7 +18,7 @@ import java.util.Optional; import static org.junit.Assert.*; -@RunWith(MockitoJUnitRunner.class) +@RunWith(MockitoJUnitRunner.Silent.class) public class RepositoryTypeCollectionToDtoMapperTest { private final URI baseUri = URI.create("https://scm-manager.org/scm/"); diff --git a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/RepositoryTypeRootResourceTest.java b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/RepositoryTypeRootResourceTest.java index 0dfb6bf92c..9adca13225 100644 --- a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/RepositoryTypeRootResourceTest.java +++ b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/RepositoryTypeRootResourceTest.java @@ -11,7 +11,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; import sonia.scm.repository.RepositoryManager; import sonia.scm.repository.RepositoryType; import sonia.scm.web.VndMediaType; @@ -26,7 +26,7 @@ import static org.junit.Assert.*; import static org.hamcrest.Matchers.*; import static org.mockito.Mockito.when; -@RunWith(MockitoJUnitRunner.class) +@RunWith(MockitoJUnitRunner.Silent.class) public class RepositoryTypeRootResourceTest { private final Dispatcher dispatcher = MockDispatcherFactory.createDispatcher(); @@ -69,7 +69,7 @@ public class RepositoryTypeRootResourceTest { } @Test - public void shouldHaveCollectionSelfLink() throws URISyntaxException { + public void shouldHaveCollectionSelfLink() throws Exception { String uri = "/" + RepositoryTypeRootResource.PATH; MockHttpRequest request = MockHttpRequest.get(uri); MockHttpResponse response = new MockHttpResponse(); @@ -81,7 +81,7 @@ public class RepositoryTypeRootResourceTest { } @Test - public void shouldHaveEmbeddedRepositoryTypes() throws URISyntaxException { + public void shouldHaveEmbeddedRepositoryTypes() throws Exception { MockHttpRequest request = MockHttpRequest.get("/" + RepositoryTypeRootResource.PATH); MockHttpResponse response = new MockHttpResponse(); @@ -105,7 +105,7 @@ public class RepositoryTypeRootResourceTest { } @Test - public void shouldContainAttributes() throws URISyntaxException { + public void shouldContainAttributes() throws Exception { String uri = "/" + RepositoryTypeRootResource.PATH + "hk"; MockHttpRequest request = MockHttpRequest.get(uri); MockHttpResponse response = new MockHttpResponse(); @@ -118,7 +118,7 @@ public class RepositoryTypeRootResourceTest { } @Test - public void shouldHaveSelfLink() throws URISyntaxException { + public void shouldHaveSelfLink() throws Exception { String uri = "/" + RepositoryTypeRootResource.PATH + "hk"; MockHttpRequest request = MockHttpRequest.get(uri); MockHttpResponse response = new MockHttpResponse(); diff --git a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/RepositoryTypeToRepositoryTypeDtoMapperTest.java b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/RepositoryTypeToRepositoryTypeDtoMapperTest.java index 73f0a5672c..fc92d87a4c 100644 --- a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/RepositoryTypeToRepositoryTypeDtoMapperTest.java +++ b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/RepositoryTypeToRepositoryTypeDtoMapperTest.java @@ -4,14 +4,14 @@ import com.google.common.collect.Sets; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; import sonia.scm.repository.RepositoryType; import java.net.URI; import static org.junit.Assert.assertEquals; -@RunWith(MockitoJUnitRunner.class) +@RunWith(MockitoJUnitRunner.Silent.class) public class RepositoryTypeToRepositoryTypeDtoMapperTest { private final URI baseUri = URI.create("https://scm-manager.org/scm/"); diff --git a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/ResourceLinksMock.java b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/ResourceLinksMock.java index 18cda7deed..882d754329 100644 --- a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/ResourceLinksMock.java +++ b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/ResourceLinksMock.java @@ -21,10 +21,11 @@ public class ResourceLinksMock { when(resourceLinks.repositoryCollection()).thenReturn(new ResourceLinks.RepositoryCollectionLinks(uriInfo)); when(resourceLinks.tagCollection()).thenReturn(new ResourceLinks.TagCollectionLinks(uriInfo)); when(resourceLinks.branchCollection()).thenReturn(new ResourceLinks.BranchCollectionLinks(uriInfo)); - when(resourceLinks.changesetCollection()).thenReturn(new ResourceLinks.ChangesetCollectionLinks(uriInfo)); - when(resourceLinks.sourceCollection()).thenReturn(new ResourceLinks.SourceCollectionLinks(uriInfo)); + when(resourceLinks.changeset()).thenReturn(new ResourceLinks.ChangesetLinks(uriInfo)); + when(resourceLinks.source()).thenReturn(new ResourceLinks.SourceLinks(uriInfo)); when(resourceLinks.permissionCollection()).thenReturn(new ResourceLinks.PermissionCollectionLinks(uriInfo)); when(resourceLinks.config()).thenReturn(new ResourceLinks.ConfigLinks(uriInfo)); + when(resourceLinks.branch()).thenReturn(new ResourceLinks.BranchLinks(uriInfo)); when(resourceLinks.repositoryType()).thenReturn(new ResourceLinks.RepositoryTypeLinks(uriInfo)); when(resourceLinks.repositoryTypeCollection()).thenReturn(new ResourceLinks.RepositoryTypeCollectionLinks(uriInfo)); diff --git a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/ResourceLinksTest.java b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/ResourceLinksTest.java index b850a4b4c6..000e628f26 100644 --- a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/ResourceLinksTest.java +++ b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/ResourceLinksTest.java @@ -4,6 +4,7 @@ import org.junit.Before; import org.junit.Test; import org.mockito.InjectMocks; import org.mockito.Mock; +import sonia.scm.repository.NamespaceAndName; import javax.ws.rs.core.UriInfo; import java.net.URI; @@ -114,21 +115,45 @@ public class ResourceLinksTest { assertEquals(BASE_URL + RepositoryRootResource.REPOSITORIES_PATH_V2 + "space/repo/branches/", url); } + @Test + public void shouldCreateCorrectBranchUrl() { + String url = resourceLinks.branch().self(new NamespaceAndName("space", "name"), "master"); + assertEquals(BASE_URL + RepositoryRootResource.REPOSITORIES_PATH_V2 + "space/name/branches/master", url); + } + + @Test + public void shouldCreateCorrectBranchHiostoryUrl() { + String url = resourceLinks.branch().history(new NamespaceAndName("space", "name"), "master"); + assertEquals(BASE_URL + RepositoryRootResource.REPOSITORIES_PATH_V2 + "space/name/branches/master/changesets/", url); + } + + @Test + public void shouldCreateCorrectBranchChangesetUrl() { + String url = resourceLinks.changeset().changeset("space", "name", "revision"); + assertEquals(BASE_URL + RepositoryRootResource.REPOSITORIES_PATH_V2 + "space/name/changesets/revision", url); + } + + @Test + public void shouldCreateCorrectBranchSourceUrl() { + String url = resourceLinks.source().source("space", "name", "revision"); + assertEquals(BASE_URL + RepositoryRootResource.REPOSITORIES_PATH_V2 + "space/name/sources/revision", url); + } + @Test public void shouldCreateCorrectChangesetCollectionUrl() { - String url = resourceLinks.changesetCollection().self("space", "repo"); + String url = resourceLinks.changeset().self("space", "repo"); assertEquals(BASE_URL + RepositoryRootResource.REPOSITORIES_PATH_V2 + "space/repo/changesets/", url); } @Test public void shouldCreateCorrectSourceCollectionUrl() { - String url = resourceLinks.sourceCollection().self("space", "repo"); + String url = resourceLinks.source().self("space", "repo"); assertEquals(BASE_URL + RepositoryRootResource.REPOSITORIES_PATH_V2 + "space/repo/sources/", url); } @Test public void shouldCreateCorrectPermissionCollectionUrl() { - String url = resourceLinks.sourceCollection().self("space", "repo"); + String url = resourceLinks.source().self("space", "repo"); assertEquals(BASE_URL + RepositoryRootResource.REPOSITORIES_PATH_V2 + "space/repo/sources/", url); } diff --git a/scm-webapp/src/test/java/sonia/scm/filter/AdminSecurityFilterTest.java b/scm-webapp/src/test/java/sonia/scm/filter/AdminSecurityFilterTest.java index b6a9c02a8d..b1d7f54ec9 100644 --- a/scm-webapp/src/test/java/sonia/scm/filter/AdminSecurityFilterTest.java +++ b/scm-webapp/src/test/java/sonia/scm/filter/AdminSecurityFilterTest.java @@ -39,7 +39,7 @@ import static org.junit.Assert.*; import org.junit.Before; import org.junit.Rule; import org.junit.runner.RunWith; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; import sonia.scm.config.ScmConfiguration; /** @@ -82,4 +82,4 @@ public class AdminSecurityFilterTest { assertFalse(securityFilter.hasPermission(SecurityUtils.getSubject())); } -} \ No newline at end of file +} diff --git a/scm-webapp/src/test/java/sonia/scm/filter/MDCFilterTest.java b/scm-webapp/src/test/java/sonia/scm/filter/MDCFilterTest.java index 010c9bc1cf..ac1b7335fc 100644 --- a/scm-webapp/src/test/java/sonia/scm/filter/MDCFilterTest.java +++ b/scm-webapp/src/test/java/sonia/scm/filter/MDCFilterTest.java @@ -33,30 +33,33 @@ package sonia.scm.filter; import com.github.sdorra.shiro.ShiroRule; import com.github.sdorra.shiro.SubjectAware; -import java.io.IOException; -import java.util.Map; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.junit.MockitoJUnitRunner; +import org.slf4j.MDC; +import sonia.scm.AbstractTestBase; + import javax.servlet.FilterChain; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import org.junit.Test; -import static org.junit.Assert.*; -import static org.mockito.Mockito.*; -import org.junit.Rule; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; -import org.slf4j.MDC; -import sonia.scm.AbstractTestBase; +import java.io.IOException; +import java.util.Map; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.mockito.Mockito.when; /** * Unit tests for {@link MDCFilter}. * * @author Sebastian Sdorra */ -@RunWith(MockitoJUnitRunner.class) +@RunWith(MockitoJUnitRunner.Silent.class) public class MDCFilterTest extends AbstractTestBase { @Rule @@ -127,4 +130,4 @@ public class MDCFilterTest extends AbstractTestBase { } -} \ No newline at end of file +} diff --git a/scm-webapp/src/test/java/sonia/scm/filter/SecurityFilterTest.java b/scm-webapp/src/test/java/sonia/scm/filter/SecurityFilterTest.java index 983f8d964a..fd217fd178 100644 --- a/scm-webapp/src/test/java/sonia/scm/filter/SecurityFilterTest.java +++ b/scm-webapp/src/test/java/sonia/scm/filter/SecurityFilterTest.java @@ -51,7 +51,7 @@ import org.mockito.Captor; import org.mockito.Mock; import org.mockito.Mockito; import static org.mockito.Mockito.*; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; import sonia.scm.SCMContext; import sonia.scm.config.ScmConfiguration; import sonia.scm.user.User; diff --git a/scm-webapp/src/test/java/sonia/scm/net/ahc/DefaultAdvancedHttpClientTest.java b/scm-webapp/src/test/java/sonia/scm/net/ahc/DefaultAdvancedHttpClientTest.java index faac9a99e5..70faa4a869 100644 --- a/scm-webapp/src/test/java/sonia/scm/net/ahc/DefaultAdvancedHttpClientTest.java +++ b/scm-webapp/src/test/java/sonia/scm/net/ahc/DefaultAdvancedHttpClientTest.java @@ -40,7 +40,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; import sonia.scm.config.ScmConfiguration; import sonia.scm.net.TrustAllHostnameVerifier; diff --git a/scm-webapp/src/test/java/sonia/scm/net/ahc/DefaultAdvancedHttpResponseTest.java b/scm-webapp/src/test/java/sonia/scm/net/ahc/DefaultAdvancedHttpResponseTest.java index 8f5a7c23b7..a60c884b64 100644 --- a/scm-webapp/src/test/java/sonia/scm/net/ahc/DefaultAdvancedHttpResponseTest.java +++ b/scm-webapp/src/test/java/sonia/scm/net/ahc/DefaultAdvancedHttpResponseTest.java @@ -45,7 +45,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; import sonia.scm.config.ScmConfiguration; diff --git a/scm-webapp/src/test/java/sonia/scm/plugin/DefaultUberWebResourceLoaderTest.java b/scm-webapp/src/test/java/sonia/scm/plugin/DefaultUberWebResourceLoaderTest.java index 19db037a9a..4afdcb2bd6 100644 --- a/scm-webapp/src/test/java/sonia/scm/plugin/DefaultUberWebResourceLoaderTest.java +++ b/scm-webapp/src/test/java/sonia/scm/plugin/DefaultUberWebResourceLoaderTest.java @@ -36,34 +36,28 @@ package sonia.scm.plugin; //~--- non-JDK imports -------------------------------------------------------- import com.google.common.collect.Lists; - import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; - import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; - -import static org.hamcrest.Matchers.*; - -import static org.junit.Assert.*; - -import static org.mockito.Mockito.*; - -//~--- JDK imports ------------------------------------------------------------ +import org.mockito.junit.MockitoJUnitRunner; +import javax.servlet.ServletContext; import java.io.File; import java.io.IOException; - import java.net.MalformedURLException; import java.net.URL; - import java.nio.file.Path; - import java.util.ArrayList; import java.util.List; -import javax.servlet.ServletContext; +import static org.hamcrest.Matchers.containsInAnyOrder; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertSame; +import static org.junit.Assert.assertThat; +import static org.mockito.Mockito.when; + +//~--- JDK imports ------------------------------------------------------------ /** * @@ -107,8 +101,6 @@ public class DefaultUberWebResourceLoaderTest extends WebResourceLoaderTestBase @Test public void testGetResourceFromCache() throws MalformedURLException { - when(servletContext.getResource("/myresource")).thenReturn(SCM_MANAGER); - DefaultUberWebResourceLoader resourceLoader = new DefaultUberWebResourceLoader(servletContext, new ArrayList()); diff --git a/scm-webapp/src/test/java/sonia/scm/plugin/MultiParentClassLoaderTest.java b/scm-webapp/src/test/java/sonia/scm/plugin/MultiParentClassLoaderTest.java index 89e5e8a2c8..ae65f5c1ae 100644 --- a/scm-webapp/src/test/java/sonia/scm/plugin/MultiParentClassLoaderTest.java +++ b/scm-webapp/src/test/java/sonia/scm/plugin/MultiParentClassLoaderTest.java @@ -48,7 +48,7 @@ import org.mockito.Mock; import static org.mockito.Mockito.*; import static org.hamcrest.Matchers.*; import org.mockito.invocation.InvocationOnMock; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; import org.mockito.stubbing.Answer; /** diff --git a/scm-webapp/src/test/java/sonia/scm/repository/DefaultRepositoryManagerPerfTest.java b/scm-webapp/src/test/java/sonia/scm/repository/DefaultRepositoryManagerPerfTest.java index 15c54ccb71..5f4ea2fa72 100644 --- a/scm-webapp/src/test/java/sonia/scm/repository/DefaultRepositoryManagerPerfTest.java +++ b/scm-webapp/src/test/java/sonia/scm/repository/DefaultRepositoryManagerPerfTest.java @@ -52,7 +52,7 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; import sonia.scm.SCMContextProvider; import sonia.scm.Type; import sonia.scm.cache.GuavaCacheManager; diff --git a/scm-webapp/src/test/java/sonia/scm/resources/AbstractResourceManagerTest.java b/scm-webapp/src/test/java/sonia/scm/resources/AbstractResourceManagerTest.java index 184831f15a..1e75049178 100644 --- a/scm-webapp/src/test/java/sonia/scm/resources/AbstractResourceManagerTest.java +++ b/scm-webapp/src/test/java/sonia/scm/resources/AbstractResourceManagerTest.java @@ -41,7 +41,7 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import static org.hamcrest.Matchers.*; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; import sonia.scm.plugin.PluginLoader; /** diff --git a/scm-webapp/src/test/java/sonia/scm/resources/DefaultResourceManagerTest.java b/scm-webapp/src/test/java/sonia/scm/resources/DefaultResourceManagerTest.java index a082656016..489ac9f13d 100644 --- a/scm-webapp/src/test/java/sonia/scm/resources/DefaultResourceManagerTest.java +++ b/scm-webapp/src/test/java/sonia/scm/resources/DefaultResourceManagerTest.java @@ -32,21 +32,23 @@ package sonia.scm.resources; import com.google.common.collect.ImmutableSet; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.junit.MockitoJUnitRunner; + import java.io.IOException; import java.util.List; import java.util.Set; -import org.junit.Test; -import static org.junit.Assert.*; -import org.junit.Before; -import org.junit.runner.RunWith; -import org.mockito.runners.MockitoJUnitRunner; + +import static org.junit.Assert.assertEquals; /** * Unit tests for {@link DefaultResourceManager}. * * @author Sebastian Sdorra */ -@RunWith(MockitoJUnitRunner.class) +@RunWith(MockitoJUnitRunner.Silent.class) public class DefaultResourceManagerTest extends ResourceManagerTestBase { private DefaultResourceManager resourceManager; @@ -73,4 +75,4 @@ public class DefaultResourceManagerTest extends ResourceManagerTestBase { assertEquals(1, resources.size()); } -} \ No newline at end of file +} diff --git a/scm-webapp/src/test/java/sonia/scm/schedule/InjectionEnabledJobTest.java b/scm-webapp/src/test/java/sonia/scm/schedule/InjectionEnabledJobTest.java index 9545577c9f..88516d761c 100644 --- a/scm-webapp/src/test/java/sonia/scm/schedule/InjectionEnabledJobTest.java +++ b/scm-webapp/src/test/java/sonia/scm/schedule/InjectionEnabledJobTest.java @@ -40,7 +40,7 @@ import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.Mockito; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; import org.quartz.JobDataMap; import org.quartz.JobDetail; import org.quartz.JobExecutionContext; @@ -165,4 +165,4 @@ public class InjectionEnabledJobTest { verify(context).runAsAdmin(Mockito.any(PrivilegedAction.class)); } -} \ No newline at end of file +} diff --git a/scm-webapp/src/test/java/sonia/scm/schedule/QuartzSchedulerTest.java b/scm-webapp/src/test/java/sonia/scm/schedule/QuartzSchedulerTest.java index 1eca40dede..cd272ee7ba 100644 --- a/scm-webapp/src/test/java/sonia/scm/schedule/QuartzSchedulerTest.java +++ b/scm-webapp/src/test/java/sonia/scm/schedule/QuartzSchedulerTest.java @@ -42,7 +42,7 @@ import org.junit.Before; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; import org.quartz.CronTrigger; import org.quartz.JobDetail; import org.quartz.SchedulerException; @@ -219,4 +219,4 @@ public class QuartzSchedulerTest { } } -} \ No newline at end of file +} diff --git a/scm-webapp/src/test/java/sonia/scm/schedule/QuartzTaskTest.java b/scm-webapp/src/test/java/sonia/scm/schedule/QuartzTaskTest.java index 3318a41d18..efaeb702fe 100644 --- a/scm-webapp/src/test/java/sonia/scm/schedule/QuartzTaskTest.java +++ b/scm-webapp/src/test/java/sonia/scm/schedule/QuartzTaskTest.java @@ -39,7 +39,7 @@ import org.junit.Before; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; import org.quartz.JobKey; import org.quartz.SchedulerException; @@ -87,4 +87,4 @@ public class QuartzTaskTest { task.cancel(); } -} \ No newline at end of file +} diff --git a/scm-webapp/src/test/java/sonia/scm/security/BearerRealmTest.java b/scm-webapp/src/test/java/sonia/scm/security/BearerRealmTest.java index 9f54eb6518..e6061e61a1 100644 --- a/scm-webapp/src/test/java/sonia/scm/security/BearerRealmTest.java +++ b/scm-webapp/src/test/java/sonia/scm/security/BearerRealmTest.java @@ -41,41 +41,36 @@ import io.jsonwebtoken.Claims; import io.jsonwebtoken.JwsHeader; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; - import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.AuthenticationInfo; import org.apache.shiro.authc.UsernamePasswordToken; import org.apache.shiro.subject.PrincipalCollection; - +import org.hamcrest.Matchers; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; - +import org.mockito.InjectMocks; import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; - +import org.mockito.Mockito; +import org.mockito.junit.MockitoJUnitRunner; import sonia.scm.group.GroupDAO; import sonia.scm.user.User; import sonia.scm.user.UserDAO; import sonia.scm.user.UserTestData; -import static org.junit.Assert.*; - -import static org.mockito.Mockito.*; - -//~--- JDK imports ------------------------------------------------------------ - +import javax.crypto.spec.SecretKeySpec; import java.security.SecureRandom; - import java.util.Date; import java.util.Set; -import javax.crypto.spec.SecretKeySpec; -import org.hamcrest.Matchers; -import org.junit.Rule; -import org.junit.rules.ExpectedException; -import org.mockito.InjectMocks; -import org.mockito.Mockito; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertThat; +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.any; +import static org.mockito.Mockito.when; /** * Unit tests for {@link BearerRealm}. @@ -156,7 +151,6 @@ public class BearerRealmTest { SecureKey key = createSecureKey(); User marvin = UserTestData.createMarvin(); - when(userDAO.get(marvin.getName())).thenReturn(marvin); resolveKey(key); @@ -182,8 +176,6 @@ public class BearerRealmTest { User trillian = UserTestData.createTrillian(); - when(userDAO.get(trillian.getName())).thenReturn(trillian); - SecureKey key = createSecureKey(); resolveKey(key); @@ -216,10 +208,6 @@ public class BearerRealmTest @Test(expected = AuthenticationException.class) public void testDoGetAuthenticationInfoWithoutSignature() { - User trillian = UserTestData.createTrillian(); - - when(userDAO.get(trillian.getName())).thenReturn(trillian); - String compact = Jwts.builder().setSubject("test").compact(); realm.doGetAuthenticationInfo(BearerToken.valueOf(compact)); diff --git a/scm-webapp/src/test/java/sonia/scm/security/DefaultAuthorizationCollectorTest.java b/scm-webapp/src/test/java/sonia/scm/security/DefaultAuthorizationCollectorTest.java index 8dd6ed0d53..2b157c4dab 100644 --- a/scm-webapp/src/test/java/sonia/scm/security/DefaultAuthorizationCollectorTest.java +++ b/scm-webapp/src/test/java/sonia/scm/security/DefaultAuthorizationCollectorTest.java @@ -49,7 +49,7 @@ import static org.mockito.Mockito.*; import static org.hamcrest.Matchers.*; import static org.junit.Assert.*; import org.junit.Rule; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; import sonia.scm.cache.Cache; import sonia.scm.cache.CacheManager; import sonia.scm.group.GroupNames; diff --git a/scm-webapp/src/test/java/sonia/scm/security/DefaultRealmTest.java b/scm-webapp/src/test/java/sonia/scm/security/DefaultRealmTest.java index baa3de2f56..02b1a6ed1b 100644 --- a/scm-webapp/src/test/java/sonia/scm/security/DefaultRealmTest.java +++ b/scm-webapp/src/test/java/sonia/scm/security/DefaultRealmTest.java @@ -54,7 +54,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; import sonia.scm.group.Group; import sonia.scm.group.GroupDAO; diff --git a/scm-webapp/src/test/java/sonia/scm/security/JwtAccessTokenBuilderTest.java b/scm-webapp/src/test/java/sonia/scm/security/JwtAccessTokenBuilderTest.java index f8a07eae83..72aa98091b 100644 --- a/scm-webapp/src/test/java/sonia/scm/security/JwtAccessTokenBuilderTest.java +++ b/scm-webapp/src/test/java/sonia/scm/security/JwtAccessTokenBuilderTest.java @@ -47,7 +47,7 @@ import org.junit.Rule; import org.junit.runner.RunWith; import org.mockito.Mock; import static org.mockito.Mockito.*; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; /** * Unit test for {@link JwtAccessTokenBuilder}. @@ -157,4 +157,4 @@ public class JwtAccessTokenBuilderTest { return new SecureKey(bytes, System.currentTimeMillis()); } -} \ No newline at end of file +} diff --git a/scm-webapp/src/test/java/sonia/scm/security/JwtAccessTokenResolverTest.java b/scm-webapp/src/test/java/sonia/scm/security/JwtAccessTokenResolverTest.java index b7fd897559..689fc4bb35 100644 --- a/scm-webapp/src/test/java/sonia/scm/security/JwtAccessTokenResolverTest.java +++ b/scm-webapp/src/test/java/sonia/scm/security/JwtAccessTokenResolverTest.java @@ -56,7 +56,7 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.Mockito; import static org.mockito.Mockito.*; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; /** * Unit tests for {@link JwtAccessTokenResolver}. @@ -236,4 +236,4 @@ public class JwtAccessTokenResolverTest { } -} \ No newline at end of file +} diff --git a/scm-webapp/src/test/java/sonia/scm/security/SecureKeyResolverTest.java b/scm-webapp/src/test/java/sonia/scm/security/SecureKeyResolverTest.java index e3bacb4abc..8d708c4677 100644 --- a/scm-webapp/src/test/java/sonia/scm/security/SecureKeyResolverTest.java +++ b/scm-webapp/src/test/java/sonia/scm/security/SecureKeyResolverTest.java @@ -42,7 +42,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; import sonia.scm.store.ConfigurationEntryStore; import sonia.scm.store.ConfigurationEntryStoreFactory; diff --git a/scm-webapp/src/test/java/sonia/scm/security/SecurityRequestsTest.java b/scm-webapp/src/test/java/sonia/scm/security/SecurityRequestsTest.java index 9e6d54dc0b..d9d0e52a0c 100644 --- a/scm-webapp/src/test/java/sonia/scm/security/SecurityRequestsTest.java +++ b/scm-webapp/src/test/java/sonia/scm/security/SecurityRequestsTest.java @@ -3,7 +3,7 @@ package sonia.scm.security; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; import javax.servlet.http.HttpServletRequest; diff --git a/scm-webapp/src/test/java/sonia/scm/security/XsrfAccessTokenEnricherTest.java b/scm-webapp/src/test/java/sonia/scm/security/XsrfAccessTokenEnricherTest.java index c7f87e7414..37d853011d 100644 --- a/scm-webapp/src/test/java/sonia/scm/security/XsrfAccessTokenEnricherTest.java +++ b/scm-webapp/src/test/java/sonia/scm/security/XsrfAccessTokenEnricherTest.java @@ -31,16 +31,20 @@ package sonia.scm.security; -import javax.servlet.http.HttpServletRequest; -import org.junit.Test; import org.junit.Before; +import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; -import static org.mockito.Mockito.*; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; import sonia.scm.config.ScmConfiguration; import sonia.scm.util.HttpUtil; +import javax.servlet.http.HttpServletRequest; + +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + /** * Unit tests for {@link XsrfAccessTokenEnricher}. * @@ -96,8 +100,7 @@ public class XsrfAccessTokenEnricherTest { public void testEnrichWithDisabledXsrf() { // prepare configuration.setEnabledXsrfProtection(false); - when(request.getHeader(HttpUtil.HEADER_SCM_CLIENT)).thenReturn(HttpUtil.SCM_CLIENT_WUI); - + // execute enricher.enrich(builder); @@ -120,4 +123,4 @@ public class XsrfAccessTokenEnricherTest { verify(builder, never()).custom(Xsrf.TOKEN_KEY, "42"); } -} \ No newline at end of file +} diff --git a/scm-webapp/src/test/java/sonia/scm/security/XsrfTokenClaimsValidatorTest.java b/scm-webapp/src/test/java/sonia/scm/security/XsrfTokenClaimsValidatorTest.java index 2e47a3cfeb..dbebb2c0cf 100644 --- a/scm-webapp/src/test/java/sonia/scm/security/XsrfTokenClaimsValidatorTest.java +++ b/scm-webapp/src/test/java/sonia/scm/security/XsrfTokenClaimsValidatorTest.java @@ -40,7 +40,7 @@ import org.junit.Before; import org.junit.runner.RunWith; import org.mockito.Mock; import static org.mockito.Mockito.*; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; /** * Tests {@link XsrfTokenClaimsValidator}. @@ -115,4 +115,4 @@ public class XsrfTokenClaimsValidatorTest { // execute and assert assertTrue(validator.validate(claims)); } -} \ No newline at end of file +} diff --git a/scm-webapp/src/test/java/sonia/scm/user/UserEventHackTest.java b/scm-webapp/src/test/java/sonia/scm/user/UserEventHackTest.java index b176a6093d..41dd8f72d9 100644 --- a/scm-webapp/src/test/java/sonia/scm/user/UserEventHackTest.java +++ b/scm-webapp/src/test/java/sonia/scm/user/UserEventHackTest.java @@ -39,7 +39,7 @@ import org.junit.runner.RunWith; import org.mockito.InOrder; import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; import sonia.scm.HandlerEventType; diff --git a/scm-webapp/src/test/java/sonia/scm/web/BasicWebTokenGeneratorTest.java b/scm-webapp/src/test/java/sonia/scm/web/BasicWebTokenGeneratorTest.java index 7228af07fb..9dd9572913 100644 --- a/scm-webapp/src/test/java/sonia/scm/web/BasicWebTokenGeneratorTest.java +++ b/scm-webapp/src/test/java/sonia/scm/web/BasicWebTokenGeneratorTest.java @@ -43,7 +43,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; import static org.hamcrest.Matchers.*; diff --git a/scm-webapp/src/test/java/sonia/scm/web/BearerWebTokenGeneratorTest.java b/scm-webapp/src/test/java/sonia/scm/web/BearerWebTokenGeneratorTest.java index 624a0f8e98..71195b7f48 100644 --- a/scm-webapp/src/test/java/sonia/scm/web/BearerWebTokenGeneratorTest.java +++ b/scm-webapp/src/test/java/sonia/scm/web/BearerWebTokenGeneratorTest.java @@ -39,7 +39,7 @@ import static org.hamcrest.Matchers.*; import org.junit.runner.RunWith; import org.mockito.Mock; import static org.mockito.Mockito.*; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; import sonia.scm.security.BearerToken; /** @@ -76,4 +76,4 @@ public class BearerWebTokenGeneratorTest { assertThat(bt.getCredentials(), equalTo("asd")); } -} \ No newline at end of file +} diff --git a/scm-webapp/src/test/java/sonia/scm/web/CookieBearerWebTokenGeneratorTest.java b/scm-webapp/src/test/java/sonia/scm/web/CookieBearerWebTokenGeneratorTest.java index c98a9deca0..115b52fa36 100644 --- a/scm-webapp/src/test/java/sonia/scm/web/CookieBearerWebTokenGeneratorTest.java +++ b/scm-webapp/src/test/java/sonia/scm/web/CookieBearerWebTokenGeneratorTest.java @@ -39,7 +39,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; import sonia.scm.security.BearerToken; diff --git a/scm-webapp/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker b/scm-webapp/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker new file mode 100644 index 0000000000..1f0955d450 --- /dev/null +++ b/scm-webapp/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker @@ -0,0 +1 @@ +mock-maker-inline diff --git a/scm.iml b/scm.iml index 20f9f4b564..4abb77f9d5 100644 --- a/scm.iml +++ b/scm.iml @@ -11,7 +11,10 @@ - + + + +