/** * Constructs new SessionCookie object from the given cookie. * @param cookie The http servlet cookie. */ public SessionCookie(Cookie cookie) { this(parseCookie(cookie)); }
public UserCookie(Cookie cookie) throws Exception { parseCookie(cookie); isNewUser = false; }
private void createUserCookie(String cookieValue) throws Exception { Cookie corruptedCookie = new Cookie(UserCookie.COOKIE_NAME, cookieValue); new UserCookie(corruptedCookie); }
/** * Begin request processing. * * @param req The request to process * @param res The response to modify */ @Override public void onBeginRequest(ServletRequest req, ServletResponse res) { HttpServletRequest request = (HttpServletRequest)req; RequestTelemetryContext context = ThreadContext.getRequestTelemetryContext(); UserCookie userCookie = com.microsoft.applicationinsights.web.internal.cookies.Cookie.getCookie( UserCookie.class, request, UserCookie.COOKIE_NAME); if (userCookie == null) { return; } String userId = userCookie.getUserId(); Date acquisitionDate = userCookie.getAcquisitionDate(); context.setUserCookie(userCookie); UserContext userContext = context.getHttpRequestTelemetry().getContext().getUser(); userContext.setId(userId); userContext.setAcquisitionDate(acquisitionDate); }
@Test public void testCookieParsedSuccessfully() throws Exception { UserCookie userCookie = new UserCookie(defaultCookie); Date expectedAcquisitionTime = DateTimeUtils.parseRoundTripDateString(DateTimeUtils.formatAsRoundTripDate(acquisitionTime)); Assert.assertEquals("Wrong user ID", userId, userCookie.getUserId()); Assert.assertEquals("Wrong acquisition time", expectedAcquisitionTime, userCookie.getAcquisitionDate()); }
/** * Begin request processing. * * @param req The request to process * @param res The response to modify */ @Override public void onBeginRequest(ServletRequest req, ServletResponse res) { HttpServletRequest request = (HttpServletRequest)req; RequestTelemetryContext context = ThreadContext.getRequestTelemetryContext(); SessionCookie sessionCookie = com.microsoft.applicationinsights.web.internal.cookies.Cookie.getCookie( SessionCookie.class, request, SessionCookie.COOKIE_NAME); if (sessionCookie == null) { return; } context.setSessionCookie(sessionCookie); String sessionId = sessionCookie.getSessionId(); getTelemetrySessionContext(context).setId(sessionId); }
@Test public void testSingleCookieValue() { String formattedCookie = SessionCookie.formatCookie(new String[]{ sessionId }); SessionCookie sessionCookie = createSessionCookie(formattedCookie); Assert.assertEquals("Wrong session ID", sessionId, sessionCookie.getSessionId()); }
private void parseCookie(Cookie cookie) throws Exception { String[] split = cookie.getValue().split(RAW_COOKIE_SPLIT_DELIMITER); if (split.length < CookieFields.values().length) { // TODO: dedicated exception String errorMessage = String.format("Session cookie is not in the correct format: %s", cookie.getValue()); throw new Exception(errorMessage); } try { userId = split[CookieFields.USER_ID.getValue()]; acquisitionDate = DateTimeUtils.parseRoundTripDateString(split[CookieFields.ACQUISITION_DATE.getValue()]); } catch (Exception e) { String errorMessage = String.format("Failed to parse user cookie with exception: %s", e.toString()); // TODO: dedicated exception throw new Exception(errorMessage); } }
@Test public void testCookieParsedSuccessfully() throws Exception { SessionCookie sessionCookie = new SessionCookie(defaultCookie); Assert.assertEquals("Wrong session ID", sessionId, sessionCookie.getSessionId()); }
@Test public void testCorruptedAcquisitionDateValueThrowsExceptionOnCookieParsing() throws Exception { thrown.expect(Exception.class); String formattedCookie = UserCookie.formatCookie(new String[] { userId, "corruptedAcquisitionTime" }); createUserCookie(formattedCookie); }
@Test public void testUnexpectedCookieValuesCountThrowsException() throws Exception { thrown.expect(Exception.class); String formattedCookie = SessionCookie.formatCookie(new String[] { "singleValueCookie" }); createUserCookie(formattedCookie); }
private static CookiesContainer getCookiesContainer(List<String> responseCookies) throws Exception { CookiesContainer cookiesContainer = new CookiesContainer(); if (responseCookies == null) { return cookiesContainer; } for (String formattedCookieWithExpiration : responseCookies) { if (formattedCookieWithExpiration.startsWith("ai_user")) { String formattedCookie = formattedCookieWithExpiration.split("=")[1].split(";")[0]; Cookie cookie = new Cookie(UserCookie.COOKIE_NAME, formattedCookie); UserCookie userCookie = new UserCookie(cookie); cookiesContainer.setUserCookie(userCookie); } else if(formattedCookieWithExpiration.startsWith("ai_session")) { String formattedCookie = formattedCookieWithExpiration.split("=")[1].split(";")[0]; Cookie cookie = new Cookie(SessionCookie.COOKIE_NAME, formattedCookie); SessionCookie sessionCookie = new SessionCookie(cookie); cookiesContainer.setSessionCookie(sessionCookie); } } return cookiesContainer; } }
@BeforeClass public static void initialize() throws Exception { userId = LocalStringsUtils.generateRandomId(true); acquisitionTime = new Date(); String formattedCookie = UserCookie.formatCookie(new String[] { userId, DateTimeUtils.formatAsRoundTripDate(acquisitionTime), }); defaultCookie = new Cookie(UserCookie.COOKIE_NAME, formattedCookie); UserCookie userCookie = new UserCookie(defaultCookie); requestTelemetryContextMock = mock(RequestTelemetryContext.class); when(requestTelemetryContextMock.getUserCookie()).thenReturn(userCookie); }
@BeforeClass public static void initialize() throws Exception { sessionId = LocalStringsUtils.generateRandomId(true); String formattedCookie = SessionCookie.formatCookie(new String[] { sessionId }); defaultCookie = new Cookie(SessionCookie.COOKIE_NAME, formattedCookie); sessionContext = new SessionContext(new ConcurrentHashMap<String, String>()); sessionContext.setId(sessionId); SessionCookie sessionCookie = new SessionCookie(defaultCookie); requestTelemetryContextMock = mock(RequestTelemetryContext.class); when(requestTelemetryContextMock.getSessionCookie()).thenReturn(sessionCookie); }
private SessionCookie createSessionCookie(String cookieValue) { Cookie cookie = new Cookie(SessionCookie.COOKIE_NAME, cookieValue); return new SessionCookie(cookie); }
/** * Begin request processing. * * @param req The request to process * @param res The response to modify */ @Override public void onBeginRequest(ServletRequest req, ServletResponse res) { HttpServletRequest request = (HttpServletRequest)req; RequestTelemetryContext context = ThreadContext.getRequestTelemetryContext(); UserCookie userCookie = com.microsoft.applicationinsights.web.internal.cookies.Cookie.getCookie( UserCookie.class, request, UserCookie.COOKIE_NAME); if (userCookie == null) { return; } String userId = userCookie.getUserId(); Date acquisitionDate = userCookie.getAcquisitionDate(); context.setUserCookie(userCookie); UserContext userContext = context.getHttpRequestTelemetry().getContext().getUser(); userContext.setId(userId); userContext.setAcquisitionDate(acquisitionDate); }
/** * Begin request processing. * * @param req The request to process * @param res The response to modify */ @Override public void onBeginRequest(ServletRequest req, ServletResponse res) { HttpServletRequest request = (HttpServletRequest)req; RequestTelemetryContext context = ThreadContext.getRequestTelemetryContext(); SessionCookie sessionCookie = com.microsoft.applicationinsights.web.internal.cookies.Cookie.getCookie( SessionCookie.class, request, SessionCookie.COOKIE_NAME); if (sessionCookie == null) { return; } context.setSessionCookie(sessionCookie); String sessionId = sessionCookie.getSessionId(); getTelemetrySessionContext(context).setId(sessionId); }
private void parseCookie(Cookie cookie) throws Exception { String[] split = cookie.getValue().split(RAW_COOKIE_SPLIT_DELIMITER); if (split.length < CookieFields.values().length) { // TODO: dedicated exception String errorMessage = String.format("Session cookie is not in the correct format: %s", cookie.getValue()); throw new Exception(errorMessage); } try { userId = split[CookieFields.USER_ID.getValue()]; acquisitionDate = DateTimeUtils.parseRoundTripDateString(split[CookieFields.ACQUISITION_DATE.getValue()]); } catch (Exception e) { String errorMessage = String.format("Failed to parse user cookie with exception: %s", e.toString()); // TODO: dedicated exception throw new Exception(errorMessage); } }
/** * Constructs new SessionCookie object from the given cookie. * @param cookie The http servlet cookie. */ public SessionCookie(Cookie cookie) { this(parseCookie(cookie)); }
public UserCookie(Cookie cookie) throws Exception { parseCookie(cookie); isNewUser = false; }