Skip to content

Commit 27e62f9

Browse files
Java Log Bridge Impl Tests
Copying slf4J and updating references as needed
1 parent ced5677 commit 27e62f9

File tree

1 file changed

+156
-0
lines changed

1 file changed

+156
-0
lines changed
Lines changed: 156 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,156 @@
1+
/**
2+
* OWASP Enterprise Security API (ESAPI)
3+
*
4+
* This file is part of the Open Web Application Security Project (OWASP)
5+
* Enterprise Security API (ESAPI) project. For details, please see
6+
* <a href="http://www.owasp.org/index.php/ESAPI">http://www.owasp.org/index.php/ESAPI</a>.
7+
*
8+
* Copyright (c) 2007 - The OWASP Foundation
9+
*
10+
* The ESAPI is published by OWASP under the BSD license. You should read and accept the
11+
* LICENSE before you use, modify, and/or redistribute this software.
12+
*
13+
* @created 2018
14+
*/
15+
package org.owasp.esapi.logging.java;
16+
17+
import java.util.Collections;
18+
import java.util.HashMap;
19+
import java.util.Map;
20+
21+
import org.junit.Before;
22+
import org.junit.Rule;
23+
import org.junit.Test;
24+
import org.junit.rules.ExpectedException;
25+
import org.junit.rules.TestName;
26+
import org.mockito.ArgumentMatchers;
27+
import org.mockito.Mockito;
28+
import org.owasp.esapi.Logger;
29+
import org.owasp.esapi.Logger.EventType;
30+
import org.owasp.esapi.logging.appender.LogAppender;
31+
import org.owasp.esapi.logging.cleaning.LogScrubber;
32+
33+
public class JavaLogBridgeImplTest {
34+
35+
@Rule
36+
public TestName testName = new TestName();
37+
@Rule
38+
public ExpectedException exEx = ExpectedException.none();
39+
40+
private LogScrubber mockScrubber = Mockito.mock(LogScrubber.class);
41+
private LogAppender mockAppender = Mockito.mock(LogAppender.class);
42+
private JavaLogLevelHandler mockHandler = Mockito.mock(JavaLogLevelHandler.class);
43+
private java.util.logging.Logger javaLogSpy;
44+
private Throwable testEx = new Throwable(testName.getMethodName());
45+
private JavaLogBridge bridge;
46+
47+
@Before
48+
public void setup() {
49+
Map<Integer, JavaLogLevelHandler> levelLookup = new HashMap<>();
50+
levelLookup.put(Logger.ALL, mockHandler);
51+
52+
java.util.logging.Logger wrappedLogger = java.util.logging.Logger.getLogger(testName.getMethodName());
53+
javaLogSpy = Mockito.spy(wrappedLogger);
54+
bridge = new JavaLogBridgeImpl(mockAppender, mockScrubber, levelLookup);
55+
}
56+
57+
@Test
58+
public void testLogMessageWithUnmappedEsapiLevelThrowsException() {
59+
exEx.expect(IllegalArgumentException.class);
60+
exEx.expectMessage("Unable to lookup Java level mapping");
61+
Map<Integer, JavaLogLevelHandler> emptyMap = Collections.emptyMap();
62+
new JavaLogBridgeImpl(mockAppender, mockScrubber, emptyMap).log(javaLogSpy, 0, Logger.EVENT_UNSPECIFIED, "This Should fail");
63+
}
64+
65+
@Test
66+
public void testLogMessageAndExceptionWithUnmappedEsapiLevelThrowsException() {
67+
exEx.expect(IllegalArgumentException.class);
68+
exEx.expectMessage("Unable to lookup Java level mapping");
69+
Map<Integer, JavaLogLevelHandler> emptyMap = Collections.emptyMap();
70+
new JavaLogBridgeImpl(mockAppender, mockScrubber, emptyMap).log(javaLogSpy, 0, Logger.EVENT_UNSPECIFIED, "This Should fail", testEx);
71+
}
72+
73+
@Test
74+
public void testLogMessage() {
75+
EventType eventType = Logger.EVENT_UNSPECIFIED;
76+
String loggerName = testName.getMethodName() + "-LOGGER";
77+
String orignMsg = testName.getMethodName();
78+
String appendMsg = "[APPEND] " + orignMsg;
79+
String cleanMsg = appendMsg + " [CLEANED]";
80+
81+
//Setup for Appender
82+
Mockito.when(javaLogSpy.getName()).thenReturn(loggerName);
83+
Mockito.when(mockAppender.appendTo(loggerName, eventType, orignMsg)).thenReturn(appendMsg);
84+
//Setup for Scrubber
85+
Mockito.when(mockScrubber.cleanMessage(appendMsg)).thenReturn(cleanMsg);
86+
//Setup for Delegate Handler
87+
Mockito.when(mockHandler.isEnabled(javaLogSpy)).thenReturn(true);
88+
89+
bridge.log(javaLogSpy, Logger.ALL, eventType, testName.getMethodName());
90+
91+
Mockito.verify(javaLogSpy, Mockito.atLeastOnce()).getName();
92+
Mockito.verify(mockAppender, Mockito.times(1)).appendTo(loggerName, eventType, testName.getMethodName());
93+
Mockito.verify(mockScrubber, Mockito.times(1)).cleanMessage(appendMsg);
94+
Mockito.verify(mockHandler, Mockito.times(1)).isEnabled(javaLogSpy);
95+
Mockito.verify(mockHandler, Mockito.times(0)).log(ArgumentMatchers.any(java.util.logging.Logger.class), ArgumentMatchers.any(String.class), ArgumentMatchers.any(Throwable.class));
96+
Mockito.verify(mockHandler, Mockito.times(1)).log(ArgumentMatchers.same(javaLogSpy), ArgumentMatchers.eq(cleanMsg));
97+
98+
Mockito.verifyNoMoreInteractions(javaLogSpy, mockAppender, mockScrubber,mockHandler);
99+
}
100+
101+
@Test
102+
public void testLogErrorMessageWithException() {
103+
EventType eventType = Logger.EVENT_UNSPECIFIED;
104+
String loggerName = testName.getMethodName() + "-LOGGER";
105+
String orignMsg = testName.getMethodName();
106+
String appendMsg = "[APPEND] " + orignMsg;
107+
String cleanMsg = appendMsg + " [CLEANED]";
108+
109+
//Setup for Appender
110+
Mockito.when(javaLogSpy.getName()).thenReturn(loggerName);
111+
Mockito.when(mockAppender.appendTo(loggerName, eventType, orignMsg)).thenReturn(appendMsg);
112+
//Setup for Scrubber
113+
Mockito.when(mockScrubber.cleanMessage(appendMsg)).thenReturn(cleanMsg);
114+
//Setup for Delegate Handler
115+
Mockito.when(mockHandler.isEnabled(javaLogSpy)).thenReturn(true);
116+
117+
bridge.log(javaLogSpy, Logger.ALL, eventType, testName.getMethodName(), testEx);
118+
119+
Mockito.verify(javaLogSpy, Mockito.atLeastOnce()).getName();
120+
Mockito.verify(mockAppender, Mockito.times(1)).appendTo(loggerName, eventType, testName.getMethodName());
121+
Mockito.verify(mockScrubber, Mockito.times(1)).cleanMessage(appendMsg);
122+
Mockito.verify(mockHandler, Mockito.times(1)).isEnabled(javaLogSpy);
123+
Mockito.verify(mockHandler, Mockito.times(0)).log(ArgumentMatchers.any(java.util.logging.Logger.class), ArgumentMatchers.any(String.class));
124+
125+
Mockito.verify(mockHandler, Mockito.times(1)).log(ArgumentMatchers.same(javaLogSpy), ArgumentMatchers.eq(cleanMsg), ArgumentMatchers.same(testEx));
126+
127+
Mockito.verifyNoMoreInteractions(javaLogSpy, mockAppender, mockScrubber,mockHandler);
128+
}
129+
130+
131+
@Test
132+
public void testDisabledLogMessage() {
133+
Mockito.when(mockHandler.isEnabled(javaLogSpy)).thenReturn(false);
134+
135+
bridge.log(javaLogSpy, Logger.ALL, Logger.EVENT_UNSPECIFIED, testName.getMethodName());
136+
137+
Mockito.verify(mockHandler, Mockito.times(1)).isEnabled(javaLogSpy);
138+
Mockito.verify(mockScrubber, Mockito.times(0)).cleanMessage(ArgumentMatchers.anyString());
139+
Mockito.verify(mockHandler, Mockito.times(0)).log(ArgumentMatchers.any(java.util.logging.Logger.class), ArgumentMatchers.any(String.class));
140+
Mockito.verify(mockHandler, Mockito.times(0)).log(ArgumentMatchers.any(java.util.logging.Logger.class), ArgumentMatchers.any(String.class), ArgumentMatchers.any(Throwable.class));
141+
}
142+
143+
@Test
144+
public void testDisabledErrorLogWithException() {
145+
Mockito.when(mockHandler.isEnabled(javaLogSpy)).thenReturn(false);
146+
147+
bridge.log(javaLogSpy, Logger.ALL, Logger.EVENT_UNSPECIFIED, testName.getMethodName(), testEx);
148+
149+
Mockito.verify(mockHandler, Mockito.times(1)).isEnabled(javaLogSpy);
150+
Mockito.verify(mockScrubber, Mockito.times(0)).cleanMessage(ArgumentMatchers.anyString());
151+
Mockito.verify(mockHandler, Mockito.times(0)).log(ArgumentMatchers.any(java.util.logging.Logger.class), ArgumentMatchers.any(String.class));
152+
Mockito.verify(mockHandler, Mockito.times(0)).log(ArgumentMatchers.any(java.util.logging.Logger.class), ArgumentMatchers.any(String.class), ArgumentMatchers.any(Throwable.class));
153+
154+
}
155+
156+
}

0 commit comments

Comments
 (0)