Skip to content

Commit 42f303f

Browse files
raupach-e2nfpapon
authored andcommitted
Test cases with EasyMock
1 parent 434c86b commit 42f303f

File tree

2 files changed

+64
-27
lines changed

2 files changed

+64
-27
lines changed

web/src/main/java/org/apache/shiro/web/filter/authz/SslFilter.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -112,11 +112,11 @@ protected boolean isAccessAllowed(ServletRequest request, ServletResponse respon
112112
*/
113113
@Override
114114
protected void postHandle(ServletRequest request, ServletResponse response) {
115-
if (hsts.enabled) {
115+
if (hsts.isEnabled()) {
116116
StringBuilder directives = new StringBuilder(64)
117117
.append("max-age=").append(hsts.getMaxAge());
118118

119-
if (hsts.includeSubDomains) {
119+
if (hsts.isIncludeSubDomains()) {
120120
directives.append("; includeSubDomains");
121121
}
122122

@@ -130,17 +130,18 @@ protected void postHandle(ServletRequest request, ServletResponse response) {
130130
*/
131131
public class HSTS {
132132

133+
public static final String HTTP_HEADER = "Strict-Transport-Security";
134+
133135
public static final boolean DEFAULT_ENABLED = false;
134136
public static final int DEFAULT_MAX_AGE = 31536000; // approx. one year in seconds
135137
public static final boolean DEFAULT_INCLUDE_SUB_DOMAINS = false;
136138

137-
public static final String HTTP_HEADER = "Strict-Transport-Security";
138-
139139
private boolean enabled;
140140
private int maxAge;
141141
private boolean includeSubDomains;
142142

143143
public HSTS() {
144+
this.enabled = DEFAULT_ENABLED;
144145
this.maxAge = DEFAULT_MAX_AGE;
145146
this.includeSubDomains = DEFAULT_INCLUDE_SUB_DOMAINS;
146147
}

web/src/test/java/org/apache/shiro/web/filter/authz/SslFilterTest.java

Lines changed: 59 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -18,49 +18,85 @@
1818
*/
1919
package org.apache.shiro.web.filter.authz;
2020

21+
import java.util.HashMap;
22+
import java.util.Map;
2123
import javax.servlet.http.HttpServletRequest;
2224
import javax.servlet.http.HttpServletResponse;
2325
import org.junit.Test;
2426

2527
import static org.apache.shiro.web.filter.authz.SslFilter.HSTS.*;
28+
import org.easymock.Capture;
29+
import org.easymock.CaptureType;
2630
import static org.easymock.EasyMock.*;
31+
import org.easymock.IAnswer;
2732
import static org.junit.Assert.*;
33+
import org.junit.Before;
2834

2935
public class SslFilterTest {
36+
37+
private HttpServletRequest request;
38+
private HttpServletResponse response;
39+
private SslFilter sslFilter;
40+
41+
@Before
42+
public void before() {
43+
request = createNiceMock(HttpServletRequest.class);
44+
response = createNiceMock(HttpServletResponse.class);
45+
sslFilter = new SslFilter();
46+
47+
final Map<String,String> headers = new HashMap<String,String>();
48+
49+
final Capture<String> capturedName = newCapture();
50+
final Capture<String> capturedValue = newCapture();
51+
52+
// mock HttpServletResponse.getHeader
53+
expect(response.getHeader(capture(capturedName))).andAnswer(new IAnswer<String>() {
54+
@Override
55+
public String answer() throws Throwable {
56+
String name = capturedName.getValue();
57+
return headers.get(name);
58+
}
59+
60+
});
61+
62+
// mock HttpServletResponse.addHeader
63+
response.addHeader(capture(capturedName), capture(capturedValue));
64+
expectLastCall().andAnswer(new IAnswer<Void>() {
65+
@Override
66+
public Void answer() throws Throwable {
67+
String name = capturedName.getValue();
68+
String value = capturedValue.getValue();
69+
headers.put(name, value);
70+
return (null);
71+
}
72+
});
73+
74+
replay(response);
75+
}
3076

3177
@Test
3278
public void testDisabledByDefault() {
33-
HttpServletRequest request = createNiceMock(HttpServletRequest.class);
34-
HttpServletResponse response = createNiceMock(HttpServletResponse.class);
35-
36-
SslFilter sslFilter = new SslFilter();
37-
3879
sslFilter.postHandle(request, response);
3980
assertNull(response.getHeader(HTTP_HEADER));
4081
}
4182

4283
@Test
4384
public void testDefaultValues() {
44-
HttpServletRequest request = createNiceMock(HttpServletRequest.class);
45-
HttpServletResponse response = createNiceMock(HttpServletResponse.class);
46-
47-
// String expected = new StringBuilder()
48-
// .append(HTTP_HEADER)
49-
// .append(": ")
50-
// .append("max-age=")
51-
// .append(DEFAULT_MAX_AGE)
52-
// .toString();
53-
// expect(response.addHeader(expected, expected))
54-
// .andReturn(expected)
55-
// .anyTimes();
56-
replay(response);
57-
//
58-
SslFilter sslFilter = new SslFilter();
5985
sslFilter.getHsts().setEnabled(true);
60-
6186
sslFilter.postHandle(request, response);
62-
63-
//assertEquals(expected, response.getHeader(HTTP_HEADER));
87+
assertEquals("max-age=" + DEFAULT_MAX_AGE, response.getHeader(HTTP_HEADER));
6488
}
89+
90+
@Test
91+
public void testSetProperties() {
92+
sslFilter.getHsts().setEnabled(true);
93+
sslFilter.getHsts().setMaxAge(7776000);
94+
sslFilter.getHsts().setIncludeSubDomains(true);
95+
sslFilter.postHandle(request, response);
96+
97+
String expected = "max-age=" + 7776000 + "; includeSubDomains";
6598

99+
assertEquals(expected, response.getHeader(HTTP_HEADER));
100+
}
101+
66102
}

0 commit comments

Comments
 (0)