1   package org.seasar.cubby.util;
2   
3   import static org.easymock.EasyMock.*;
4   import static org.junit.Assert.*;
5   
6   import java.net.MalformedURLException;
7   
8   import javax.servlet.http.HttpServletRequest;
9   
10  import org.junit.Test;
11  
12  public class LinkBuilderTest {
13  
14  	@Test
15  	public void httpDefaultPort() throws MalformedURLException {
16  		HttpServletRequest request = createMock(HttpServletRequest.class);
17  		expect(request.getRequestURL()).andStubReturn(
18  				new StringBuffer("http://example.com/aaa"));
19  		replay(request);
20  
21  		// change protocol
22  		{
23  			LinkBuilder linkBuilder = new LinkBuilder();
24  			linkBuilder.setProtocol("https");
25  			String link = linkBuilder.toLink(request);
26  			assertEquals("https://example.com/aaa", link);
27  		}
28  
29  		// relative
30  		{
31  			LinkBuilder linkBuilder = new LinkBuilder();
32  			linkBuilder.setFile("/bbb");
33  			String link = linkBuilder.toLink(request);
34  			assertEquals("/bbb", link);
35  		}
36  
37  		// use default port
38  		{
39  			LinkBuilder linkBuilder = new LinkBuilder();
40  			linkBuilder.setPort(-1);
41  			linkBuilder.setFile("/bbb");
42  			String link = linkBuilder.toLink(request);
43  			assertEquals("/bbb", link);
44  		}
45  
46  		// set default port
47  		{
48  			LinkBuilder linkBuilder = new LinkBuilder();
49  			linkBuilder.setPort(80);
50  			linkBuilder.setFile("/bbb");
51  			String link = linkBuilder.toLink(request);
52  			assertEquals("/bbb", link);
53  		}
54  
55  		{
56  			LinkBuilder linkBuilder = new LinkBuilder();
57  			linkBuilder.setProtocol("http");
58  			linkBuilder.setPort(80);
59  			linkBuilder.setHost("example.com");
60  			linkBuilder.setFile("/bbb");
61  			String link = linkBuilder.toLink(request);
62  			assertEquals("/bbb", link);
63  		}
64  
65  		{
66  			LinkBuilder linkBuilder = new LinkBuilder();
67  			linkBuilder.setProtocol("http");
68  			linkBuilder.setPort(8080);
69  			linkBuilder.setHost("example.com");
70  			linkBuilder.setFile("/bbb");
71  			String link = linkBuilder.toLink(request);
72  			assertEquals("http://example.com:8080/bbb", link);
73  		}
74  
75  		{
76  			LinkBuilder linkBuilder = new LinkBuilder();
77  			linkBuilder.setProtocol("https");
78  			linkBuilder.setPort(-1);
79  			linkBuilder.setHost("example.com");
80  			linkBuilder.setFile("/bbb");
81  			String link = linkBuilder.toLink(request);
82  			assertEquals("https://example.com/bbb", link);
83  		}
84  
85  		{
86  			LinkBuilder linkBuilder = new LinkBuilder();
87  			linkBuilder.setProtocol("https");
88  			linkBuilder.setPort(443);
89  			linkBuilder.setHost("example.com");
90  			linkBuilder.setFile("/bbb");
91  			String link = linkBuilder.toLink(request);
92  			assertEquals("https://example.com/bbb", link);
93  		}
94  
95  		{
96  			LinkBuilder linkBuilder = new LinkBuilder();
97  			linkBuilder.setProtocol("https");
98  			linkBuilder.setPort(8443);
99  			linkBuilder.setHost("example.com");
100 			linkBuilder.setFile("/bbb");
101 			String link = linkBuilder.toLink(request);
102 			assertEquals("https://example.com:8443/bbb", link);
103 		}
104 
105 		verify(request);
106 	}
107 
108 	@Test
109 	public void http8080() throws MalformedURLException {
110 		HttpServletRequest request = createMock(HttpServletRequest.class);
111 		expect(request.getRequestURL()).andStubReturn(
112 				new StringBuffer("http://example.com:8080/aaa"));
113 		replay(request);
114 
115 		{
116 			LinkBuilder linkBuilder = new LinkBuilder();
117 			linkBuilder.setProtocol("http");
118 			linkBuilder.setPort(-1);
119 			linkBuilder.setHost("example.com");
120 			linkBuilder.setFile("/aaa");
121 			String link = linkBuilder.toLink(request);
122 			assertEquals("http://example.com/aaa", link);
123 		}
124 
125 		{
126 			LinkBuilder linkBuilder = new LinkBuilder();
127 			linkBuilder.setProtocol("http");
128 			linkBuilder.setPort(-1);
129 			linkBuilder.setHost("example.com");
130 			linkBuilder.setFile("/bbb");
131 			String link = linkBuilder.toLink(request);
132 			assertEquals("http://example.com/bbb", link);
133 		}
134 
135 		{
136 			LinkBuilder linkBuilder = new LinkBuilder();
137 			linkBuilder.setProtocol("http");
138 			linkBuilder.setPort(80);
139 			linkBuilder.setHost("example.com");
140 			linkBuilder.setFile("/bbb");
141 			String link = linkBuilder.toLink(request);
142 			assertEquals("http://example.com/bbb", link);
143 		}
144 
145 		{
146 			LinkBuilder linkBuilder = new LinkBuilder();
147 			linkBuilder.setProtocol("http");
148 			linkBuilder.setPort(8080);
149 			linkBuilder.setHost("example.com");
150 			linkBuilder.setFile("/bbb");
151 			String link = linkBuilder.toLink(request);
152 			assertEquals("/bbb", link);
153 		}
154 
155 		{
156 			LinkBuilder linkBuilder = new LinkBuilder();
157 			linkBuilder.setProtocol("https");
158 			linkBuilder.setPort(-1);
159 			linkBuilder.setHost("example.com");
160 			linkBuilder.setFile("/bbb");
161 			String link = linkBuilder.toLink(request);
162 			assertEquals("https://example.com/bbb", link);
163 		}
164 
165 		{
166 			LinkBuilder linkBuilder = new LinkBuilder();
167 			linkBuilder.setProtocol("https");
168 			linkBuilder.setPort(443);
169 			linkBuilder.setHost("example.com");
170 			linkBuilder.setFile("/bbb");
171 			String link = linkBuilder.toLink(request);
172 			assertEquals("https://example.com/bbb", link);
173 		}
174 
175 		{
176 			LinkBuilder linkBuilder = new LinkBuilder();
177 			linkBuilder.setProtocol("https");
178 			linkBuilder.setPort(8443);
179 			linkBuilder.setHost("example.com");
180 			linkBuilder.setFile("/bbb");
181 			String link = linkBuilder.toLink(request);
182 			assertEquals("https://example.com:8443/bbb", link);
183 		}
184 
185 		verify(request);
186 	}
187 
188 }