1 package com.atlassian.refapp.sal;
2
3 import org.junit.Test;
4 import org.mockito.Mockito;
5
6 import javax.servlet.http.HttpServletRequest;
7
8 import static com.atlassian.refapp.sal.HttpServletRequestBaseUrlExtractor.extractBaseUrl;
9 import static org.junit.Assert.assertEquals;
10
11 public class HttpServletRequestBaseUrlExtractorTest {
12 @Test(expected = NullPointerException.class)
13 public void throwsNullPointerExceptionIfRequestIsNull() {
14 extractBaseUrl(null);
15 }
16
17 @Test
18 public void httpUrlOnDefaultPortDoesNotIncludePort() {
19 HttpServletRequest request = createMockRequest("http", 80);
20 assertEquals("http://example.com/context", extractBaseUrl(request));
21 }
22
23 @Test
24 public void httpsUrlOnDefaultPortDoesNotIncludePort() {
25 HttpServletRequest request = createMockRequest("https", 443);
26 assertEquals("https://example.com/context", extractBaseUrl(request));
27 }
28
29 @Test
30 public void httpUrlOnNonDefaultPortIncludesPort() {
31 HttpServletRequest request = createMockRequest("http", 8080);
32 assertEquals("http://example.com:8080/context", extractBaseUrl(request));
33 }
34
35 @Test
36 public void httpsUrlOnNonDefaultPortIncludesPort() {
37 HttpServletRequest request = createMockRequest("https", 4433);
38 assertEquals("https://example.com:4433/context", extractBaseUrl(request));
39 }
40
41 private HttpServletRequest createMockRequest(String scheme, int port) {
42 HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
43 Mockito.when(request.getScheme()).thenReturn(scheme);
44 Mockito.when(request.getServerName()).thenReturn("example.com");
45 Mockito.when(request.getServerPort()).thenReturn(port);
46 Mockito.when(request.getContextPath()).thenReturn("/context");
47 return request;
48 }
49 }