package com.microsoft.applicationinsights.web.extensibility.initializers; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import com.microsoft.applicationinsights.internal.util.DateTimeUtils; import com.microsoft.applicationinsights.telemetry.RequestTelemetry; import com.microsoft.applicationinsights.telemetry.TraceTelemetry; import com.microsoft.applicationinsights.web.internal.RequestTelemetryContext; import com.microsoft.applicationinsights.web.internal.ThreadContext; /** * Created by yonisha on 3/5/2015. */ public class WebSessionTelemetryInitializerTests { private static final String REQUEST_SESSION_ID = "Request_Session_ID"; private WebSessionTelemetryInitializer sessionTelemetryInitializer = new WebSessionTelemetryInitializer(); @Before public void classInitialize() { RequestTelemetryContext context = new RequestTelemetryContext(DateTimeUtils.getDateTimeNow().getTime()); ThreadContext.setRequestTelemetryContext(context); // Set session ID for the http request. RequestTelemetry requestTelemetry = context.getHttpRequestTelemetry(); requestTelemetry.getContext().getSession().setId(REQUEST_SESSION_ID); requestTelemetry.getContext().getSession().setIsFirst(true); } @Test public void testNoSessionCookieWithIsFirstAsFalse() { testNoSessionCookie(false); } @Test public void testNoSessionCookieWithIsFirstAsNull() { testNoSessionCookie(null); } @Test public void testSessionIdIsUpdatedFromRequest() { TraceTelemetry telemetry = new TraceTelemetry(); sessionTelemetryInitializer.onInitializeTelemetry(telemetry); Assert.assertEquals(REQUEST_SESSION_ID, telemetry.getContext().getSession().getId()); } @Test public void testSessionIdNotOverriddenIfAlreadySet() { String expectedSessionId = "SOME_ID"; TraceTelemetry telemetry = new TraceTelemetry(); telemetry.getContext().getSession().setId(expectedSessionId); sessionTelemetryInitializer.onInitializeTelemetry(telemetry); Assert.assertEquals(expectedSessionId, telemetry.getContext().getSession().getId()); } @Test public void testIsFirstSessionSetWhenRequired() { TraceTelemetry telemetry = new TraceTelemetry(); sessionTelemetryInitializer.onInitializeTelemetry(telemetry); Assert.assertEquals("First session expected.", true, telemetry.getContext().getSession().getIsFirst()); } private void testNoSessionCookie(Boolean isFirstValue) { RequestTelemetryContext requestTelemetryContext = ThreadContext.getRequestTelemetryContext(); requestTelemetryContext.getHttpRequestTelemetry().getContext().getSession().setIsFirst(isFirstValue); requestTelemetryContext.getHttpRequestTelemetry().getContext().getSession().setId(null); TraceTelemetry telemetry = new TraceTelemetry(); sessionTelemetryInitializer.onInitializeTelemetry(telemetry); Assert.assertNull(telemetry.getContext().getSession().getId()); Assert.assertFalse(telemetry.getContext().getSession().getIsFirst()); } }