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;
import java.util.Date;
/**
* Created by yonisha on 3/5/2015.
*/
public class WebUserTelemetryInitializerTests {
private static final String REQUEST_USER_ID = "Request_USER_ID";
private static Date acquisitionTime;
private WebUserTelemetryInitializer userTelemetryInitializer = new WebUserTelemetryInitializer();
@Before
public void classInitialize() {
acquisitionTime = DateTimeUtils.getDateTimeNow();
RequestTelemetryContext context = new RequestTelemetryContext(DateTimeUtils.getDateTimeNow().getTime());
ThreadContext.setRequestTelemetryContext(context);
// Set session ID for the http request.
RequestTelemetry requestTelemetry = context.getHttpRequestTelemetry();
requestTelemetry.getContext().getUser().setId(REQUEST_USER_ID);
requestTelemetry.getContext().getUser().setAcquisitionDate(acquisitionTime);
}
@Test
public void testNoUserCookie() {
RequestTelemetryContext requestTelemetryContext = ThreadContext.getRequestTelemetryContext();
requestTelemetryContext.getHttpRequestTelemetry().getContext().getUser().setAcquisitionDate(null);
requestTelemetryContext.getHttpRequestTelemetry().getContext().getUser().setId(null);
TraceTelemetry telemetry = new TraceTelemetry();
userTelemetryInitializer.onInitializeTelemetry(telemetry);
Assert.assertNull(telemetry.getContext().getUser().getId());
Assert.assertNull(telemetry.getContext().getUser().getAcquisitionDate());
}
@Test
public void testUserIdIsUpdatedFromRequest() {
TraceTelemetry telemetry = new TraceTelemetry();
userTelemetryInitializer.onInitializeTelemetry(telemetry);
Assert.assertEquals(REQUEST_USER_ID, telemetry.getContext().getUser().getId());
}
@Test
public void testUserIdNotOverriddenIfAlreadySet() {
String expectedUserId = "SOME_ID";
TraceTelemetry telemetry = new TraceTelemetry();
telemetry.getContext().getUser().setId(expectedUserId);
userTelemetryInitializer.onInitializeTelemetry(telemetry);
Assert.assertEquals(expectedUserId, telemetry.getContext().getUser().getId());
}
@Test
public void testAcquisitionDateSetWhenRequired() {
TraceTelemetry telemetry = new TraceTelemetry();
userTelemetryInitializer.onInitializeTelemetry(telemetry);
Assert.assertEquals(acquisitionTime, telemetry.getContext().getUser().getAcquisitionDate());
}
}