Esempio n. 1
0
        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);
        }
Esempio n. 2
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);
        }
Esempio n. 3
0
        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);
        }