Skip to content

Commit

Permalink
log more request details in debug cookie
Browse files Browse the repository at this point in the history
  • Loading branch information
frwiqueueit committed Dec 6, 2017
1 parent b9fcfa3 commit 22329f0
Show file tree
Hide file tree
Showing 3 changed files with 71 additions and 8 deletions.
14 changes: 14 additions & 0 deletions SDK/src/queueit/knownuserv3/sdk/KnownUser.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.time.Instant;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.Cookie;
Expand Down Expand Up @@ -44,6 +45,7 @@ public static RequestValidationResult validateRequestByIntegrationConfig(String
debugEntries.put("PureUrl", currentUrlWithoutQueueITToken);
debugEntries.put("QueueitToken", queueitToken);
debugEntries.put("OriginalUrl", getOriginalUrl(request));
logMoreRequestDetails(debugEntries, request);
}

if (Utils.isNullOrWhiteSpace(currentUrlWithoutQueueITToken)) {
Expand Down Expand Up @@ -142,6 +144,7 @@ private static RequestValidationResult cancelRequestByLocalConfig(
debugEntries.put("QueueitToken", queueitToken);
debugEntries.put("CancelConfig", cancelConfig != null ? cancelConfig.toString() : "NULL");
debugEntries.put("OriginalUrl", getOriginalUrl(request));
logMoreRequestDetails(debugEntries, request);
}

if (Utils.isNullOrWhiteSpace(targetUrl)) {
Expand Down Expand Up @@ -195,6 +198,7 @@ private static RequestValidationResult resolveQueueRequestByLocalConfig(
debugEntries.put("QueueitToken", queueitToken);
debugEntries.put("QueueConfig", queueConfig != null ? queueConfig.toString() : "NULL");
debugEntries.put("OriginalUrl", getOriginalUrl(request));
logMoreRequestDetails(debugEntries, request);
}

if (Utils.isNullOrWhiteSpace(customerId)) {
Expand Down Expand Up @@ -259,6 +263,16 @@ private static void setDebugCookie(Map<String, String> debugEntries, HttpServlet
cookieManager.setCookie(QueueITDebugKey, cookieValue, null, null);
}

private static void logMoreRequestDetails(Map<String, String> debugEntries, HttpServletRequest request) {
debugEntries.put("ServerUtcTime", Instant.now().toString());
debugEntries.put("RequestIP", request.getRemoteAddr());
debugEntries.put("RequestHttpHeader_Via", request.getHeader("via") != null ? request.getHeader("via") : "");
debugEntries.put("RequestHttpHeader_Forwarded", request.getHeader("forwarded") != null ? request.getHeader("forwarded") : "");
debugEntries.put("RequestHttpHeader_XForwardedFor", request.getHeader("x-forwarded-for") != null ? request.getHeader("x-forwarded-for") : "");
debugEntries.put("RequestHttpHeader_XForwardedHost", request.getHeader("x-forwarded-host") != null ? request.getHeader("x-forwarded-host") : "");
debugEntries.put("RequestHttpHeader_XForwardedProto", request.getHeader("x-forwarded-proto") != null ? request.getHeader("x-forwarded-proto") : "");
}

private static boolean getIsDebug(String queueitToken, String secretKey) throws Exception
{
QueueUrlParams qParams = QueueParameterHelper.extractQueueParams(queueitToken);
Expand Down
2 changes: 1 addition & 1 deletion SDK/src/queueit/knownuserv3/sdk/UserInQueueService.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ void extendQueueCookie(

class UserInQueueService implements IUserInQueueService {

public static final String SDK_VERSION = "3.3.0";
public static final String SDK_VERSION = "3.3.2";
private final IUserInQueueStateRepository _userInQueueStateRepository;

public UserInQueueService(
Expand Down
63 changes: 56 additions & 7 deletions SDK/test/queueit/knownuserv3/sdk/KnownUserTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,11 @@
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.security.Principal;
import java.time.Instant;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import javax.servlet.AsyncContext;
Expand Down Expand Up @@ -126,6 +128,12 @@ public void cancelRequestByLocalConfigDebugCookieLoggingTest() throws Exception

HttpServletRequestMock requestMock = new HttpServletRequestMock();
requestMock.RequestURL = "requestUrl";
requestMock.RemoteAddr = "80.35.35.34";
requestMock.Headers.put("via", "1.1 example.com");
requestMock.Headers.put("forwarded", "for=192.0.2.60;proto=http;by=203.0.113.43");
requestMock.Headers.put("x-forwarded-for", "129.78.138.66, 129.78.64.103");
requestMock.Headers.put("x-forwarded-host", "en.wikipedia.org:8080");
requestMock.Headers.put("x-forwarded-proto", "https");

HttpServletResponseMock responseMock = new HttpServletResponseMock();

Expand All @@ -134,8 +142,8 @@ public void cancelRequestByLocalConfigDebugCookieLoggingTest() throws Exception
String queueittoken = QueueITTokenGenerator.generateToken("eventId", secretKey);

KnownUser.cancelRequestByLocalConfig("url", queueittoken, cancelEventConfig, "customerId", requestMock, responseMock, secretKey);

// Assert
// Assert
assertTrue(responseMock.addedCookies.size() == 1);
assertTrue(responseMock.addedCookies.get(0).getName().equals(KnownUser.QueueITDebugKey));
String decodedCookieValue = URLDecoder.decode(responseMock.addedCookies.get(0).getValue(), "UTF-8");
Expand All @@ -146,6 +154,12 @@ public void cancelRequestByLocalConfigDebugCookieLoggingTest() throws Exception
assertTrue(decodedCookieValue.contains("&CookieDomain:cookiedomain"));
assertTrue(decodedCookieValue.contains("|QueueitToken=" + queueittoken));
assertTrue(decodedCookieValue.contains("|TargetUrl=url"));
assertTrue(decodedCookieValue.contains("|RequestIP=80.35.35.34"));
assertTrue(decodedCookieValue.contains("|RequestHttpHeader_Via=1.1 example.com"));
assertTrue(decodedCookieValue.contains("|RequestHttpHeader_Forwarded=for=192.0.2.60;proto=http;by=203.0.113.43"));
assertTrue(decodedCookieValue.contains("|RequestHttpHeader_XForwardedFor=129.78.138.66, 129.78.64.103"));
assertTrue(decodedCookieValue.contains("|RequestHttpHeader_XForwardedHost=en.wikipedia.org:8080"));
assertTrue(decodedCookieValue.contains("|RequestHttpHeader_XForwardedProto=https"));
}

@Test
Expand Down Expand Up @@ -531,6 +545,12 @@ public void resolveQueueRequestByLocalConfigDebugCookieLoggingTest() throws Exce

HttpServletRequestMock requestMock = new HttpServletRequestMock();
requestMock.RequestURL = "requestUrl";
requestMock.RemoteAddr = "80.35.35.34";
requestMock.Headers.put("via", "1.1 example.com");
requestMock.Headers.put("forwarded", "for=192.0.2.60;proto=http;by=203.0.113.43");
requestMock.Headers.put("x-forwarded-for", "129.78.138.66, 129.78.64.103");
requestMock.Headers.put("x-forwarded-host", "en.wikipedia.org:8080");
requestMock.Headers.put("x-forwarded-proto", "https");

HttpServletResponseMock responseMock = new HttpServletResponseMock();

Expand All @@ -555,6 +575,12 @@ public void resolveQueueRequestByLocalConfigDebugCookieLoggingTest() throws Exce
assertTrue(decodedCookieValue.contains("&Culture:culture"));
assertTrue(decodedCookieValue.contains("|QueueitToken=" + queueittoken));
assertTrue(decodedCookieValue.contains("|TargetUrl=targetUrl"));
assertTrue(decodedCookieValue.contains("|RequestIP=80.35.35.34"));
assertTrue(decodedCookieValue.contains("|RequestHttpHeader_Via=1.1 example.com"));
assertTrue(decodedCookieValue.contains("|RequestHttpHeader_Forwarded=for=192.0.2.60;proto=http;by=203.0.113.43"));
assertTrue(decodedCookieValue.contains("|RequestHttpHeader_XForwardedFor=129.78.138.66, 129.78.64.103"));
assertTrue(decodedCookieValue.contains("|RequestHttpHeader_XForwardedHost=en.wikipedia.org:8080"));
assertTrue(decodedCookieValue.contains("|RequestHttpHeader_XForwardedProto=https"));
}

@Test
Expand Down Expand Up @@ -756,8 +782,14 @@ public void validateRequestByIntegrationConfigNotMatchDebugCookieLoggingTest() t

HttpServletRequestMock requestMock = new HttpServletRequestMock();
requestMock.RequestURL = "requestUrl";
requestMock.RemoteAddr = "80.35.35.34";
requestMock.Headers.put("via", "1.1 example.com");
requestMock.Headers.put("forwarded", "for=192.0.2.60;proto=http;by=203.0.113.43");
requestMock.Headers.put("x-forwarded-for", "129.78.138.66, 129.78.64.103");
requestMock.Headers.put("x-forwarded-host", "en.wikipedia.org:8080");
requestMock.Headers.put("x-forwarded-proto", "https");

HttpServletResponseMock responseMock = new HttpServletResponseMock();
HttpServletResponseMock responseMock = new HttpServletResponseMock();

// Act
String secretKey = "secretkey";
Expand All @@ -773,7 +805,12 @@ public void validateRequestByIntegrationConfigNotMatchDebugCookieLoggingTest() t
assertTrue(decodedCookieValue.contains("|PureUrl=http://test.com?event1=true"));
assertTrue(decodedCookieValue.contains("ConfigVersion=3"));
assertTrue(decodedCookieValue.contains("|QueueitToken=" + queueittoken));
assertTrue(decodedCookieValue.contains("|MatchedConfig=NULL"));
assertTrue(decodedCookieValue.contains("|RequestIP=80.35.35.34"));
assertTrue(decodedCookieValue.contains("|RequestHttpHeader_Via=1.1 example.com"));
assertTrue(decodedCookieValue.contains("|RequestHttpHeader_Forwarded=for=192.0.2.60;proto=http;by=203.0.113.43"));
assertTrue(decodedCookieValue.contains("|RequestHttpHeader_XForwardedFor=129.78.138.66, 129.78.64.103"));
assertTrue(decodedCookieValue.contains("|RequestHttpHeader_XForwardedHost=en.wikipedia.org:8080"));
assertTrue(decodedCookieValue.contains("|RequestHttpHeader_XForwardedProto=https"));
}

@Test
Expand Down Expand Up @@ -952,7 +989,13 @@ class HttpServletRequestMock implements HttpServletRequest {
public String UserAgent;
public String RequestURL;
public String QueryString;

public String RemoteAddr;
public HashMap Headers;

public HttpServletRequestMock() {
this.Headers = new HashMap();
}

@Override
public String getAuthType() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
Expand All @@ -972,7 +1015,13 @@ public long getDateHeader(String string) {
public String getHeader(String key) {
if("User-Agent".equals(key))
return this.UserAgent;
return "";

String value = (String) this.Headers.get(key);

if(value == null)
value = "";

return value;
}

@Override
Expand Down Expand Up @@ -1202,7 +1251,7 @@ public BufferedReader getReader() throws IOException {

@Override
public String getRemoteAddr() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
return RemoteAddr;
}

@Override
Expand Down

0 comments on commit 22329f0

Please sign in to comment.