/*
* Copyright 2015-2016 Hewlett-Packard Development Company, L.P.
* Licensed under the MIT License (the "License"); you may not use this file except in compliance with the License.
*/
package com.hp.autonomy.frontend.find.core.web;
import org.junit.Test;
import javax.servlet.RequestDispatcher;
import javax.servlet.http.HttpServletRequest;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
// TODO: Unify with ISO version
public class RequestUtilsTest {
private static final String CONTEXT_PATH = "/context";
@Test
public void buildsBaseUrlForRootPath() {
final HttpServletRequest request = mockRequest("/", null);
assertThat(RequestUtils.buildBaseUrl(request), is("."));
}
@Test
public void buildsBaseUrlForDeepPath() {
final HttpServletRequest request = mockRequest("/foo/bar/baz", null);
assertThat(RequestUtils.buildBaseUrl(request), is("../../"));
}
@Test
public void buildsBaseUrlForForward() {
final HttpServletRequest request = mockRequest("/forward/error", "/foo/bar/baz");
assertThat(RequestUtils.buildBaseUrl(request), is("../../"));
}
@Test
public void endsInAForwardSlash() {
final HttpServletRequest request = mockRequest("/foo/bar", null);
assertThat(RequestUtils.buildBaseUrl(request), is("../"));
}
private HttpServletRequest mockRequest(final String requestUri, final String forwardedRequestUrl) {
final HttpServletRequest request = mock(HttpServletRequest.class);
when(request.getContextPath()).thenReturn(CONTEXT_PATH);
when(request.getRequestURI()).thenReturn(CONTEXT_PATH + requestUri);
if (forwardedRequestUrl != null) {
when(request.getAttribute(RequestDispatcher.FORWARD_REQUEST_URI)).thenReturn(CONTEXT_PATH + forwardedRequestUrl);
}
return request;
}
}