mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-08 22:45:45 +01:00
improve git client detection at GitPermissionFilter to include jgit
This commit is contained in:
@@ -42,8 +42,10 @@ import static org.mockito.Mockito.*;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
import sonia.scm.util.HttpUtil;
|
||||
|
||||
/**
|
||||
* Unit tests for {@link GitUtil}.
|
||||
@@ -114,4 +116,22 @@ public class GitUtilTest
|
||||
|
||||
return repo;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testIsGitClient() {
|
||||
HttpServletRequest request = mockRequestWithUserAgent("Git/2.9.3");
|
||||
assertTrue(GitUtil.isGitClient(request));
|
||||
|
||||
request = mockRequestWithUserAgent("JGit/2.9.3");
|
||||
assertTrue(GitUtil.isGitClient(request));
|
||||
|
||||
request = mockRequestWithUserAgent("Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) ...");
|
||||
assertFalse(GitUtil.isGitClient(request));
|
||||
}
|
||||
|
||||
private HttpServletRequest mockRequestWithUserAgent(String userAgent) {
|
||||
HttpServletRequest request = mock(HttpServletRequest.class);
|
||||
when(request.getHeader(HttpUtil.HEADER_USERAGENT)).thenReturn(userAgent);
|
||||
return request;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@ import static org.mockito.Mockito.*;
|
||||
import org.mockito.runners.MockitoJUnitRunner;
|
||||
import sonia.scm.config.ScmConfiguration;
|
||||
import sonia.scm.repository.RepositoryProvider;
|
||||
import sonia.scm.util.HttpUtil;
|
||||
|
||||
/**
|
||||
* Unit tests for {@link GitPermissionFilter}.
|
||||
@@ -84,8 +85,17 @@ public class GitPermissionFilterTest {
|
||||
|
||||
@Test
|
||||
public void testSendNotEnoughPrivilegesErrorAsGitClient() throws IOException {
|
||||
verifySendNotEnoughPrivilegesErrorAsGitClient("git/2.9.3");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSendNotEnoughPrivilegesErrorAsJGitClient() throws IOException {
|
||||
verifySendNotEnoughPrivilegesErrorAsGitClient("JGit/4.2");
|
||||
}
|
||||
|
||||
private void verifySendNotEnoughPrivilegesErrorAsGitClient(String userAgent) throws IOException {
|
||||
HttpServletRequest request = mockGitReceivePackServiceRequest();
|
||||
when(request.getHeader("User-Agent")).thenReturn("git/2.9.3");
|
||||
when(request.getHeader(HttpUtil.HEADER_USERAGENT)).thenReturn(userAgent);
|
||||
|
||||
CapturingServletOutputStream stream = new CapturingServletOutputStream();
|
||||
when(response.getOutputStream()).thenReturn(stream);
|
||||
@@ -93,7 +103,7 @@ public class GitPermissionFilterTest {
|
||||
permissionFilter.sendNotEnoughPrivilegesError(request, response);
|
||||
|
||||
verify(response).setStatus(HttpServletResponse.SC_OK);
|
||||
assertThat(stream.toString(), containsString("privileges"));
|
||||
assertThat(stream.toString(), containsString("privileges"));
|
||||
}
|
||||
|
||||
private HttpServletRequest mockGitReceivePackServiceRequest() {
|
||||
|
||||
@@ -33,8 +33,6 @@ package sonia.scm.web;
|
||||
|
||||
//~--- non-JDK imports --------------------------------------------------------
|
||||
|
||||
import com.google.common.base.Strings;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
Reference in New Issue
Block a user