Skip to content

Commit 1556282

Browse files
authored
Merge pull request #901 from jeremiahjstacey/moar_tests
More tests
2 parents bc21afe + 92c99ea commit 1556282

18 files changed

Lines changed: 679 additions & 7 deletions

‎src/main/java/org/owasp/esapi/reference/accesscontrol/policyloader/ACRParameterLoaderHelper.java‎

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,14 @@
44

55
final public class ACRParameterLoaderHelper {
66

7+
protected static String DEFAULT_KEY_FORMAT = "AccessControlRules.AccessControlRule(%s).Parameters.Parameter(%s)[@value]";
8+
protected static String TIME_FORMAT = "h:mm a";
9+
10+
11+
private ACRParameterLoaderHelper() { /* NO-OP Utility Ctr.*/ }
12+
713
public static Object getParameterValue(XMLConfiguration config, int currentRule, int currentParameter, String parameterType) throws Exception {
8-
String key = "AccessControlRules.AccessControlRule(" +
9-
currentRule + ").Parameters.Parameter(" + currentParameter + ")[@value]";
14+
String key = String.format(DEFAULT_KEY_FORMAT, currentRule, currentParameter);
1015
Object parameterValue;
1116
if("String".equalsIgnoreCase(parameterType)) {
1217
parameterValue = config.getString(key);
@@ -31,7 +36,7 @@ public static Object getParameterValue(XMLConfiguration config, int currentRule,
3136
} else if("Date".equalsIgnoreCase(parameterType)){
3237
parameterValue = java.text.DateFormat.getDateInstance().parse(config.getString(key));
3338
} else if("Time".equalsIgnoreCase(parameterType)){
34-
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("h:mm a");
39+
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(TIME_FORMAT);
3540
parameterValue = sdf.parseObject(config.getString(key));
3641
// parameterValue = java.text.DateFormat.getTimeInstance().parse(config.getString(key));
3742
}

‎src/main/java/org/owasp/esapi/waf/actions/DoNothingAction.java‎

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,6 @@
2222
*/
2323
public class DoNothingAction extends Action {
2424

25-
public boolean failedRule() {
26-
return this.failed;
27-
}
28-
2925

3026
public boolean isActionNecessary() {
3127
return false;
Lines changed: 262 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,262 @@
1+
package org.owasp.esapi.reference.accesscontrol.policyloader;
2+
3+
import static org.junit.Assert.assertEquals;
4+
import static org.mockito.ArgumentMatchers.eq;
5+
6+
import java.math.BigDecimal;
7+
import java.math.BigInteger;
8+
import java.util.Date;
9+
import java.util.Random;
10+
11+
import org.apache.commons.configuration.XMLConfiguration;
12+
import org.junit.Assert;
13+
import org.junit.Before;
14+
import org.junit.Test;
15+
import org.mockito.Mockito;
16+
17+
18+
public class ACRParameterLoaderHelperTest {
19+
20+
21+
XMLConfiguration config = Mockito.spy(XMLConfiguration.class);
22+
23+
private String randomTestKey;
24+
private int randomRuleIndex;
25+
private int randomParameterIndex;
26+
27+
@Before
28+
public void buildUniqueKey () {
29+
// Assembling a unique key each test verifies that the delegate calls are getting the expected values from the test calls.
30+
randomRuleIndex = Math.abs(new Random().nextInt() % 100);
31+
randomParameterIndex = Math.abs(new Random().nextInt() % 100);
32+
randomTestKey = String.format(ACRParameterLoaderHelper.DEFAULT_KEY_FORMAT, randomRuleIndex, randomParameterIndex);
33+
}
34+
35+
@Test (expected = IllegalArgumentException.class)
36+
public void testUnsupportedTypeThrowsException() throws Exception {
37+
ACRParameterLoaderHelper.getParameterValue(config, randomRuleIndex, randomParameterIndex, "Foo_to_the_Bar");
38+
}
39+
40+
@Test
41+
public void testStringParam_lowercaseType() throws Exception {
42+
Mockito.doReturn("unused").when(config).getString(eq(randomTestKey));
43+
Object response = ACRParameterLoaderHelper.getParameterValue(config, randomRuleIndex, randomParameterIndex, "string".toLowerCase());
44+
45+
// I don't really care what the response is here;
46+
// I care that the delegate class was called as expected with the generated string key.
47+
Mockito.verify(config, Mockito.times(1)).getString(randomTestKey);
48+
Assert.assertEquals(String.class, response.getClass());
49+
Assert.assertEquals("unused", response);
50+
}
51+
52+
@Test
53+
public void testStringArrayParam_lowercaseType() throws Exception {
54+
Mockito.doReturn(new String[0]).when(config).getStringArray(eq(randomTestKey));
55+
// Mockito.when(config.getStringArray(eq(randomTestKey))).thenReturn();
56+
Object response = ACRParameterLoaderHelper.getParameterValue(config, randomRuleIndex, randomParameterIndex, "stringarray".toLowerCase());
57+
Mockito.verify(config, Mockito.times(1)).getStringArray(randomTestKey);
58+
Assert.assertEquals(String[].class, response.getClass());
59+
}
60+
61+
@Test
62+
public void testBooleanParam_lowercaseType() throws Exception {
63+
Mockito.doReturn(Boolean.TRUE).when(config).getBoolean(eq(randomTestKey));
64+
// Mockito.when(config.getBoolean(eq(randomTestKey))).thenReturn(Boolean.TRUE);
65+
Object response = ACRParameterLoaderHelper.getParameterValue(config, randomRuleIndex, randomParameterIndex, "boolean".toLowerCase());
66+
Mockito.verify(config, Mockito.times(1)).getBoolean(randomTestKey);
67+
Assert.assertEquals(Boolean.class, response.getClass());
68+
}
69+
70+
@Test
71+
public void testByteParam_lowercaseType() throws Exception {
72+
Mockito.doReturn( (byte)0 ).when(config).getByte( eq(randomTestKey) );
73+
Object response = ACRParameterLoaderHelper.getParameterValue(config, randomRuleIndex, randomParameterIndex, "byte".toLowerCase());
74+
Mockito.verify(config, Mockito.times(1)).getByte(randomTestKey);
75+
Assert.assertEquals(Byte.class, response.getClass());
76+
}
77+
78+
@Test
79+
public void testIntParam_lowercaseType() throws Exception {
80+
Mockito.doReturn(0).when(config).getInt(eq(randomTestKey));
81+
// Mockito.when(config.getInt(eq(randomTestKey))).thenReturn(0);
82+
Object response = ACRParameterLoaderHelper.getParameterValue(config, randomRuleIndex, randomParameterIndex, "int".toLowerCase());
83+
Mockito.verify(config, Mockito.times(1)).getInt(randomTestKey);
84+
Assert.assertEquals(Integer.class, response.getClass());
85+
}
86+
87+
@Test
88+
public void testLongParam_lowercaseType() throws Exception {
89+
Mockito.doReturn(0L).when(config).getLong(eq(randomTestKey));
90+
// Mockito.when(config.getLong(eq(randomTestKey))).thenReturn(0L);
91+
Object response = ACRParameterLoaderHelper.getParameterValue(config, randomRuleIndex, randomParameterIndex, "long".toLowerCase());
92+
Mockito.verify(config, Mockito.times(1)).getLong(randomTestKey);
93+
Assert.assertEquals(Long.class, response.getClass());
94+
}
95+
96+
@Test
97+
public void testFloatParam_lowercaseType() throws Exception {
98+
Mockito.doReturn((float) 0).when(config).getFloat(eq(randomTestKey));
99+
Object response = ACRParameterLoaderHelper.getParameterValue(config, randomRuleIndex, randomParameterIndex, "float".toLowerCase());
100+
Mockito.verify(config, Mockito.times(1)).getFloat(randomTestKey);
101+
Assert.assertEquals(Float.class, response.getClass());
102+
}
103+
104+
@Test
105+
public void testDoubleParam_lowercaseType() throws Exception {
106+
Mockito.doReturn(0d).when(config).getDouble(eq(randomTestKey));
107+
// Mockito.when(config.getDouble(eq(randomTestKey))).thenReturn(0d);
108+
Object response = ACRParameterLoaderHelper.getParameterValue(config, randomRuleIndex, randomParameterIndex, "double".toLowerCase());
109+
Mockito.verify(config, Mockito.times(1)).getDouble(randomTestKey);
110+
Assert.assertEquals(Double.class, response.getClass());
111+
}
112+
113+
114+
@Test
115+
public void testBigDecimalParam_lowercaseType() throws Exception {
116+
Mockito.doReturn(new BigDecimal(0)).when(config).getBigDecimal(eq(randomTestKey));
117+
// Mockito.when(config.getBigDecimal(eq(randomTestKey))).thenReturn();
118+
Object response = ACRParameterLoaderHelper.getParameterValue(config, randomRuleIndex, randomParameterIndex, "bigdecimal".toLowerCase());
119+
Mockito.verify(config, Mockito.times(1)).getBigDecimal(randomTestKey);
120+
Assert.assertEquals(BigDecimal.class, response.getClass());
121+
}
122+
123+
@Test
124+
public void testBigIntegerParam_lowercaseType() throws Exception {
125+
Mockito.doReturn(new BigInteger("0")).when(config).getBigInteger(eq(randomTestKey));
126+
// Mockito.when(config.getBigInteger(eq(randomTestKey))).thenReturn();
127+
Object response = ACRParameterLoaderHelper.getParameterValue(config, randomRuleIndex, randomParameterIndex, "biginteger".toLowerCase());
128+
Mockito.verify(config, Mockito.times(1)).getBigInteger(randomTestKey);
129+
Assert.assertEquals(BigInteger.class, response.getClass());
130+
}
131+
132+
@Test
133+
public void testDateParam_lowercaseType() throws Exception {
134+
String adate = java.text.DateFormat.getDateInstance().format(new Date());
135+
Mockito.doReturn(adate).when(config).getString(eq(randomTestKey));
136+
Object response = ACRParameterLoaderHelper.getParameterValue(config, randomRuleIndex, randomParameterIndex, "date".toLowerCase());
137+
Mockito.verify(config, Mockito.times(1)).getString(randomTestKey);
138+
Assert.assertEquals(Date.class, response.getClass());
139+
}
140+
141+
@Test
142+
public void testTimeParam_lowercaseType() throws Exception {
143+
String atime = new java.text.SimpleDateFormat(ACRParameterLoaderHelper.TIME_FORMAT).format(new Date());
144+
Mockito.doReturn(atime).when(config).getString(eq(randomTestKey));
145+
Object response = ACRParameterLoaderHelper.getParameterValue(config, randomRuleIndex, randomParameterIndex, "time".toLowerCase());
146+
Mockito.verify(config, Mockito.times(1)).getString(randomTestKey);
147+
Assert.assertEquals(Date.class, response.getClass());
148+
}
149+
150+
151+
152+
@Test
153+
public void testStringParam_uppercaseType() throws Exception {
154+
Mockito.doReturn("unused").when(config).getString(eq(randomTestKey));
155+
Object response = ACRParameterLoaderHelper.getParameterValue(config, randomRuleIndex, randomParameterIndex, "string".toUpperCase());
156+
157+
// I don't really care what the response is here;
158+
// I care that the delegate class was called as expected with the generated string key.
159+
Mockito.verify(config, Mockito.times(1)).getString(randomTestKey);
160+
Assert.assertEquals(String.class, response.getClass());
161+
Assert.assertEquals("unused", response);
162+
}
163+
164+
@Test
165+
public void testStringArrayParam_uppercaseType() throws Exception {
166+
Mockito.doReturn(new String[0]).when(config).getStringArray(eq(randomTestKey));
167+
// Mockito.when(config.getStringArray(eq(randomTestKey))).thenReturn();
168+
Object response = ACRParameterLoaderHelper.getParameterValue(config, randomRuleIndex, randomParameterIndex, "stringarray".toUpperCase());
169+
Mockito.verify(config, Mockito.times(1)).getStringArray(randomTestKey);
170+
Assert.assertEquals(String[].class, response.getClass());
171+
}
172+
173+
@Test
174+
public void testBooleanParam_uppercaseType() throws Exception {
175+
Mockito.doReturn(Boolean.TRUE).when(config).getBoolean(eq(randomTestKey));
176+
// Mockito.when(config.getBoolean(eq(randomTestKey))).thenReturn(Boolean.TRUE);
177+
Object response = ACRParameterLoaderHelper.getParameterValue(config, randomRuleIndex, randomParameterIndex, "boolean".toUpperCase());
178+
Mockito.verify(config, Mockito.times(1)).getBoolean(randomTestKey);
179+
Assert.assertEquals(Boolean.class, response.getClass());
180+
}
181+
182+
@Test
183+
public void testByteParam_uppercaseType() throws Exception {
184+
Mockito.doReturn( (byte)0 ).when(config).getByte( eq(randomTestKey) );
185+
Object response = ACRParameterLoaderHelper.getParameterValue(config, randomRuleIndex, randomParameterIndex, "byte".toUpperCase());
186+
Mockito.verify(config, Mockito.times(1)).getByte(randomTestKey);
187+
Assert.assertEquals(Byte.class, response.getClass());
188+
}
189+
190+
@Test
191+
public void testIntParam_uppercaseType() throws Exception {
192+
Mockito.doReturn(0).when(config).getInt(eq(randomTestKey));
193+
// Mockito.when(config.getInt(eq(randomTestKey))).thenReturn(0);
194+
Object response = ACRParameterLoaderHelper.getParameterValue(config, randomRuleIndex, randomParameterIndex, "int".toUpperCase());
195+
Mockito.verify(config, Mockito.times(1)).getInt(randomTestKey);
196+
Assert.assertEquals(Integer.class, response.getClass());
197+
}
198+
199+
@Test
200+
public void testLongParam_uppercaseType() throws Exception {
201+
Mockito.doReturn(0L).when(config).getLong(eq(randomTestKey));
202+
// Mockito.when(config.getLong(eq(randomTestKey))).thenReturn(0L);
203+
Object response = ACRParameterLoaderHelper.getParameterValue(config, randomRuleIndex, randomParameterIndex, "long".toUpperCase());
204+
Mockito.verify(config, Mockito.times(1)).getLong(randomTestKey);
205+
Assert.assertEquals(Long.class, response.getClass());
206+
}
207+
208+
@Test
209+
public void testFloatParam_uppercaseType() throws Exception {
210+
Mockito.doReturn((float) 0).when(config).getFloat(eq(randomTestKey));
211+
Object response = ACRParameterLoaderHelper.getParameterValue(config, randomRuleIndex, randomParameterIndex, "float".toUpperCase());
212+
Mockito.verify(config, Mockito.times(1)).getFloat(randomTestKey);
213+
Assert.assertEquals(Float.class, response.getClass());
214+
}
215+
216+
@Test
217+
public void testDoubleParam_uppercaseType() throws Exception {
218+
Mockito.doReturn(0d).when(config).getDouble(eq(randomTestKey));
219+
// Mockito.when(config.getDouble(eq(randomTestKey))).thenReturn(0d);
220+
Object response = ACRParameterLoaderHelper.getParameterValue(config, randomRuleIndex, randomParameterIndex, "double".toUpperCase());
221+
Mockito.verify(config, Mockito.times(1)).getDouble(randomTestKey);
222+
Assert.assertEquals(Double.class, response.getClass());
223+
}
224+
225+
226+
@Test
227+
public void testBigDecimalParam_uppercaseType() throws Exception {
228+
Mockito.doReturn(new BigDecimal(0)).when(config).getBigDecimal(eq(randomTestKey));
229+
// Mockito.when(config.getBigDecimal(eq(randomTestKey))).thenReturn();
230+
Object response = ACRParameterLoaderHelper.getParameterValue(config, randomRuleIndex, randomParameterIndex, "bigdecimal".toUpperCase());
231+
Mockito.verify(config, Mockito.times(1)).getBigDecimal(randomTestKey);
232+
Assert.assertEquals(BigDecimal.class, response.getClass());
233+
}
234+
235+
@Test
236+
public void testBigIntegerParam_uppercaseType() throws Exception {
237+
Mockito.doReturn(new BigInteger("0")).when(config).getBigInteger(eq(randomTestKey));
238+
// Mockito.when(config.getBigInteger(eq(randomTestKey))).thenReturn();
239+
Object response = ACRParameterLoaderHelper.getParameterValue(config, randomRuleIndex, randomParameterIndex, "biginteger".toUpperCase());
240+
Mockito.verify(config, Mockito.times(1)).getBigInteger(randomTestKey);
241+
Assert.assertEquals(BigInteger.class, response.getClass());
242+
}
243+
244+
@Test
245+
public void testDateParam_uppercaseType() throws Exception {
246+
String adate = java.text.DateFormat.getDateInstance().format(new Date());
247+
Mockito.doReturn(adate).when(config).getString(eq(randomTestKey));
248+
Object response = ACRParameterLoaderHelper.getParameterValue(config, randomRuleIndex, randomParameterIndex, "date".toUpperCase());
249+
Mockito.verify(config, Mockito.times(1)).getString(randomTestKey);
250+
Assert.assertEquals(Date.class, response.getClass());
251+
}
252+
253+
@Test
254+
public void testTimeParam_uppercaseType() throws Exception {
255+
String atime = new java.text.SimpleDateFormat(ACRParameterLoaderHelper.TIME_FORMAT).format(new Date());
256+
Mockito.doReturn(atime).when(config).getString(eq(randomTestKey));
257+
Object response = ACRParameterLoaderHelper.getParameterValue(config, randomRuleIndex, randomParameterIndex, "time".toUpperCase());
258+
Mockito.verify(config, Mockito.times(1)).getString(randomTestKey);
259+
Assert.assertEquals(Date.class, response.getClass());
260+
}
261+
262+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package org.owasp.esapi.tags;
2+
3+
import static org.junit.Assert.assertEquals;
4+
import static org.junit.Assert.assertFalse;
5+
import static org.junit.Assert.assertTrue;
6+
7+
import java.io.UnsupportedEncodingException;
8+
9+
import javax.servlet.jsp.JspTagException;
10+
11+
import org.junit.Test;
12+
import org.mockito.Mockito;
13+
import org.owasp.esapi.Encoder;
14+
15+
public class EncodeForBase64TagTest {
16+
17+
18+
Encoder encoder = Mockito.spy(Encoder.class);
19+
20+
21+
@Test
22+
public void assertEncoderInvocation() throws Exception {
23+
String input = "Magic String";
24+
EncodeForBase64Tag uit = new EncodeForBase64Tag();
25+
Mockito.when(encoder.encodeForBase64(input.getBytes("UTF-8"), false)).thenReturn("unused");
26+
27+
uit.encode(input, encoder);
28+
Mockito.verify(encoder, Mockito.times(1)).encodeForBase64(input.getBytes("UTF-8"), false);
29+
30+
}
31+
32+
@Test
33+
public void testSettersGetters() {
34+
EncodeForBase64Tag uit = new EncodeForBase64Tag();
35+
assertEquals("UTF-8", uit.getEncoding());
36+
assertFalse(uit.getWrap());
37+
38+
uit.setWrap(true);
39+
uit.setEncoding("ASCII");
40+
41+
assertEquals("ASCII", uit.getEncoding());
42+
assertTrue(uit.getWrap());
43+
}
44+
45+
@Test (expected = JspTagException.class)
46+
public void assertExceptionOnEncodingFalure() throws Exception {
47+
String input = "Magic String";
48+
EncodeForBase64Tag uit = new EncodeForBase64Tag();
49+
Mockito.when(encoder.encodeForBase64(input.getBytes("UTF-8"), false)).thenAnswer(i -> { throw new UnsupportedEncodingException();});
50+
uit.encode(input, encoder);
51+
}
52+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package org.owasp.esapi.tags;
2+
3+
import org.junit.Test;
4+
import org.mockito.Mockito;
5+
import org.owasp.esapi.Encoder;
6+
7+
public class EncodeForCSSTagTest2 {
8+
9+
10+
Encoder encoder = Mockito.spy(Encoder.class);
11+
12+
13+
@Test
14+
public void assertEncoderInvocation() {
15+
String input = "Magic String";
16+
EncodeForCSSTag uit = new EncodeForCSSTag();
17+
Mockito.when(encoder.encodeForCSS(input)).thenReturn("unused");
18+
19+
uit.encode(input, encoder);
20+
Mockito.verify(encoder, Mockito.times(1)).encodeForCSS(input);
21+
22+
}
23+
}

0 commit comments

Comments
 (0)