Skip to content

Commit

Permalink
Add logging for origin and referer to 4xx warnings
Browse files Browse the repository at this point in the history
  • Loading branch information
cYKatherine committed May 27, 2024
1 parent d1e33b7 commit ae89936
Show file tree
Hide file tree
Showing 3 changed files with 102 additions and 2 deletions.
15 changes: 13 additions & 2 deletions src/main/java/com/uid2/operator/service/ResponseUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -152,15 +152,26 @@ private static void logError(String errorStatus, int statusCode, String message,
}

private static void logWarning(String status, int statusCode, String message, RoutingContextReader contextReader, String clientAddress) {
String warnMessage = "Warning response to http request. " + JsonObject.of(
JsonObject warnMessageJsonObject = JsonObject.of(
"errorStatus", status,
"contact", contextReader.getContact(),
"siteId", contextReader.getSiteId(),
"path", contextReader.getPath(),
"statusCode", statusCode,
"clientAddress", clientAddress,
"message", message
).encode();
);
final String referer = contextReader.getReferer();
final String origin = contextReader.getOrigin();
if (statusCode >= 400 && statusCode < 500) {
if (referer != null) {
warnMessageJsonObject.put("referer", referer);
}
if (origin != null) {
warnMessageJsonObject.put("origin", origin);
}
}
String warnMessage = "Warning response to http request. " + warnMessageJsonObject.encode();
LOGGER.warn(warnMessage);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,10 @@ public RoutingContextReader(RoutingContext context) {
this.context = context;
}

public String getOrigin() { return this.context.request().getHeader("origin"); }

public String getReferer() { return this.context.request().getHeader("referer"); }

public Integer getSiteId() {
final Integer siteId = context.get(Const.RoutingContextData.SiteId);
if (siteId != null) {
Expand Down
85 changes: 85 additions & 0 deletions src/test/java/com/uid2/operator/service/ResponseUtilTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import ch.qos.logback.core.read.ListAppender;
import com.uid2.shared.Const;
import com.uid2.shared.auth.IAuthorizable;
import io.vertx.core.http.HttpServerRequest;
import io.vertx.ext.web.RoutingContext;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
Expand All @@ -19,6 +20,7 @@ class ResponseUtilTest {
private Logger logger;
private ListAppender<ILoggingEvent> testAppender;
private RoutingContext rc;
private HttpServerRequest request;

@BeforeEach
void setUp() {
Expand All @@ -27,6 +29,7 @@ void setUp() {
testAppender.start();
logger.addAppender(testAppender);
rc = mock(RoutingContext.class, RETURNS_DEEP_STUBS);
request = mock(HttpServerRequest.class, RETURNS_DEEP_STUBS);
when(rc.get(SecureLinkValidatorService.SERVICE_LINK_NAME, "")).thenReturn("");
when(rc.get(SecureLinkValidatorService.SERVICE_NAME, "")).thenReturn("");
}
Expand Down Expand Up @@ -135,4 +138,86 @@ void logsErrorWithServiceAndServiceLinkNames() {
ILoggingEvent loggingEvent = testAppender.list.get(0);
assertThat(loggingEvent.getMessage()).isEqualTo(expected);
}

@Test
void logsWarningWithOrigin() {
when(request.getHeader("origin")).thenReturn("testOriginHeader");
when(rc.request()).thenReturn(request);

ResponseUtil.Warning("Some error status", 400, rc, "Some error message");

String expected = "Warning response to http request. {" +
"\"errorStatus\":\"Some error status\"," +
"\"contact\":null," +
"\"siteId\":null," +
"\"path\":null," +
"\"statusCode\":400," +
"\"clientAddress\":null," +
"\"message\":\"Some error message\"," +
"\"origin\":\"testOriginHeader\"" +
"}";
ILoggingEvent loggingEvent = testAppender.list.get(0);
assertThat(loggingEvent.getMessage()).isEqualTo(expected);
}

@Test
void logsWarningWithOriginNull() {
when(request.getHeader("origin")).thenReturn(null);
when(rc.request()).thenReturn(request);

ResponseUtil.Warning("Some error status", 400, rc, "Some error message");

String expected = "Warning response to http request. {" +
"\"errorStatus\":\"Some error status\"," +
"\"contact\":null," +
"\"siteId\":null," +
"\"path\":null," +
"\"statusCode\":400," +
"\"clientAddress\":null," +
"\"message\":\"Some error message\"" +
"}";
ILoggingEvent loggingEvent = testAppender.list.get(0);
assertThat(loggingEvent.getMessage()).isEqualTo(expected);
}

@Test
void logsWarningWithReferer() {
when(request.getHeader("referer")).thenReturn("testRefererHeader");
when(rc.request()).thenReturn(request);

ResponseUtil.Warning("Some error status", 400, rc, "Some error message");

String expected = "Warning response to http request. {" +
"\"errorStatus\":\"Some error status\"," +
"\"contact\":null," +
"\"siteId\":null," +
"\"path\":null," +
"\"statusCode\":400," +
"\"clientAddress\":null," +
"\"message\":\"Some error message\"," +
"\"referer\":\"testRefererHeader\"" +
"}";
ILoggingEvent loggingEvent = testAppender.list.get(0);
assertThat(loggingEvent.getMessage()).isEqualTo(expected);
}

@Test
void logsWarningWithRefererNull() {
when(request.getHeader("referer")).thenReturn(null);
when(rc.request()).thenReturn(request);

ResponseUtil.Warning("Some error status", 400, rc, "Some error message");

String expected = "Warning response to http request. {" +
"\"errorStatus\":\"Some error status\"," +
"\"contact\":null," +
"\"siteId\":null," +
"\"path\":null," +
"\"statusCode\":400," +
"\"clientAddress\":null," +
"\"message\":\"Some error message\"" +
"}";
ILoggingEvent loggingEvent = testAppender.list.get(0);
assertThat(loggingEvent.getMessage()).isEqualTo(expected);
}
}

0 comments on commit ae89936

Please sign in to comment.