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 @@
-
+
+
+
+