public async void TestFirstWriteToQueueFalse() { Environment.SetEnvironmentVariable(WRITE_EVENTS_TO_QUEUE_ENVIRONMENT_VARIABLE_LOOKUP, false.ToString()); string recordData = @" { 'AWSAccountId': '236630710668', 'AgentARN': 'arn:aws:connect:us-east-1:236630710668:instance/6e3230e5-2dd2-4464-ade8-b032cdd0abef/agent/dfe8970a-ee78-4fa2-b79b-b6b3e92d35c0', 'CurrentAgentSnapshot': null, 'EventId': '8d2daa4f-a6b4-4c3c-8599-08c355a20f80', 'EventTimestamp': '2018-05-16T16:12:59.059Z', 'EventType': 'LOGIN', 'InstanceARN': 'arn:aws:connect:us-east-1:236630710668:instance/6e3230e5-2dd2-4464-ade8-b032cdd0abef', 'PreviousAgentSnapshot': null, 'Version': '2017-10-01' }"; var evnt = GenerateKinesisEvent(recordData); var context = new TestLambdaContext() { Logger = new FakeLambdaLogger() }; FakeDynamoDBContext fakeDbContext = new FakeDynamoDBContext(); FakeSQSFacade fakeSqsFacade = new FakeSQSFacade(); var function = new ProcessKinesisEvents(fakeDbContext, fakeSqsFacade); await function.AspectKinesisHandler(evnt, context); Assert.True(fakeSqsFacade.SqsQueue.Count == 0); }
public async void TestNewAgentLogIn() { Environment.SetEnvironmentVariable(WRITE_EVENTS_TO_QUEUE_ENVIRONMENT_VARIABLE_LOOKUP, true.ToString()); string recordData = @" { 'AWSAccountId': '236630710668', 'AgentARN': 'arn:aws:connect:us-east-1:236630710668:instance/6e3230e5-2dd2-4464-ade8-b032cdd0abef/agent/dfe8970a-ee78-4fa2-b79b-b6b3e92d35c0', 'CurrentAgentSnapshot': null, 'EventId': '8d2daa4f-a6b4-4c3c-8599-08c355a20f80', 'EventTimestamp': '2018-05-16T16:12:59.059Z', 'EventType': 'LOGIN', 'InstanceARN': 'arn:aws:connect:us-east-1:236630710668:instance/6e3230e5-2dd2-4464-ade8-b032cdd0abef', 'PreviousAgentSnapshot': null, 'Version': '2017-10-01' }"; ConnectKinesisEventRecord loginRecord = new ConnectKinesisEventRecord() { AgentARN = "arn:aws:connect:us-east-1:236630710668:instance/6e3230e5-2dd2-4464-ade8-b032cdd0abef/agent/dfe8970a-ee78-4fa2-b79b-b6b3e92d35c0", AgentUsername = null, CurrentState = null, LastEventTimeStamp = Convert.ToDateTime("2018-05-16T16:12:59.059"), LastStateChangeTimeStamp = null, RawAgentEventJSon = recordData }; var evnt = GenerateKinesisEvent(recordData); var context = new TestLambdaContext() { Logger = new FakeLambdaLogger() }; FakeDynamoDBContext fakeDbContext = new FakeDynamoDBContext(); FakeSQSFacade fakeSqsFacade = new FakeSQSFacade(); var function = new ProcessKinesisEvents(fakeDbContext, fakeSqsFacade); await function.AspectKinesisHandler(evnt, context); ConnectKinesisEventRecord dynamoRecord = fakeDbContext.DynamoTable[loginRecord.AgentARN]; AssertExpectedRecordAgainstDynamoRecord(loginRecord, dynamoRecord); }
public async void TestUpdatingAgentStateChange() { Environment.SetEnvironmentVariable(WRITE_EVENTS_TO_QUEUE_ENVIRONMENT_VARIABLE_LOOKUP, true.ToString()); string recordData = @" { 'AWSAccountId': '236630710668', 'AgentARN': 'arn:aws:connect:us-east-1:236630710668:instance/6e3230e5-2dd2-4464-ade8-b032cdd0abef/agent/dfe8970a-ee78-4fa2-b79b-b6b3e92d35c0', 'CurrentAgentSnapshot': { 'AgentStatus': { 'ARN': 'arn:aws:connect:us-east-1:236630710668:instance/6e3230e5-2dd2-4464-ade8-b032cdd0abef/agent-state/24728943-1643-4181-9844-6aec6e981563', 'Name': 'Available', 'StartTimestamp': '2018-05-16T16:23:19.019Z' }, 'Configuration': { 'AgentHierarchyGroups': null, 'FirstName': 'Christy', 'LastName': 'Burkholder', 'RoutingProfile': { 'ARN': 'arn:aws:connect:us-east-1:236630710668:instance/6e3230e5-2dd2-4464-ade8-b032cdd0abef/routing-profile/12d022b9-6480-4fd4-b5b9-ca72bc66e8a1', 'DefaultOutboundQueue': { 'ARN': 'arn:aws:connect:us-east-1:236630710668:instance/6e3230e5-2dd2-4464-ade8-b032cdd0abef/queue/c5407123-79de-4df1-8afd-fb74a5df5162', 'Name': 'BasicQueue' }, 'InboundQueues': [ { 'ARN': 'arn:aws:connect:us-east-1:236630710668:instance/6e3230e5-2dd2-4464-ade8-b032cdd0abef/queue/c5407123-79de-4df1-8afd-fb74a5df5162', 'Name': 'BasicQueue' } ], 'Name': 'Basic Routing Profile' }, 'Username': '******' }, 'Contacts': [] }, 'EventId': '7315b213-f9c3-4362-b2d6-e26c79dbd3ea', 'EventTimestamp': '2018-05-16T16:23:19.019Z', 'EventType': 'STATE_CHANGE', 'InstanceARN': 'arn:aws:connect:us-east-1:236630710668:instance/6e3230e5-2dd2-4464-ade8-b032cdd0abef', 'PreviousAgentSnapshot': null, 'Version': '2017-10-01' }"; ConnectKinesisEventRecord loginRecord = new ConnectKinesisEventRecord() { AgentARN = "arn:aws:connect:us-east-1:236630710668:instance/6e3230e5-2dd2-4464-ade8-b032cdd0abef/agent/dfe8970a-ee78-4fa2-b79b-b6b3e92d35c0", AgentUsername = null, CurrentState = null, LastEventTimeStamp = Convert.ToDateTime("2018-05-16T16:12:59.059"), LastStateChangeTimeStamp = null, RawAgentEventJSon = recordData }; ConnectKinesisEventRecord stateChangeAvailableRecord = new ConnectKinesisEventRecord() { AgentARN = "arn:aws:connect:us-east-1:236630710668:instance/6e3230e5-2dd2-4464-ade8-b032cdd0abef/agent/dfe8970a-ee78-4fa2-b79b-b6b3e92d35c0", AgentUsername = "******", CurrentState = "Available", LastEventTimeStamp = Convert.ToDateTime("2018-05-16T16:23:19.019"), LastStateChangeTimeStamp = Convert.ToDateTime("2018-05-16T16:23:19.019"), RawAgentEventJSon = recordData }; var evnt = GenerateKinesisEvent(recordData); var context = new TestLambdaContext() { Logger = new FakeLambdaLogger() }; FakeDynamoDBContext fakeDbContext = new FakeDynamoDBContext(); FakeSQSFacade fakeSqsFacade = new FakeSQSFacade(); await fakeDbContext.SaveAsync(loginRecord); var function = new ProcessKinesisEvents(fakeDbContext, fakeSqsFacade); await function.AspectKinesisHandler(evnt, context); ConnectKinesisEventRecord dynamoRecord = fakeDbContext.DynamoTable[stateChangeAvailableRecord.AgentARN]; AssertExpectedRecordAgainstDynamoRecord(stateChangeAvailableRecord, dynamoRecord); }