mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-02 03:25:56 +01:00
Update servlet version
This commit is contained in:
@@ -21,7 +21,7 @@
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
package sonia.scm.web;
|
||||
|
||||
import org.junit.Test;
|
||||
@@ -33,6 +33,7 @@ import sonia.scm.repository.spi.ScmProviderHttpServlet;
|
||||
import sonia.scm.util.HttpUtil;
|
||||
|
||||
import javax.servlet.ServletOutputStream;
|
||||
import javax.servlet.WriteListener;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
@@ -47,40 +48,40 @@ import static org.mockito.Mockito.when;
|
||||
|
||||
/**
|
||||
* Unit tests for {@link GitPermissionFilter}.
|
||||
*
|
||||
*
|
||||
* Created by omilke on 19.05.2017.
|
||||
*/
|
||||
@RunWith(MockitoJUnitRunner.class)
|
||||
public class GitPermissionFilterTest {
|
||||
|
||||
private final GitPermissionFilter permissionFilter = new GitPermissionFilter(new ScmConfiguration(), mock(ScmProviderHttpServlet.class));
|
||||
|
||||
|
||||
@Mock
|
||||
private HttpServletResponse response;
|
||||
|
||||
|
||||
@Test
|
||||
public void testIsWriteRequest() {
|
||||
HttpServletRequest request = mockRequestWithMethodAndRequestURI("POST", "/scm/git/fanzy-project/git-receive-pack");
|
||||
assertThat(permissionFilter.isWriteRequest(request), is(true));
|
||||
|
||||
|
||||
request = mockRequestWithMethodAndRequestURI("GET", "/scm/git/fanzy-project/info/refs?service=git-receive-pack");
|
||||
assertThat(permissionFilter.isWriteRequest(request), is(true));
|
||||
|
||||
|
||||
request = mockRequestWithMethodAndRequestURI("GET", "/scm/git/fanzy-project/info/refs?service=some-other-service");
|
||||
assertThat(permissionFilter.isWriteRequest(request), is(false));
|
||||
|
||||
|
||||
request = mockRequestWithMethodAndRequestURI(
|
||||
"PUT",
|
||||
"PUT",
|
||||
"/scm/git/git-lfs-demo.git/info/lfs/objects/8fcebeb5698230685f92028e560f8f1683ebc15ec82a620ffad5c12a3c19bdec"
|
||||
);
|
||||
assertThat(permissionFilter.isWriteRequest(request), is(true));
|
||||
|
||||
|
||||
request = mockRequestWithMethodAndRequestURI(
|
||||
"GET",
|
||||
"GET",
|
||||
"/scm/git/git-lfs-demo.git/info/lfs/objects/8fcebeb5698230685f92028e560f8f1683ebc15ec82a620ffad5c12a3c19bdec"
|
||||
);
|
||||
assertThat(permissionFilter.isWriteRequest(request), is(false));
|
||||
|
||||
|
||||
request = mockRequestWithMethodAndRequestURI("POST", "/scm/git/git-lfs-demo.git/info/lfs/objects/batch");
|
||||
assertThat(permissionFilter.isWriteRequest(request), is(false));
|
||||
}
|
||||
@@ -97,45 +98,45 @@ public class GitPermissionFilterTest {
|
||||
@Test
|
||||
public void testSendNotEnoughPrivilegesErrorAsBrowser() throws IOException {
|
||||
HttpServletRequest request = mockGitReceivePackServiceRequest();
|
||||
|
||||
|
||||
permissionFilter.sendNotEnoughPrivilegesError(request, response);
|
||||
|
||||
|
||||
verify(response).sendError(HttpServletResponse.SC_FORBIDDEN);
|
||||
}
|
||||
|
||||
|
||||
@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(HttpUtil.HEADER_USERAGENT)).thenReturn(userAgent);
|
||||
|
||||
|
||||
CapturingServletOutputStream stream = new CapturingServletOutputStream();
|
||||
when(response.getOutputStream()).thenReturn(stream);
|
||||
|
||||
|
||||
permissionFilter.sendNotEnoughPrivilegesError(request, response);
|
||||
|
||||
|
||||
verify(response).setStatus(HttpServletResponse.SC_OK);
|
||||
assertThat(stream.toString(), containsString("privileges"));
|
||||
assertThat(stream.toString(), containsString("privileges"));
|
||||
}
|
||||
|
||||
|
||||
private HttpServletRequest mockGitReceivePackServiceRequest() {
|
||||
HttpServletRequest request = mockRequestWithMethodAndRequestURI("GET", "/git/info/refs");
|
||||
when(request.getParameter("service")).thenReturn("git-receive-pack");
|
||||
return request;
|
||||
}
|
||||
|
||||
|
||||
private static class CapturingServletOutputStream extends ServletOutputStream {
|
||||
|
||||
private final ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||
|
||||
|
||||
@Override
|
||||
public void write(int b) throws IOException {
|
||||
baos.write(b);
|
||||
@@ -145,11 +146,21 @@ public class GitPermissionFilterTest {
|
||||
public void close() throws IOException {
|
||||
baos.close();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return baos.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isReady() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setWriteListener(WriteListener writeListener) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user