diff --git a/maven/pom.xml b/maven/pom.xml index 1268acc7e4..cf788a2471 100644 --- a/maven/pom.xml +++ b/maven/pom.xml @@ -6,13 +6,13 @@ sonia.scm scm - 1.48-SNAPSHOT + 1.49-SNAPSHOT sonia.scm.maven scm-maven-plugins pom - 1.48-SNAPSHOT + 1.49-SNAPSHOT scm-maven-plugins diff --git a/maven/scm-maven-plugin/pom.xml b/maven/scm-maven-plugin/pom.xml index 9a818023da..4f376e411c 100644 --- a/maven/scm-maven-plugin/pom.xml +++ b/maven/scm-maven-plugin/pom.xml @@ -6,12 +6,12 @@ scm-maven-plugins sonia.scm.maven - 1.48-SNAPSHOT + 1.49-SNAPSHOT sonia.scm.maven scm-maven-plugin - 1.48-SNAPSHOT + 1.49-SNAPSHOT maven-plugin scm-maven-plugin diff --git a/maven/scm-plugin-archetype/pom.xml b/maven/scm-plugin-archetype/pom.xml index 98d3ab5439..0a247d2cfb 100644 --- a/maven/scm-plugin-archetype/pom.xml +++ b/maven/scm-plugin-archetype/pom.xml @@ -6,12 +6,12 @@ scm-maven-plugins sonia.scm.maven - 1.48-SNAPSHOT + 1.49-SNAPSHOT sonia.scm.maven scm-plugin-archetype - 1.48-SNAPSHOT + 1.49-SNAPSHOT scm-plugin-archetype diff --git a/pom.xml b/pom.xml index d572cd1fa3..beedafee1e 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ sonia.scm scm pom - 1.48-SNAPSHOT + 1.49-SNAPSHOT The easiest way to share your Git, Mercurial and Subversion repositories over http. diff --git a/scm-clients/pom.xml b/scm-clients/pom.xml index 143ae58fdf..e946a2fc8f 100644 --- a/scm-clients/pom.xml +++ b/scm-clients/pom.xml @@ -6,13 +6,13 @@ sonia.scm scm - 1.48-SNAPSHOT + 1.49-SNAPSHOT sonia.scm.clients scm-clients pom - 1.48-SNAPSHOT + 1.49-SNAPSHOT scm-clients @@ -32,7 +32,7 @@ scm-core sonia.scm jar - 1.48-SNAPSHOT + 1.49-SNAPSHOT shiro-core diff --git a/scm-clients/scm-cli-client/pom.xml b/scm-clients/scm-cli-client/pom.xml index 72f83e1d82..aa3d6a807b 100644 --- a/scm-clients/scm-cli-client/pom.xml +++ b/scm-clients/scm-cli-client/pom.xml @@ -6,12 +6,12 @@ scm-clients sonia.scm.clients - 1.48-SNAPSHOT + 1.49-SNAPSHOT sonia.scm.clients scm-cli-client - 1.48-SNAPSHOT + 1.49-SNAPSHOT scm-cli-client @@ -34,7 +34,7 @@ sonia.scm.clients scm-client-impl - 1.48-SNAPSHOT + 1.49-SNAPSHOT diff --git a/scm-clients/scm-client-api/pom.xml b/scm-clients/scm-client-api/pom.xml index babe71c9bc..3285997063 100644 --- a/scm-clients/scm-client-api/pom.xml +++ b/scm-clients/scm-client-api/pom.xml @@ -6,13 +6,13 @@ sonia.scm.clients scm-clients - 1.48-SNAPSHOT + 1.49-SNAPSHOT sonia.scm.clients scm-client-api jar - 1.48-SNAPSHOT + 1.49-SNAPSHOT scm-client-api diff --git a/scm-clients/scm-client-impl/pom.xml b/scm-clients/scm-client-impl/pom.xml index 911a962f7a..0173942ed2 100644 --- a/scm-clients/scm-client-impl/pom.xml +++ b/scm-clients/scm-client-impl/pom.xml @@ -6,13 +6,13 @@ sonia.scm.clients scm-clients - 1.48-SNAPSHOT + 1.49-SNAPSHOT sonia.scm.clients scm-client-impl jar - 1.48-SNAPSHOT + 1.49-SNAPSHOT scm-client-impl @@ -36,7 +36,7 @@ sonia.scm.clients scm-client-api - 1.48-SNAPSHOT + 1.49-SNAPSHOT @@ -70,7 +70,7 @@ sonia.scm scm-test - 1.48-SNAPSHOT + 1.49-SNAPSHOT test diff --git a/scm-core/pom.xml b/scm-core/pom.xml index a3f56f355a..5ee1f110ab 100644 --- a/scm-core/pom.xml +++ b/scm-core/pom.xml @@ -6,12 +6,12 @@ scm sonia.scm - 1.48-SNAPSHOT + 1.49-SNAPSHOT sonia.scm scm-core - 1.48-SNAPSHOT + 1.49-SNAPSHOT scm-core diff --git a/scm-core/src/main/java/sonia/scm/repository/Permission.java b/scm-core/src/main/java/sonia/scm/repository/Permission.java index 60c6628d61..b5de810f75 100644 --- a/scm-core/src/main/java/sonia/scm/repository/Permission.java +++ b/scm-core/src/main/java/sonia/scm/repository/Permission.java @@ -136,8 +136,9 @@ public class Permission implements PermissionObject, Serializable final Permission other = (Permission) obj; - return Objects.equal(name, other.name) && Objects.equal(type, other.type) - && Objects.equal(groupPermission, groupPermission); + return Objects.equal(name, other.name) + && Objects.equal(type, other.type) + && Objects.equal(groupPermission, other.groupPermission); } /** diff --git a/scm-dao-orientdb/pom.xml b/scm-dao-orientdb/pom.xml index b2345d6c8d..5b54b2361e 100644 --- a/scm-dao-orientdb/pom.xml +++ b/scm-dao-orientdb/pom.xml @@ -6,12 +6,12 @@ sonia.scm scm - 1.48-SNAPSHOT + 1.49-SNAPSHOT sonia.scm scm-dao-orientdb - 1.48-SNAPSHOT + 1.49-SNAPSHOT scm-dao-orientdb @@ -26,7 +26,7 @@ sonia.scm scm-core - 1.48-SNAPSHOT + 1.49-SNAPSHOT @@ -52,7 +52,7 @@ sonia.scm scm-test - 1.48-SNAPSHOT + 1.49-SNAPSHOT test diff --git a/scm-dao-xml/pom.xml b/scm-dao-xml/pom.xml index 5e61796443..009b20f559 100644 --- a/scm-dao-xml/pom.xml +++ b/scm-dao-xml/pom.xml @@ -6,12 +6,12 @@ sonia.scm scm - 1.48-SNAPSHOT + 1.49-SNAPSHOT sonia.scm scm-dao-xml - 1.48-SNAPSHOT + 1.49-SNAPSHOT scm-dao-xml @@ -26,7 +26,7 @@ sonia.scm scm-core - 1.48-SNAPSHOT + 1.49-SNAPSHOT @@ -34,7 +34,7 @@ sonia.scm scm-test - 1.48-SNAPSHOT + 1.49-SNAPSHOT test diff --git a/scm-plugin-backend/pom.xml b/scm-plugin-backend/pom.xml index 788a0334fc..9f9024def5 100644 --- a/scm-plugin-backend/pom.xml +++ b/scm-plugin-backend/pom.xml @@ -6,13 +6,13 @@ scm sonia.scm - 1.48-SNAPSHOT + 1.49-SNAPSHOT sonia.scm scm-plugin-backend war - 1.48-SNAPSHOT + 1.49-SNAPSHOT ${project.artifactId} @@ -62,7 +62,7 @@ sonia.scm scm-core - 1.48-SNAPSHOT + 1.49-SNAPSHOT diff --git a/scm-plugins/pom.xml b/scm-plugins/pom.xml index 24150b2da9..35c64fb10c 100644 --- a/scm-plugins/pom.xml +++ b/scm-plugins/pom.xml @@ -6,13 +6,13 @@ sonia.scm scm - 1.48-SNAPSHOT + 1.49-SNAPSHOT sonia.scm.plugins scm-plugins pom - 1.48-SNAPSHOT + 1.49-SNAPSHOT scm-plugins @@ -26,7 +26,7 @@ sonia.scm scm-core - 1.48-SNAPSHOT + 1.49-SNAPSHOT @@ -59,7 +59,7 @@ sonia.scm.maven scm-maven-plugin - 1.48-SNAPSHOT + 1.49-SNAPSHOT process-resources diff --git a/scm-plugins/scm-git-plugin/pom.xml b/scm-plugins/scm-git-plugin/pom.xml index 2d5520a958..82515c13cd 100644 --- a/scm-plugins/scm-git-plugin/pom.xml +++ b/scm-plugins/scm-git-plugin/pom.xml @@ -6,12 +6,12 @@ scm-plugins sonia.scm.plugins - 1.48-SNAPSHOT + 1.49-SNAPSHOT sonia.scm.plugins scm-git-plugin - 1.48-SNAPSHOT + 1.49-SNAPSHOT scm-git-plugin https://bitbucket.org/sdorra/scm-manager Plugin for the version control system Git @@ -48,7 +48,7 @@ sonia.scm scm-test - 1.48-SNAPSHOT + 1.49-SNAPSHOT test diff --git a/scm-plugins/scm-hg-plugin/pom.xml b/scm-plugins/scm-hg-plugin/pom.xml index 6003a7ba47..3a2611d6da 100644 --- a/scm-plugins/scm-hg-plugin/pom.xml +++ b/scm-plugins/scm-hg-plugin/pom.xml @@ -6,12 +6,12 @@ sonia.scm.plugins scm-plugins - 1.48-SNAPSHOT + 1.49-SNAPSHOT sonia.scm.plugins scm-hg-plugin - 1.48-SNAPSHOT + 1.49-SNAPSHOT scm-hg-plugin https://bitbucket.org/sdorra/scm-manager Plugin for the version control system Mercurial @@ -42,7 +42,7 @@ sonia.scm scm-test - 1.48-SNAPSHOT + 1.49-SNAPSHOT test diff --git a/scm-plugins/scm-svn-plugin/pom.xml b/scm-plugins/scm-svn-plugin/pom.xml index 59efbfd272..3de56a1a92 100644 --- a/scm-plugins/scm-svn-plugin/pom.xml +++ b/scm-plugins/scm-svn-plugin/pom.xml @@ -6,12 +6,12 @@ scm-plugins sonia.scm.plugins - 1.48-SNAPSHOT + 1.49-SNAPSHOT sonia.scm.plugins scm-svn-plugin - 1.48-SNAPSHOT + 1.49-SNAPSHOT scm-svn-plugin https://bitbucket.org/sdorra/scm-manager Plugin for the version control system Subversion @@ -48,7 +48,7 @@ sonia.scm scm-test - 1.48-SNAPSHOT + 1.49-SNAPSHOT test diff --git a/scm-samples/pom.xml b/scm-samples/pom.xml index af9c057725..b647b307af 100644 --- a/scm-samples/pom.xml +++ b/scm-samples/pom.xml @@ -6,13 +6,13 @@ sonia.scm scm - 1.48-SNAPSHOT + 1.49-SNAPSHOT sonia.scm.samples scm-samples pom - 1.48-SNAPSHOT + 1.49-SNAPSHOT scm-samples diff --git a/scm-samples/scm-sample-auth/pom.xml b/scm-samples/scm-sample-auth/pom.xml index 250bc1e5d7..53f30cc74d 100644 --- a/scm-samples/scm-sample-auth/pom.xml +++ b/scm-samples/scm-sample-auth/pom.xml @@ -6,12 +6,12 @@ scm-samples sonia.scm.samples - 1.48-SNAPSHOT + 1.49-SNAPSHOT sonia.scm.sample scm-sample-auth - 1.48-SNAPSHOT + 1.49-SNAPSHOT scm-sample-auth Sample Authentication Plugin https://bitbucket.org/sdorra/scm-manager @@ -28,7 +28,7 @@ sonia.scm scm-core - 1.48-SNAPSHOT + 1.49-SNAPSHOT diff --git a/scm-samples/scm-sample-hello/pom.xml b/scm-samples/scm-sample-hello/pom.xml index 7592cb18fd..04ff972b50 100644 --- a/scm-samples/scm-sample-hello/pom.xml +++ b/scm-samples/scm-sample-hello/pom.xml @@ -6,12 +6,12 @@ scm-samples sonia.scm.samples - 1.48-SNAPSHOT + 1.49-SNAPSHOT sonia.scm.sample scm-sample-hello - 1.48-SNAPSHOT + 1.49-SNAPSHOT scm-sample-hello A simple hello world plugin https://bitbucket.org/sdorra/scm-manager @@ -28,7 +28,7 @@ sonia.scm scm-core - 1.48-SNAPSHOT + 1.49-SNAPSHOT diff --git a/scm-server/pom.xml b/scm-server/pom.xml index 1a672a31cf..df5ec69a0f 100644 --- a/scm-server/pom.xml +++ b/scm-server/pom.xml @@ -6,12 +6,12 @@ scm sonia.scm - 1.48-SNAPSHOT + 1.49-SNAPSHOT sonia.scm scm-server - 1.48-SNAPSHOT + 1.49-SNAPSHOT scm-server jar diff --git a/scm-test/pom.xml b/scm-test/pom.xml index fe95e257a7..4d700407cf 100644 --- a/scm-test/pom.xml +++ b/scm-test/pom.xml @@ -6,12 +6,12 @@ scm sonia.scm - 1.48-SNAPSHOT + 1.49-SNAPSHOT sonia.scm scm-test - 1.48-SNAPSHOT + 1.49-SNAPSHOT scm-test @@ -25,7 +25,7 @@ sonia.scm scm-core - 1.48-SNAPSHOT + 1.49-SNAPSHOT diff --git a/scm-webapp/pom.xml b/scm-webapp/pom.xml index c7218797eb..9a7ab485a8 100644 --- a/scm-webapp/pom.xml +++ b/scm-webapp/pom.xml @@ -6,13 +6,13 @@ sonia.scm scm - 1.48-SNAPSHOT + 1.49-SNAPSHOT sonia.scm scm-webapp war - 1.48-SNAPSHOT + 1.49-SNAPSHOT scm-webapp @@ -38,31 +38,31 @@ sonia.scm scm-core - 1.48-SNAPSHOT + 1.49-SNAPSHOT sonia.scm scm-dao-xml - 1.48-SNAPSHOT + 1.49-SNAPSHOT sonia.scm.plugins scm-hg-plugin - 1.48-SNAPSHOT + 1.49-SNAPSHOT sonia.scm.plugins scm-svn-plugin - 1.48-SNAPSHOT + 1.49-SNAPSHOT sonia.scm.plugins scm-git-plugin - 1.48-SNAPSHOT + 1.49-SNAPSHOT @@ -286,7 +286,7 @@ sonia.scm scm-test - 1.48-SNAPSHOT + 1.49-SNAPSHOT test @@ -299,7 +299,7 @@ sonia.scm.plugins scm-git-plugin - 1.48-SNAPSHOT + 1.49-SNAPSHOT tests test @@ -307,7 +307,7 @@ sonia.scm.plugins scm-hg-plugin - 1.48-SNAPSHOT + 1.49-SNAPSHOT tests test @@ -315,7 +315,7 @@ sonia.scm.plugins scm-svn-plugin - 1.48-SNAPSHOT + 1.49-SNAPSHOT tests test @@ -547,7 +547,7 @@ sonia.scm scm-dao-orientdb - 1.48-SNAPSHOT + 1.49-SNAPSHOT diff --git a/scm-webapp/src/main/java/sonia/scm/filter/MDCFilter.java b/scm-webapp/src/main/java/sonia/scm/filter/MDCFilter.java index 5c14269ffb..f16e7ca548 100644 --- a/scm-webapp/src/main/java/sonia/scm/filter/MDCFilter.java +++ b/scm-webapp/src/main/java/sonia/scm/filter/MDCFilter.java @@ -72,6 +72,10 @@ public class MDCFilter extends HttpFilter /** url of the current request */ @VisibleForTesting static final String MDC_REQUEST_URI = "request_uri"; + + /** request method */ + @VisibleForTesting + static final String MDC_REQUEST_METHOD = "request_method"; /** Field description */ @VisibleForTesting @@ -98,6 +102,7 @@ public class MDCFilter extends HttpFilter MDC.put(MDC_USERNAME, getUsername()); MDC.put(MDC_CLIEN_IP, request.getRemoteAddr()); MDC.put(MDC_CLIEN_HOST, request.getRemoteHost()); + MDC.put(MDC_REQUEST_METHOD, request.getMethod()); MDC.put(MDC_REQUEST_URI, request.getRequestURI()); try @@ -109,6 +114,7 @@ public class MDCFilter extends HttpFilter MDC.remove(MDC_USERNAME); MDC.remove(MDC_CLIEN_IP); MDC.remove(MDC_CLIEN_HOST); + MDC.remove(MDC_REQUEST_METHOD); MDC.remove(MDC_REQUEST_URI); } } diff --git a/scm-webapp/src/main/java/sonia/scm/repository/DefaultRepositoryManager.java b/scm-webapp/src/main/java/sonia/scm/repository/DefaultRepositoryManager.java index 672a8d7a46..bbe4f80115 100644 --- a/scm-webapp/src/main/java/sonia/scm/repository/DefaultRepositoryManager.java +++ b/scm-webapp/src/main/java/sonia/scm/repository/DefaultRepositoryManager.java @@ -918,7 +918,8 @@ public class DefaultRepositoryManager extends AbstractRepositoryManager if (!isPermitted(repository, PermissionType.OWNER)) { throw new ScmSecurityException( - "owner permission is required, access denied"); + "owner permission is required, owner access to repository " + repository.getName() + " denied" + ); } } @@ -933,7 +934,8 @@ public class DefaultRepositoryManager extends AbstractRepositoryManager if (!isReader(repository)) { throw new ScmSecurityException( - "reader permission is required, access denied"); + "reader permission is required, access to repository " + repository.getName() + " denied" + ); } } diff --git a/scm-webapp/src/main/java/sonia/scm/security/AuthorizationCollector.java b/scm-webapp/src/main/java/sonia/scm/security/AuthorizationCollector.java index d7db55ac59..315f19d1e5 100644 --- a/scm-webapp/src/main/java/sonia/scm/security/AuthorizationCollector.java +++ b/scm-webapp/src/main/java/sonia/scm/security/AuthorizationCollector.java @@ -85,6 +85,9 @@ import sonia.scm.user.UserModificationEvent; public class AuthorizationCollector { + // TODO move to util class + private static final String SEPARATOR = System.getProperty("line.separator", "\n"); + /** Field description */ private static final String CACHE_NAME = "sonia.cache.authorizing"; @@ -166,15 +169,17 @@ public class AuthorizationCollector User beforeModification = ((UserModificationEvent) event).getItemBeforeModification(); if (shouldCacheBeCleared(user, beforeModification)) { + logger.debug("invalidate cache of user {}, because of a permission relevant field has changed", username); invalidateUserCache(username); } else { - logger.debug("cache of user {} is not invalidated, because admin and active flag has not changed", username); + logger.debug("cache of user {} is not invalidated, because no permission relevant field has changed", username); } } else { + logger.debug("invalidate cache of user {}, because of user {} event", username, event.getEventType()); invalidateUserCache(username); } } @@ -187,7 +192,6 @@ public class AuthorizationCollector private void invalidateUserCache(final String username) { - logger.debug("invalidate cache of user {}, because of a event which could change the permissions", username); cache.removeAll(new Filter() { @Override @@ -214,11 +218,7 @@ public class AuthorizationCollector if (event.getEventType().isPost()) { Repository repository = event.getItem(); - if (logger.isDebugEnabled()) - { - logger.debug("clear cache, because repository {} has changed", repository.getName()); - } - + if (event instanceof RepositoryModificationEvent) { Repository beforeModification = ((RepositoryModificationEvent) event).getItemBeforeModification(); @@ -230,14 +230,14 @@ public class AuthorizationCollector else { logger.debug( - "cache of repository {} is not invalidated, because non relevant fields have changed", + "cache is not invalidated, because non relevant field of repository {} has changed", repository.getName() ); } } else { - logger.debug("clear cache, because repository {} has changed", repository.getName()); + logger.debug("clear cache, received {} event of repository {}", event.getEventType(), repository.getName()); cache.clear(); } } @@ -262,20 +262,18 @@ public class AuthorizationCollector { if (event.getEventType().isPost()) { - if (logger.isDebugEnabled()) - { - logger.debug("clear cache, because permission {} has changed", - event.getPermission().getId()); - } - StoredAssignedPermission permission = event.getPermission(); if (permission.isGroupPermission()) { - logger.debug("clears the whole cache, because global group permission {} has changed", permission.getId()); + logger.debug("clear cache, because global group permission {} has changed", permission.getId()); cache.clear(); } else { + logger.debug( + "clear cache of user {}, because permission {} has changed", + permission.getName(), event.getPermission().getId() + ); invalidateUserCache(permission.getName()); } } @@ -308,14 +306,14 @@ public class AuthorizationCollector else { logger.debug( - "cache of group {} is not invalidated, because non relevant fields have changed", + "cache is not invalidated, because non relevant field of group {} has changed", group.getId() ); } } else { - logger.debug("clear cache, because group {} has changed", group.getId()); + logger.debug("clear cache, received group event {} for group {}", event.getEventType(), group.getId()); cache.clear(); } } @@ -351,18 +349,13 @@ public class AuthorizationCollector if (info == null) { - if (logger.isTraceEnabled()) - { - logger.trace("collect AuthorizationInfo for user {}", user.getName()); - } - + logger.trace("collect AuthorizationInfo for user {}", user.getName()); info = createAuthorizationInfo(user, groupNames); cache.put(cacheKey, info); } else if (logger.isTraceEnabled()) { - logger.trace("retrieve AuthorizationInfo for user {} from cache", - user.getName()); + logger.trace("retrieve AuthorizationInfo for user {} from cache", user.getName()); } return info; @@ -522,11 +515,37 @@ public class AuthorizationCollector } SimpleAuthorizationInfo info = new SimpleAuthorizationInfo(roles); - info.addObjectPermissions(permissions); - + + if (logger.isTraceEnabled()){ + logger.trace(createAuthorizationSummary(user, groups, info)); + } + return info; } + + private String createAuthorizationSummary(User user, GroupNames groups, AuthorizationInfo authzInfo) + { + StringBuilder buffer = new StringBuilder("authorization summary: "); + buffer.append(SEPARATOR).append("username : ").append(user.getName()); + buffer.append(SEPARATOR).append("groups : "); + append(buffer, groups); + buffer.append(SEPARATOR).append("roles : "); + append(buffer, authzInfo.getRoles()); + buffer.append(SEPARATOR).append("permissions:"); + append(buffer, authzInfo.getStringPermissions()); + append(buffer, authzInfo.getObjectPermissions()); + return buffer.toString(); + } + + private void append(StringBuilder buffer, Iterable iterable){ + if (iterable != null){ + for ( Object item : iterable ) + { + buffer.append(SEPARATOR).append(" - ").append(item); + } + } + } //~--- get methods ---------------------------------------------------------- diff --git a/scm-webapp/src/main/resources/logback.default.xml b/scm-webapp/src/main/resources/logback.default.xml index 290a04a9d1..3550607db6 100644 --- a/scm-webapp/src/main/resources/logback.default.xml +++ b/scm-webapp/src/main/resources/logback.default.xml @@ -52,6 +52,10 @@ + + + + diff --git a/scm-webapp/src/main/webapp/resources/js/panel/sonia.panel.syntaxhighlighterpanel.js b/scm-webapp/src/main/webapp/resources/js/panel/sonia.panel.syntaxhighlighterpanel.js index 686df63cbb..fab21ac806 100644 --- a/scm-webapp/src/main/webapp/resources/js/panel/sonia.panel.syntaxhighlighterpanel.js +++ b/scm-webapp/src/main/webapp/resources/js/panel/sonia.panel.syntaxhighlighterpanel.js @@ -41,6 +41,7 @@ Sonia.panel.SyntaxHighlighterPanel = Ext.extend(Ext.Panel, { fileName: 'shBrushAppleScript.js' },{ name: 'Bash/shell', + brush: 'shell', aliases: ['sh', 'bash', 'shell'], fileName: 'shBrushBash.js' },{ 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 b5e1753c52..010c9bc1cf 100644 --- a/scm-webapp/src/test/java/sonia/scm/filter/MDCFilterTest.java +++ b/scm-webapp/src/test/java/sonia/scm/filter/MDCFilterTest.java @@ -87,6 +87,7 @@ public class MDCFilterTest extends AbstractTestBase { when(request.getRequestURI()).thenReturn("api/v1/repositories"); when(request.getRemoteAddr()).thenReturn("127.0.0.1"); when(request.getRemoteHost()).thenReturn("localhost"); + when(request.getMethod()).thenReturn("GET"); MDCCapturingFilterChain chain = new MDCCapturingFilterChain(); filter.doFilter(request, response, chain); @@ -96,6 +97,7 @@ public class MDCFilterTest extends AbstractTestBase { assertEquals("api/v1/repositories", chain.ctx.get(MDCFilter.MDC_REQUEST_URI)); assertEquals("127.0.0.1", chain.ctx.get(MDCFilter.MDC_CLIEN_IP)); assertEquals("localhost", chain.ctx.get(MDCFilter.MDC_CLIEN_HOST)); + assertEquals("GET", chain.ctx.get(MDCFilter.MDC_REQUEST_METHOD)); } /** diff --git a/scm-webapp/src/test/java/sonia/scm/security/AuthorizationCollectorTest.java b/scm-webapp/src/test/java/sonia/scm/security/AuthorizationCollectorTest.java index cfa18960c5..269f39f833 100644 --- a/scm-webapp/src/test/java/sonia/scm/security/AuthorizationCollectorTest.java +++ b/scm-webapp/src/test/java/sonia/scm/security/AuthorizationCollectorTest.java @@ -223,6 +223,18 @@ public class AuthorizationCollectorTest { repositoryModified.setPermissions(Lists.newArrayList(new sonia.scm.repository.Permission("test123"))); collector.onEvent(new RepositoryModificationEvent(repositoryModified, repository, HandlerEvent.CREATE)); verify(cache).clear(); + + repositoryModified.setPermissions( + Lists.newArrayList(new sonia.scm.repository.Permission("test", PermissionType.READ, true)) + ); + collector.onEvent(new RepositoryModificationEvent(repositoryModified, repository, HandlerEvent.CREATE)); + verify(cache, times(2)).clear(); + + repositoryModified.setPermissions( + Lists.newArrayList(new sonia.scm.repository.Permission("test", PermissionType.WRITE)) + ); + collector.onEvent(new RepositoryModificationEvent(repositoryModified, repository, HandlerEvent.CREATE)); + verify(cache, times(3)).clear(); } /** diff --git a/support/pom.xml b/support/pom.xml index d2b787d62c..f8a2a61627 100644 --- a/support/pom.xml +++ b/support/pom.xml @@ -6,13 +6,13 @@ sonia.scm scm - 1.48-SNAPSHOT + 1.49-SNAPSHOT sonia.scm.support scm-support pom - 1.48-SNAPSHOT + 1.49-SNAPSHOT scm-support diff --git a/support/scm-support-btrace/pom.xml b/support/scm-support-btrace/pom.xml index 9f8264251f..aa4caaf32c 100644 --- a/support/scm-support-btrace/pom.xml +++ b/support/scm-support-btrace/pom.xml @@ -4,12 +4,12 @@ sonia.scm.support scm-support - 1.48-SNAPSHOT + 1.49-SNAPSHOT sonia.scm scm-support-btrace - 1.48-SNAPSHOT + 1.49-SNAPSHOT jar scm-support-btrace @@ -18,7 +18,7 @@ sonia.scm scm-core - 1.48-SNAPSHOT + 1.49-SNAPSHOT